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的基本原理的主要内容,如果未能解决你的问题,请参考以下文章

servlet的基本原理

struts1--Servlet讲解MVC框架基本原理

JSP+Servlet演示Struts的基本原理

jsp,servlet的基本原理和作用

BeanUtils基本使用方法与原理

分析Servlet运行原理