servlet的基本原理
Posted suyang-java
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的基本原理的主要内容,如果未能解决你的问题,请参考以下文章