码迷,mamicode.com
首页 > 编程语言 > 详细

JavaWeb学习—Servlet

时间:2016-05-17 11:17:23      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:

1.什么是Servlet

  • Servlet是一个继承HttpServlet类的Java类
  • Servlet必须部署在web服务器端,用来处理客户端的请求

2.Servlet运行过程

技术分享

  1. Web Client 向Servlet容器(Tomcat)发出Http请求
  2. Servlet容器接收Web Client的请求
  3. Servlet容器创建一个HttpRequest对象,将Web Client请求的信息封装到这个对象中。
  4. Servlet容器创建一个HttpResponse对象
  5. Servlet容器调用HttpServlet对象的service方法,把HttpRequest对象与HttpResponse对象作为参数传给 HttpServlet 对象。
  6. HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息。(Servlet的service方法中)
  7. HttpServlet调用HttpResponse对象的有关方法,生成响应数据。(Servlet的service方法中)
  8. Servlet容器把HttpServlet的响应结果传给Web Client。

  如果想要分别相应客户端的GET和POST请求,需要重写HttpServlet对象的doGet和doPost方法,如果所有请求的相应都是一样的,则只需要重写service方法即可。

3.Servlet的创建

  创建Servlet实例有两个时机:

  • 客户端第一次请求某个Servlet时,容器创建该Servlet实例(大部分Servlet都是以这种方式创建)。
  • Web应用启动时立即创建Servlet实例,即load-on-startup Servlet。

  关于load-on-startup参数:

  • load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。
  • 它的值必须是一个整数,表示servlet应该被载入的顺序
  • 当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;
  • 当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。
  • 正数的值越小,该servlet的优先级越高,应用启动时就越先加载。
  • 当值相同时,容器就会自己选择顺序来加载。

4.Servlet的生命周期

  • 实例化:容器创建Servlet对象
  • 初始化:调用Servlet的init()方法
  • 服务:调用Servlet实例的service()方法来处理请求
  • 销毁:容器删除Servlet实例(调用Servlet实例的destroy()方法)

5.Servlet的配置  

  为了让Servlet响应客户端的请求,还必须将Servlet配置在web应用中,配置Servlet时,需要修改web.xml文件。

  <servlet>    
    <servlet-name>ServletDemo</servlet-name>
    <servlet-class>cn.dragon.servlet.ServletDemo</servlet-class>
  </servlet>

 <servlet-mapping>
    <servlet-name>ServletDemo</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>

  其中servlet-name属性的值必须一致才能保证响应客户端请求。

6.Servlet与JSP

  JSP的本质就是Servlet,我们将编写好的JSP文件部署在web容器中之后,web容器会将JSP编译成对应的Servlet。

  如果Servlet要生成表现层页面时,所有的HTML标签都需要使用Servlet的输出流来输出,繁琐且不利于美工人员修改。

  在标准的MVC模式中,Servlet仅作为控制器使用,而JSP仅作为表现层技术使用:

  • M:Model,即模型,对应JavaBean。
  • V:View,即视图,对应JSP。
  • C:Controller,即控制器,对应Servlet。

 

参考:

http://www.cnblogs.com/xdp-gacl/p/3760336.html

http://www.cnblogs.com/xuekyo/archive/2013/02/24/2924072.html

http://www.cnblogs.com/goody9807/archive/2007/06/13/782519.html

http://www.blogjava.net/xzclog/archive/2011/09/29/359789.html

 

转载请注明出处

JavaWeb学习—Servlet

标签:

原文地址:http://www.cnblogs.com/Jason-Xiang/p/5498996.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!