对Servlet及tomcat关系的理解,以及Action与servletAPI的关系,以及httpServletRequest

看struts2权威指南时,遇到struts与servlet API的调用。不怎么理解,与同事讨论了一下。更迷惑了,研究了一阵子,原来自己对Servlet根本就不怎么明白。几经周折,终于柳暗花明了。。把学习成果展现一下:

 

1.首先说Servlet API:servlet的命名:server+applet

Servlet的框架是由两个Java包组成的:javax.servlet与javax.servlet.http。

在javax.servlet包中定义了所有的Servlet类都必须实现或者扩展的通用接口和类。

在javax.servlet.http包中定义了采用Http协议通信的HttpServlet类。

也就是说,二者有一定的独立性。开始我始终认为,HttpServletRequest是servlet产生的,但我的项目中没有用到servlet,又哪来的这个对象呢?当知道二者的独立性时,就有

点明了了。

 

2.关于Tomcat:

它实现了servlet API.也就是说,它的内部,定义了servlet中接口的实现类,并且在它运行时,将一些实现类自动地实例化。

Tomcat 是Web应用服务器,是一个Servlet/JSP容器.Tomcat 作为Servlet容器,负责处理客户请求,把请求传送给Servlet,并将Servlet的响应传送回给客户.而Servlet是一种运行在支持Java语言的服务器上的组件. Servlet最常见的用途是扩展Java Web服务器功能,提供非常安全的,可移植的,易于使用的CGI替代品. 它的处理流程如下:

1、Web客户向Servlet容器(Tomcat)发出Http请求

2、Servlet容器分析客户的请求信息

3、Servlet容器创建一个HttpRequest对象,将客户请求的信息封装到这个对象中

4、Servlet容器创建一个HttpResponse对象 


5、Servlet容器调用HttpServlet对象的service方法,把HttpRequest对象与HttpResponse对象作为参数

  传给 HttpServlet对象

6、HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息

7、HttpServlet调用HttpResponse对象的有关方法,生成响应数据

8、Servlet容器把HttpServlet的响应结果传给Web客户

 

看到这个流程了,自然也就知道,虽然我的Struts2中没有用到servlet,但是由于前四步中,已经产生了HttpServletRequest和response对象,所以,Struts2可以使用了。

 

对于整体的理解就是这样了,至于业务逻辑的实现,就是既可以用servlet来实现处理,跳转,也可以用sturts2的过滤器来来完成。

一个容器中有多个servlet,只不过是每一个servlet都是单例模式, 并且通过多线程,来处理多个用户的响应。

你可能感兴趣的:(对Servlet及tomcat关系的理解,以及Action与servletAPI的关系,以及httpServletRequest)