#笔记#圣思园 JavaWeb 第29讲——Servlet

原创 2015年07月09日 14:55:09

1.Servlet功能

(1)简介

JavaServlet是与平台无关的服务器端组件,运行在Servlet容器中

Servlet容器负责Servlet和客户的通信以及调用Servlet的方法

Servlet和客户的通信采用“请求/相应”模式

(2)功能

——创建并返回基于客户请求的动态HTML页面

——创建可嵌入到现有HTML页面中的部分HTML页面

——与其他服务器资源(数据库、基于Java的应用程序)进行通信

2.Servlet生命周期

Servlet框架的核心是:javax.servlet.Servlet接口。所有的Servlet都必须实现这一接口

Servlet接口中定义了五个方法,其中三个方法代表了Servlet生命周期

——init方法:初始化Servlet对象

——service方法:响应客户请求

——destroy方法:当Servlet对象退出生命周期时,负责释放占用的资源


Servlet生命周期分为三个阶段

——初始化阶段

——响应客户请求阶段

——终止阶段


(1)初始化阶段

下列时刻,Servlet容器装载Servlet

——Servlet容器启动时,自动装载某些Servlet

——Servlet容器启动后,客户首次向Servlet发出请求

——Servlet类文件被更新后,重新装载Servlet

Servlet装载后,Servlet容器创建一个Servlet实例,并且调用Servlet的init()方法,进行初始化。

在Servlet生命周期中,init方法只会被调用一次

程序示例:InitServlet.java

在web.xml文件中配置,可以使Servlet容器启动时,自动装载Servlet

启动服务器的时候,自动打印“init invoked”

(2)响应客户请求阶段

对于到达Servlet容器的客户请求,Servlet容器创建特定于这个请求的ServletRequest对象和ServletResponse对象,然后调用Servlet的service方法

service方法从ServletRequest对象获得客户请求信息、处理该请求,并通过ServletResponse对象向客户返回响应结果

(3)Servlet终止阶段

当Web应用被终止、或Servlet容器终止运行(一个容器可以管理多个web应用)、或Servlet容器重新装载Servlet的新实例时,Servlet容器会先调用Servlet的destroy方法。在destroy方法中,可以释放Servlet所占用的资源



service方法程序示例:ServiceServlet.java,通过地址栏方式传递参数,通过地址栏方式向服务器发送请求时,这个请求一定是GET请求

当既有service方法、又有doGet方法时,程序实例和执行结果如下。此时doGet方法不执行了

分析service方法和doGet方法的关系:

HttpServlet类:提供一个抽象类,这个抽象类应该被继承,用来创建适合web的HTTP servlet。一个HttpServlet的子类,至少要重写以下的一个方法:

doGet,doPost,doPut,doDelete,init,destroy,getServletInfo

并不需要重写service方法,service方法将请求派发到每一个上述的doXXX方法

HttpServlet继承GenericServlet

总结:

(1)每一个Servlet都必须实现Servlet接口

GenericServlet是一个通用的、不特定于任何协议的Servlet,它实现了Servlet接口

HttpServlet继承于GenericServlet,因此HttpServlet也实现了Servlet接口,所以我们定义的Servlet只需要集成HttpServlet父类即可

(2)Servlet接口中定义了service方法,HttpServlet对该方法进行了实现,实现方式就是将ServletRequest与ServletResponse转换为HttpServletRequest与HttpServletResponse。

request =(HttpServletRequest)req;

response=(HttpServletResponse)res;

service(request,response);

转换完毕后,会调用HttpServlet类中,自己定义的service方法:

protected void service(HttpServletRequest req,HttpServletResponse resp)throwsServletException,IOException

在该service方法中,首先获得请求的方法名,然后根据方法名,调用对应的doXXX方法,比如请求方法为GET,那么就调用doGet方法;请求方法为POST,就调用doPost方法

3.Servlet的API

Servlet框架由两个Java包组成:

——javax.servlet:定义了所有的Servlet类都必须实现或扩展的通用接口和类

——javax.servlet.http:定义了采用HTTP协议通信的HttpServlet类

4.创建并发布HttpServlet步骤

(1)继承HttpServlet抽象类

(2)覆盖HttpServlet的部分方法,如doGet()或doPost()

(3)获取HTTP请求信息,例如通过HttpServletRequest对象,来将所HTML表单提交的数据或URL上的查询字符串。

无论是HTML表单还是URL上的查询字符串,在HttpServletRequest对象中,都以:参数名/参数值的形式存放,可以通过getParameter(String name)方法,检索参数信息

(4)生成HTTP响应结果。通过HttpServletResponse对象生成响应结果。HttpServletResponse对象有一个getWriter()方法,该方法返回一个PrintWriter对象。使用PrintWriter的print()或println()方法,可以向客户端发送字符串数据流

5.理解ServletContext与JavaWeb应用的关系

当Servlet容器启动Web应用时,为每一个Web应用创建唯一的ServletContext对象。

把ServletContext看成一个Web应用的服务器端组件的共享内存

在ServletContext中可以存放共享数据,它提供了读取或设置共享数据的方法:

——setAttribute(String name,Object object)

——getAttribute(String name)

程序示例:使用ServletContext对象,实现一个网页计数器

CounterServlet.java

counter.jsp


6.Tomcat请求参数源代码分析

对于Tomcat来说,它会将客户传递过来的参数放在一个Hashtable中

将陆续回顾javaSE基础知识--通过圣思园张龙老师的视频

后面陆续将张龙老师的笔记粘贴出来,为了能够将知识更好的保存和传播。
  • zhanghongxian123
  • zhanghongxian123
  • 2016年03月20日 23:26
  • 794

是的,圣思园提供试听课程了

圣思园试听课程发布了,感兴趣不妨一听。
  • ricohzhanglong
  • ricohzhanglong
  • 2017年10月25日 16:45
  • 1433

欢迎大家关注我创办的北京圣思园科技有限公司IT高端就业培训

欢迎大家关注我创办的北京圣思园科技有限公司IT高端就业培训
  • ricohzhanglong
  • ricohzhanglong
  • 2010年10月20日 00:31
  • 23986

#笔记#圣思园 JavaWeb 第7讲——Servlet

1.Servlet是Java服务器端编程 不同于一般的Java应用程序,Servlet是运行在服务器上的,服务器有很多种,常用的服务器是Tomcat。 Servlet最大的特点是,没有main方法 S...
  • aliuxiaohuaxixi
  • aliuxiaohuaxixi
  • 2015年06月25日 17:16
  • 233

圣思园《精通并发与Netty》课程圆满落幕

谢谢每一个热爱学习的你。
  • ricohzhanglong
  • ricohzhanglong
  • 2017年12月26日 20:09
  • 693

北京圣思园JAVA培训教学视频汇总

《北京圣思园JAVA培训教学视频汇总》Java SE&JSP&Servlet&JavaScript&Ajax&jQuery&OOAD与UML&CVS&XML&Unit Test&Struts 2.2&...
  • oShaPoLang
  • oShaPoLang
  • 2014年02月15日 13:25
  • 3357

#笔记#圣思园 JavaSE 第72讲——JUnit框架

1.JUnit单元测试框架 3.8:基于反射进行 4.x:基于反射和注解进行 2. 3. 4. 5.
  • aliuxiaohuaxixi
  • aliuxiaohuaxixi
  • 2015年06月12日 16:13
  • 175

#笔记#圣思园 JavaWeb 第65讲——jQuery,选择器

1. $(document)————把dom对象转换成jQuery对象 ready方法————当整个页面的dom元素加载完毕后,执行ready方法参数中的函数 2.ready方法与onload方法...
  • aliuxiaohuaxixi
  • aliuxiaohuaxixi
  • 2015年08月11日 19:38
  • 413

#笔记#圣思园 JavaWeb 第39讲——Filter过滤器

1.过滤器概念 过滤器能够对Servlet容器的请求和响应对象进行检查和修改 Servlet过滤器本身不生成请求和响应对象,只提供  过滤  作用 在Servlet被调用之前,检查Request对象,...
  • aliuxiaohuaxixi
  • aliuxiaohuaxixi
  • 2015年07月14日 20:50
  • 150

#笔记#圣思园 JavaWeb 第49讲——定时器、两种事件绑定

1.自定义对象 ——用构造函数,定义对象类型 ——建立对象实例 动态定义对象属性 ——构造函数定义对象的方法名 ——建立方法的描述函数 程序示例:js10.html。利用构造函数,设置对象属性 执行结...
  • aliuxiaohuaxixi
  • aliuxiaohuaxixi
  • 2015年07月20日 16:37
  • 274
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:#笔记#圣思园 JavaWeb 第29讲——Servlet
举报原因:
原因补充:

(最多只允许输入30个字)