对Servlet及tomcat关系的理解,以及Action与servletAPI的关系,以及httpServletRequest
2014-03-11 22:13
169 查看
看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都是单例模式, 并且通过多线程,来处理多个用户的响应。
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都是单例模式, 并且通过多线程,来处理多个用户的响应。
相关文章推荐
- 警告:[ shutdown of previous Apache run?warn] pid file /sonicom/apache2/logs/httpd.pid overwritten -- U
- 网络通信
- UNIX网络编程读书笔记:名字与地址转换
- (work and tools)tcpdump的用法
- Linux之TQ2440通过nfs挂载根文件系统 本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/20
- 【网络流】CEOI2009 all
- 判断网络环境(3G/WIFI)
- mini2440 tiny6410开发板网络设置(永久改变,重启后不恢复)
- CentOS系统下双网络IP信息的配置
- http://www.regular-expressions.info/gnu.html
- AsyncHttpClient 帮助文档 (非常有用哦)
- 《转》一篇故事讲述了计算机网络里的基本概念:网关,DHCP,IP寻址,ARP欺骗,路由,DDOS等...
- 贝叶斯网络应用实例一:胸部疾病诊所
- HttpSession的简单使用
- Linux网络编程之套接字基础
- 网络131 陈镜宇 第二周作业
- 关于 Java 中 finally 语句块的深度辨析(http://www.ibm.com/developerworks/cn/java/j-lo-finally/)
- Linux Mint + Nginx 1.5.11搭建SSL/HTTPS/SPDY服务器
- Linux Tomcat Https 访问配置!
- Asp.Net 中使用HttpModule 做Session验证