第三章 Servlet编程
3.2 servlet的结构
与Servlet相关的类、接口都定义在javax.servlet和javax.servlet.http这两个包中,
可以通过下载java ee api文档来查看。javax.servlet包主要定义了Servlet编程的一
般架构,而javax.servlet.http则定义了基于http协议的Servlet相关API。
3.2.1 javax.servlet.servlet 接口与抽象类
Servlet.java这个接口中定义的init(),service()和destroy()方法是Servlet生命周期
方法,这些方法将在Servlet对象特定的状态下被Web服务器自动调用。
1.init()方法:
当一个Servlet被Web服务器实例化以后,这个方法会被web服务器自动调用。并且只调
用一次。我们在Servlet编程的时候,可以把需要初始化的代码放到这个方法中。
2. destroyed()方法。
当一个Servlet被销毁的时候,这个方法会被调用,编写Servlet的时候可以把在当前
Servlet实例被销毁之前需要执行的代码写到这个方法中,通常是释放资源的操作。
3. getServletConfig()方法:
返回一个ServletConfig类型的对象,通过个个对象可以获得当前Servlet设置信息和初
始化Servlet时通过俘。xml配置文件所传入的参数。
4. getServletInfo()方法:
返回有关Servlet的信息,例如作者、Servlet的版本和Servlet的版权信息。
3.2.2 javax.servlet.GenericServlet:
javax.servlet.GenericServlet这个抽象类,直接把Servlet接口的中所有方法都实现
了。方法体为空。这种设计思想体现的是设计模式中缺省适配器(Default Adapter)
模式。
3.2.3 javax.servlet.http.HttpServlet
这类继承了javax.servlet.GenericServlet的javax.servlet.http.HttpServlet就成为
我们编写Servlet使用最多的类。
流程:
Interface(接口)-GenericServlet(空实现类)-HttpServlet(实现类)
3.3 Servlet里的方法:
根据需求对其中的doPost()和doGet()方法进行重写。
解决乱码问题:
response.setContentType("text/html;charset=utf-8");
此句要写在new out对象之前才会起作用。
3.4.2 用MyEclipse新建Web Project
project name:Web项目名称。
Location:是否需要专门指定项目存放位置。默认选项是选中,使用设置好的项目存放
位置。通常使用默认值。
Directory:项目默认的存放位置,新建的Web项目存放在工作空间(Workspace)中。
Source folder: Web项目中的Java源程序的存放目录,例如JavaBeans和Servlet的源程
序就存放到这个目录中。通常该选项使用默认值。
Web root folder: 这个目录包括所有的Web内容,例如:JSP文件和HTML,也包括WEB-
INF目录和web.xml文件。
Context root URL: 这个选项指定将来Java Web应用访问的上下文路径名称。这个值,
MyEclipse会默认成“Project name”的值。Java web应用部署成功以后,会通过这个
名字来访问这个java web应用。如:“http://www.cari-power.com/project”来访问
。
Java Enterprise specification Level: 设定当前Web项目使用哪个Java EE的版本。
JSTL Support: 是否需要java standard tag library(jstl)的支持。如果勾选,相应
的JAR文件会添加到项目“WebRoot/WEB-INF/lib”目录下。Java EE 5.0,这个选项是不
可选的。
3.5 Servlet生命周期描述:
Servlet整个生命周期是这样的,当Servlet部署到Web容器中以后,客户机发送调用这
个Servlet的请求到达Web容器,Web容器会先判断所调用的Servlet的实例是否存在。如
果存在,新创建一个线程,并在新建线程中调用这个实例的service()方法。如果不存
在,装载当前所调用的Servlet的类,调用构造方法生成这个Servlet的实例,调用这个
实例的init()方法进行初始化,特别强调init()这个方法只会在Servlet初始化的时候
调用一次,除非这个Servlet被重新部署。然后在新建的线程中调用这个Servlet实例的
service()方法,处理用户的请求,回应给用户相应的内容。
当Servlet不再需要使用的时候,比如其所在的WEB应用被卸载或Web服务器关闭时,它
会被卸载掉,卸载前调用destory()方法,完成所有相关资源的释放。
HttpServlet的service()方法会对不同的HTTP请求分发给不同的方法去处理。这些请求
有GET,HEAD,PUT,POST,DELETE,OPTIONS和TRACE,但通常用的只有GET和POST。不
管是doGet()和doPost()方法都需要接收HttpServletRequest和HttpServletResponse
类型的参数。
3.6 利用web.xml设定参数:
从web.xml里获得参数:
int repeat = Integer.parseInt(getInitParameter("repeat"));
web.xml写法:
……
<init-param>
<param-name>repeat</param-name>
<param-value>5</param-value>
</init-param>
……
然后在这个Servlet中就可以使用从GenericServlet继承过来的getInitParameter()方
法获得初始化参数的数值。
3.7 Servlet所运行的这个服务器的运行参数以及这些参数的具体含义:
服务器IP:
request.getRemoteAddr();
服务器名:
request.getServerName();
服务器端口号:
request.getServerPort();
协议名:如:HTTP
request.getScheme();
协议版本:
request.getProtocol();
请求的方法:
request.getmethod();
请求的URl:
request.getRequestURI();
上下文路径:
request.getContextPath();
Servlet路径:
request.getServletPath();
3.8 Servlet获得头信息:
即,获取请求客户端的参数以及这些参数的具体含义。
写法:
Enumeration e = request.getHeaderNames();
while(e.hasMoreElements()){
headers = (String)e.nextElement();
if(headers != null){
out.println(header);
out.println(request.getHeader(headers));
}
}
分享到:
相关推荐
第三章 Servlet 编程第三章
第三章 Servlet 编程.ppt
本课件"第三章 Servlet 编程"将深入讲解Servlet的核心概念与实践技巧。 1. **Servlet生命周期** Servlet的生命周期包括加载、初始化、服务、销毁四个阶段。在服务器启动时,根据web.xml配置文件或注解加载Servlet...
第二部分,"第3章 Servlet 编程",会深入讲解Servlet技术。Servlet是JavaEE中的核心组件之一,用于扩展Web服务器的功能,处理HTTP请求并生成响应。本章将介绍Servlet生命周期、服务方法、会话管理、过滤器和监听器等...
Servlet编程范例(5)主要探讨的是Web应用程序中的会话管理,这是在开发动态网站时至关重要的概念。会话管理允许服务器在无状态的HTTP协议上保持对用户行为的跟踪,使得服务器能够识别和处理来自同一用户的连续请求...
### Java Servlet编程知识点详解 #### 一、Java Servlet概述 **Servlet** 是一种服务器端的 Java 技术,用于扩展应用程序的功能。它被设计来创建动态网页内容,并且可以处理客户端请求并返回响应。Servlet 通常...
第3章 会话育理 3. 1 使用传统方法进行会话管理 3. 1. 1 URL Rewriting技术 3. 1. 2 隐藏表单域 3. 1. 3 Cookie功能 3. 2 使用Java Servlet API进行会话管理 3. 2. 1 HttpSession接口 3. 2. 2 管理会话数据 3...
Servlet的基本运行方式如下:当第一个HTTP请求到达时,Servlet容器创建Servlet实例,并启动一个线程来处理请求。后续的请求,Servlet容器会重用已有的Servlet实例,为每个请求启动新的线程,这样可以避免频繁的实例...
这本书《Java Servlet编程(第二版)》深入探讨了这个主题,对于初学者来说是一份宝贵的资源。 **Servlet基本概念** 1. **Servlet接口**:Servlet的核心接口,它定义了Servlet的基本方法,如`service()`用于处理...
【Servlet编程基本技能】 编写Servlet通常涉及以下步骤: 1. 创建一个继承自javax.servlet.http.HttpServlet的子类。 2. 重写doGet()或doPost()方法,这两个方法对应HTTP的GET和POST请求,用于处理客户端的请求并...
语言程序设计资料:第3章_Servlet_编程.ppt
1. 加载与实例化:当服务器启动或第一次接收到对Servlet的请求时,会加载Servlet类并创建其实例。 2. 初始化:实例化后,Servlet会调用`init()`方法进行初始化,可以在这里设置初始化参数。 3. 服务:每当有请求到达...
《Servlet与JSP核心编程(第2卷 第2版)》这本书深入讲解了这两项技术,帮助开发者理解并掌握其核心概念、用法以及最佳实践。 1. **Servlet概述** - Servlet是Java平台上的一个接口,它定义了服务器端程序如何响应...
《Servlet与JSP核心编程(第二版)》是一本针对Java Web开发的权威指南,主要聚焦于Servlet和JSP这两个核心技术。Servlet是Java平台上的服务器端组件,用于处理HTTP请求,而JSP(JavaServer Pages)则是一种动态网页...
当服务器接收到第一个请求时,Servlet容器(如Tomcat)会加载并初始化Servlet实例。初始化阶段,Servlet会执行`init()`方法,通常用来进行一次性的设置。然后,每当有请求到来,`service()`方法会被调用,处理请求并...
第四章详解Servlet编程 在Java EE(以前的J2EE)开发中,Servlet扮演着核心的角色,它是服务器端用于处理HTTP请求并生成响应的Java小程序。本章将深入讲解Servlet的相关概念、API、生命周期以及如何在实际应用中...
《Java EE编程技术》作者郝玉龙: 第一章 J2EE概述,第三章 Servlet 编程,第四章 JSP编程,第五章 使用 JavaBean,第6章 JSP自定义标记,第7章 JSP标准标记库,第8章数据库编程,第10章 EJB编程,第11章 Web服务编程
本书由Marty Hall,Larry Brown著 张学良译 清华大学出版社出版 原书有47M由于上传文件大小限制分为3部分,本人不是黑人,仅仅在最后一个部分才收取4分资源分