标签:浏览器 请求 Servlet 基本原理 组件 servlet 数据包
servlet是Sun公司制定的一种用于扩展web服务器功能的组件规范:是运行在服务器端的应用程序,服务于HTTP下,负责客户端和服务器端的应用处理。这里我需要介绍两个概念,容器和组件。首先我先来介绍什么是组件:组件就是符合规范的,实现特定功能,并且可以部署在容器上的软件模块,简单的说我们写的servlet就是组件。有了组件之后我再来介绍什么是容器:容器就是符合规范,为组件提供运行环境,并且管理组件生命周期的软件程序,常见到的有tomcat,webLogic。
开发一个Servlet:
我们可以通过3种方式创建一个Servlet。1.实现Servlet接口、2.继承抽象类GenericServlet、3.继承类HttpServlet。由于我们平时开发的web程序都是基于HTTP的所以我们在编写Servlet是一般都是去继承HttpServlet,重写里面的方法。在创建一个Servlet后我们需要把我们写好的Servlet配置在web.xml中。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <display-name>Archetype Created Web Application</display-name> <servlet> <servlet-name>testServlet</servlet-name> <servlet-class>example.servlet.TestServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>testServlet</servlet-name> <url-pattern>/test</url-pattern> </servlet-mapping> </web-app>
之后我们把整个工程进行编译,部署到tomcat目录下进行发布,启动tomcat,访问Servlet,只需要在浏览器中输入http://ip:port/appname/web.xml中对应servlet的url-pattern的配置即可。
Servlet Web应用的流程
当用户想浏览器输入访问servlet的地址时:1.首先浏览器通过ip:port连接服务器,这时浏览器将请求的数据按照HTTP协议的标准封装成了一个数据包并发送给了服务器(tcp三次协议握手)。2.服务器(tomcat)创建两个对象:请求对象和响应对象。服务器在解析请求数据包后会将请求的数据放到请求对象中去,方便我们在servlet中使用。(注意:Servlet不会解析请求,这一步交给容器来做的。)这里的请求和响应的对象实际上就是HttpServletRequest和HttpServletResponse接口所对应的实现类。3.根据请求的资源路径找到相应的servlet配置,通过反射创建一个servlet的实例,并调用service()方法,并将之前创建好的请求和响应的对象作为参数传递给service方法。4.在servlet中编写我们自己的业务逻辑,并通过response设置响应给浏览器的数据。(需要我们自己开发)5.服务器从Response中获取到我们写的响应数据,把他们根据HTTP协议封装成一个数据包(响应的数据包)发送给浏览器,关闭连接(tcp四次挥手断开)(6)浏览器解析响应的数据包,取出数据,渲染页面。在整个的流程中我们只需要编写过程4中的servlet的业务逻辑,其他的都由tomcat容器和浏览器封装。
标签:浏览器,请求,Servlet,基本原理,组件,servlet,数据包 来源: https://www.cnblogs.com/suyang-java/p/11183699.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。