学习Java很久了,但是一直没怎么弄清楚过service和servlet的区别,下午找了同学聊了聊才发现,一直以来的理解都有错误,下面就为大家好好理清一下他们的关系。
一、service
我们一般理解的 service 其实是Spring MVC的 service 层,业务层(service)需要根据系统的实际业务需求进行逻辑代码的编写,有些业务逻辑需要通过与数据库交互的,则业务逻辑层需要调用数据访问层的相关方法实现与数据库的交互,对于一些不需要与数据库进行交互的,则直接编写业务代码,将执行结果反馈给控制层即可;
Service层主要负责业务模块的逻辑应用设计。同样是首先设计接口,再设计其实现的类,接着再Spring的配置文件中配置其实现的关联。这样我们就可以在应用中调用Service接口来进行业务处理。Service层的业务实现,具体要调用到已定义的DAO层的接口,封装Service层的业务逻辑有利于通用的业务逻辑的独立性和重复利用性,程序显得非常简洁。
二、servlet
servlet 是运行在 Web 服务器的小型 Java 程序(即:服务器端的小应用程序)。servlet 通常通过 HTTP (超文本传输协议) 接收和响应来自 Web 客户端的请求。用Java编写的服务端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。
servlet 实现过程
- 客户端发送请求至服务器端;
- 服务器将请求信息发送至 Servlet;
- Servlet 生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求;
- 服务器将响应返回给客户端。
servlet 生命周期
- 客户端请求该 Servlet;
- 加载 Servlet 类到内存;
- 实例化并调用init()方法初始化该 Servlet;
- service()(根据请求方法不同调用doGet() 或者 doPost(),此外还有doHead()、doPut()、doTrace()、doDelete()、doOptions()、destroy())。
- 加载和实例化 Servlet。这项操作一般是动态执行的。然而,Server 通常会提供一个管理的选项,用于在 Server 启动时强制装载和初始化特定的 Servlet。
三、WebService
一句话概括什么是WebService
WebService是一种跨编程语言、跨操作系统平台的远程调用技术。
它是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。
WebService
技术,能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件,就可相互交换数据或集成。
依据WebService
规范实施的应用之间,无论它们所使用的语言、平台或内部协议是什么,都可以相互交换数据。
WebService
就是一个应用程序向外界暴露出一个能通过Web
进行调用的API
,也就是说能用编程的方法通过Web
来调用这个应用程序。
WebService
采用HTTP
协议传输数据,采用XML
格式封装数据(即XML
中说明调用远程服务对象的哪个方法,传递的参数是什么,以及服务对象的返回结果是什么)。
四、三者之间的关系
service 在我的理解中其实就是简单MVC中的开发层次的概念
而 servlet 是 Java 对于 Web 开发而产生的一项技术,可以说 Servlet 技术是 Java 专有的,它是服务器端的技术,客户端通常是浏览器。
WebService 可以说是
servlet 2.0 升级版,WebService最早是微软提出了一种以XML为载体网络信息传输的规范,现在几乎所有的语言与平台都支持,带有状态机制,不依赖于容器,可以发送一个xml作为其请求内容。WebService通常是基于http的远程方法调用(RMI),号称是可以反回远程对象,一般来说客户段可以象调用本地方法一样调用WebService的方法。