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都是单例模式, 并且通过多线程,来处理多个用户的响应。