关于http在servlet以及jsp中的一些理解

来源:互联网 发布:淘宝客服物流用语 编辑:程序博客网 时间:2024/06/03 18:56

首先,谈一谈http的流程

浏览器发送http请求到服务器,服务器经过处理返回http响应到浏览器,浏览器解析网页显示到屏幕

http请求报文

GET /login.jsp HTTP/1.1Accept:image/gif.image/jpeg,*/*Accept-Language:zh-cnConnection:Keep-AliveHost:localhostUser-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)Accept-Encoding:gzip,deflate username=aa&password=123456
请求方法:GET    :对应HttpServlet中的doGet方法

还有其他的请求方法:POST,PUT,HEAD等,其中POST请求对应HttpServlet中的doPost方法

URI:/login.jsp

版本协议:HTTP/1.1

最后一行为请求的正文,其他的请求头信息

下图片来源:http://blog.csdn.net/a19881029/article/details/14002273


http响应报文

HTTP/1.1 200 OKServer:Apache Tomcat/5.0.12Date:Mon,6Oct2003 13:23:42 GMTContent-Length:112
状态码:200

状态信息:OK

其他为响应头

然后谈一谈servlet

先说一下servlet生命周期中比较重要的方法   

init方法:初始化servlet中的参数(在web.xml配置)

service方法:响应客户请求,执行servlet的逻辑代码,在HttpServlet中可以理解为进行方法的转向,通过请求方法是GET还是POST来判断使用doGet还是doPost方法来执行响应请求服务的逻辑代码。

参考:http://blog.csdn.net/truong/article/details/17038687

destory方法:当服务器不再需要使用servlet实例或者重新装入时,调用该方法,会释放掉所有在inti方法申请的资源

图片来源:http://www.cnblogs.com/fifiyong/p/6390805.html


关于jsp

早期程序员是没有jsp的,只有servlet进行开发

通过http响应对象HttpServletResponse 的write方法写入响应来进行网页的开发,比较麻烦

所以,jsp的原理也是基于servlet。

在tomcat中又一个work文件目录中,打开对应项目可以看到


这就是访问jsp,会对jsp进行解析,自动创建一个java类,更准确的来说是一个servlet类,

然后进行编译为class保存在同级目录

其中也有一个servlet方法,即访问jsp时执行的响应请求的代码


该_jspService方法中的部分内容


将jsp脚本(表达式)中的java信息并入html一起写入响应

可见jsp的原理也是基于servlet中的HttpServletResponse对象的write方法进行响应的

完整流程

1.浏览器发送请求到服务器

2.服务器解析http请求,封装请求并且生成HttpServletRequest对象,并且可以通过HttpServletRequest对象一些列get方法可以得到URI,请求头等信息

3.创建一个HttpServletResponse对象,用于返回响应对象

4.这通过web.xml的映射访问对应的servlet的service方法。查看是否创建servlet(单例)实例,如果没有创建则创建该容器,并且调用init方法进行初始化,如果已经创建好则进行service调用

4.1如果访问的是jsp文件,对jsp进行进行解析为servlet的java文件,然后编译为class文件,重复4

4.2.servlet转发到servlet,即传递HttpServletRequest和HttpServletResponse

4.3..servlet转发到jsp,传递HttpServletRequest和HttpServletResponse,重复4.1

(重定向根据特性,类似)

5.结束后自动生成报文,返回一个响应给浏览器


本人菜鸟一枚,如有错误,欢迎指出





原创粉丝点击