Servlet请求和响应

时间:2020-12-22 21:04:14

 一、写在前面的话

  今天是2016年8月4日,距离我到这个新公司正好一个月,虽说是新公司,10个人的项目组9个我都认识。环境上和沟通上都没有什么问题,最重要的问题是技术上的,做了将近三年的.net现在要转向做java了,这一个月真是煎熬啊,离开老东家前每天在公司偷偷的花了一些时间熟悉了一下java语法,进组第一天简单布置了一下位置和熟悉新公司的环境,第二天申请了SVN权限,下载了代码并把环境配置了一下,第三天让项目组长分配了几个简单的bug改了下,其实就java和C#而言两者的语法还是蛮像的,JAVA中的SSM和之前做ASP.NET MVC中使用的Ninject、Dapper啥的思想上也都差不多,这些都不是让我烦的事情(当然深入研究肯定会发现不一样的东西,就实现业务逻辑区别不大),让我受不了的是IDE呀,不知道.NETer在用IDEA或者Eclipse时候有没有感觉不适应啊,反正我是超不适应。

  不久前公司来了一些实习生,老板让我们这些工作几年的人带带他们,看着这些孩子天真且乐于学习,想起了三年前毕业时候的自己,每次他们问我java问题的时候,真的不好意思啊,扯来扯去总是扯到.net上(囧),所以呢为了不给新人带跑偏了,我觉得我有必要把Java好好的学习下。于是给自己定了一个100天的计划(其实早就有这个计划了),就像当年高考一样,突击一下。至少在人家实习这个阶段结合自己以前工作的经验传授一些有用的东西吧,不误人子弟也算是对自己负责。

     100天貌似社会上很多培训班都能出师了吧,我这个人比较笨,估计能把Servlet、JSP弄明白就行了(主要是怕实现不了)。每天下班看一点,总结几个问题,就以这样的方式来学习,估计100天也能有不少收获,嘿嘿~,想想还有点小激动呢!

二、正文

1.Servlet请求和响应

   ①web容器概念:顾名思义就像一个盒子,里面可以装东西,这里的web容器(Tomcat,WebLogic,WebSphere)就是装载Servlet和JSP的环境、负责管理它们的各种对象,并且负责它们的生命周期以及相关服务的链接。

 

   ②从浏览器请求到服务器响应

  Servlet请求和响应

  I.客户端对Web服务器发出HTTP请求

  II.HTTP服务器(Apache)收到HTTP请求以后,转发给Web容器(Tomcat),此时Web容器会解析HTTP请求的内容,创建各种对象(例如HttpServletRequest、HttpServletResponse、HttpSession等)

  III.web容器通过请求的URL来选择需要用哪个Servlet来处理请求(这个就是web.xml中配置的或者@webServlet注解的作用了)

    IV.Servlet根据请求对象(HttpServletRequest)来决定做什么样的处理,然后通过响应对象(HttpServletResponse)来创建响应。

      V.Web服务器将响应回传到客户端。

  

     ③web容器接收了Http请求做了什么事情?

  以下这张时序图,很好的说明了web容器都干了啥。

   Servlet请求和响应

   I.Web容器接收到web服务器发来的HTTP请求,就会先创建两个对象,HttpServletRequest对象以及HttpServletResponse对象,将请求信息设置给HttpServletRequest,HttpServletResponse对象后面响应会用到

  II.接着Web容器会读取Web.xml或者@WebServlet的设置,选择处理该请求的Servlet类,调用service()方法,将I创建的两个对象作为它的参数,service()方法会根据请求的方式(GET、POST)来选择调用doXXX()方法,这里使用的是Get方式。

  III.这里在doGet()方法内分别调用的getParameter()方法取得请求的参数、setContentType()设置内容类型以及getWriter()方法,它会返回一个PrintWriter对象,向请求方输出显示字符串。

  V.因为Http是无状态的协议,所以用完之后就销毁了上面创建的两个对象。

  这里请求响应对象的创建到销毁涉及到了,Servlet的生命周期,可以参考这篇文章http://www.cnblogs.com/xuekyo/archive/2013/02/24/2924072.html

 

因为内容都是整理了别人的智慧结晶,所以可能后续的文章就不会更新在首页了,准备认真去代码的搬运工~

参考资料:《JSP&Servlet学习笔记》