学习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 实现过程

  1. 客户端发送请求至服务器端;
  2. 服务器将请求信息发送至 Servlet;
  3. Servlet 生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求;
  4. 服务器将响应返回给客户端。

servlet 生命周期

  1. 客户端请求该 Servlet;
  2. 加载 Servlet 类到内存;
  3. 实例化并调用init()方法初始化该 Servlet;
  4. service()(根据请求方法不同调用doGet() 或者 doPost(),此外还有doHead()、doPut()、doTrace()、doDelete()、doOptions()、destroy())。
  5. 加载和实例化 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的方法。

service、servlet和WebService三者之间的关系相关推荐

  1. servlet向ajax传递数据库,一、JSP、servlet、SQL三者之间的数据传递(前台与后台数据交互)...

    背景: 目前业界很流行的MVC(model-view-control)开发模式,理解为 模型是Bean, 视图是 Html/Jsp, 控制是Servlet, 关联数据库的Dao web的运行机制: 数 ...

  2. PHP-FPM,Nginx,FastCGI 三者之间的关系

    2019独角兽企业重金招聘Python工程师标准>>> 本文介绍 PHP-FPM,Nginx,FastCGI 三者之间的关系,以及 Nginx 反向代理和负载均衡的配置. PHP-F ...

  3. python和pycharm之间的关系_浅析python,PyCharm,Anaconda三者之间的关系

    一.它们是什么? 1.python Python是一种跨平台的计算机程序设计语言,简单来说,python就是类似于C,Java,C++等,一种编程语言. 2.Anaconda Anaconda指的是一 ...

  4. anaconda中的python如何进行关联分析_浅析python,PyCharm,Anaconda三者之间的关系

    一.它们是什么? Python是一种跨平台的计算机程序设计语言,简单来说,python就是类似于C,Java,C++等,一种编程语言. 2.Anaconda Anaconda指的是一个开源的Pytho ...

  5. 浅谈javascript中原型(prototype)、构造函数、对象实例及三者之间的关系

    转自:http://www.cnblogs.com/zhangwei412827/archive/2012/12/14/2816263.html 浅谈javascript中原型(prototype). ...

  6. 构造函数,对象原型,实例对象三者之间的关系

    撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 1.构造函数,原型对象,实例对象三者之间的关系 每创建一个函数,该函数都会自动带有一个prototype属性.该 ...

  7. 一次性掌握JDK、JRE、JVM的概念以及三者之间的关系【2021整理】

    一.JDK.JRE.JVM概念解析 JDK(Java Development Kit):Java开发工具包,开发人员用来构建Java应用程序的软件包. JRE(Java Runtime Environ ...

  8. Firewalld,iptables概述(netfilter和Firewalld,iptables三者之间的关系,四表五链,Firewalld防火墙的配置方发,SNAT,DNAT了解)

    文章目录 Firewalld,iptables概述 Firewalld了解 iptables了解 Firewalld和iptables的关系 netfilter Firewalld.iptables ...

  9. java map与set的区别_java 集合(list,set,map)三者之间的关系和区别

    原 java 集合(list,set,map)三者之间的关系和区别 一:先上一张关系图,让大家看的更明白. 备注:其中红色部分为实现,其他地方均为接口. 二:各自的特点. List 有序,可重复Arr ...

最新文章

  1. byfen网java_Java企业级分布式架构师第10期2020年-开课吧全套
  2. php 管理服务器内存,解决PHP-FPM进程导致的服务器内存占用
  3. 排序_简单排序_选择排序
  4. ABAP实例:如何设计和使用自定义的权限对象
  5. npm vue安装教程
  6. 购买二手房时 众多购房者忽视办理土地证过户
  7. Django 学习第九天——请求与响应
  8. 【一天一个C++小知识】010.malloc/free和new/delete
  9. fastdfs 集群 java,第四套:FastDFS 分布式文件系统集群与应用(视频)
  10. Unity中加载本地图片
  11. 路由控制配置network命令解析
  12. 低分辨率和畸变严重的棋盘格角点的自动检测
  13. Computer:字符编码(ASCII编码/GBK编码/BASE64编码/UTF-8编码)的简介、案例应用(python中的编码格式及常见编码问题详解)之详细攻略
  14. 第二章____一元函数微分学
  15. JAVA毕业设计Vue网上书籍购买商城登录计算机源码+lw文档+系统+调试部署+数据库
  16. Web安全—安全事件的分析思路详解(安全设备)
  17. 实战智能推荐系统(14)-- 推荐系统架构
  18. Xilinx zynq系列pcie xdma通信(一):下位机PL端
  19. TheBrain8破解方式
  20. 如何将docm格式转换成word的介绍

热门文章

  1. 反锐化掩膜_图像反锐化掩膜算法研究解析.doc
  2. Sportradar宣布与加拿大退休金计划投资委员会和TCV建立新的战略合作伙伴关系
  3. 雷军:钱漫金山 我们终于走出了盐碱地
  4. matlab如何导入txt和excel文件
  5. 用 CSS 从零写一个时间轴效果
  6. 使用matlab实现ISD悬架离散仿真分析
  7. 大数据存储技术期末复习
  8. 编写HTML的一些小技巧(针对IE)
  9. [Java安全]—动态加载字节码文件
  10. 北京理工大学计算机实验一报告,北京理工大学计算机实验一报告表