- 浏览: 121516 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
maoghj:
dom4j API转载 -
hongdong1017:
[url][/url][flash=200,200][/fla ...
linux下如何执行.sh文件 -
hongdong1017:
[b][/b][i][/i][u][/u]引用
linux下如何执行.sh文件 -
shangfengying:
...
java web项目中web.xml的一点东西 -
12345678:
谢谢 ~ 我用的~Jon Galloway~~的
java项目清除svn信息
Servlet技术
1、Servlet简介
Java Servlet是与平台无关的服务器端组件,它可以运行在Servlet容器中.Servlet容器负责Servlet和客户的通信以及调用Servlet的方法,Servlet和客户的通信采用"请求/响应"的模式
2、Servlet API
Servlet的框架是由两个Java包组成的:javax.servlet和javax.servlet.http。在javax.servlet包中定义了所有的Servlet类都必须实现或扩展的通用接口和类。在javax.servlet.http包中定义了采用HTTP协议通信的HttpServlet类
Servlet的框架的核心是javax.servlet.Servlet接口,所有的Servlet都必须实现这一接口。在Servlet接口中定义了5个方法,其中有3个方法代表了Servlet的生命周期
init方法,负责初始化Servlet对象
service方法,负责响应客户的请求
destroy方法,当Servlet对象退出生命周期时,负责释放占用的资源
当用户开发自己的Servlet类时,Servlet类必须扩展以下两个类中的一个
1、扩展GenericServlet类:
如果Servlet扩展了GenericServlet类,则必须实现service方法,因为GenericServlet类中的service方法被声明为抽象方法,该方法的声明形式如下:
public abstract void service(ServletRequest request,ServletResponse response)
throws ServletException,IOException
service方法有两个参数:ServletRequest和ServletResponse。Servlet容器将客户的请求信息封装在ServletRequest对象中,传给service方法;service方法将响应客户的结果通过ServletResponse传给客户
2、扩展HttpServlet类:
如果Servlet类扩展了HttpServlet类,通常不必实现service方法,因为HttpServlet类已经实现了service方法,该方法的声明形式如下:
protected void service(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
在HttpServlet的service方法中,首先从HttpServletRequest对象中获取HTTP请求方式的信息,然后再根据请求方式调用相应的方法。
HTTP的请求放式包括DELETE、GET、OPTIONS、POST、PUT和TRACE,在HttpServlet类中分别提供了相应的方法,它们是doDelelte(),doGet(),doOptions(),doPost(),doPut()和doTrace()
在HttpServlet的service方法中,也有两个参数:HttpServletRequest和HttpServletResponse,这两个类分别扩展了ServletRequest和ServletResponse接口
ServletRequest接口:ServletRequest接口封装了客户请求信息,如客户请求方式、参数名和参数值、客户端正在使用的协议,以及发出客户请求的远程主机信息等。ServletRequest接口还为Servlet提供了直接以二进制数方式读取客户请求数据流的ServletInputStream。ServletRequest的子类可以为Servlet提供更多的与特定协议相关的数据
ServletRequest接口:ServletRequest接口为Servlet提供了返回响应结果的方法。它允许Servlet设置返回数据的长度和MIME类型,并且提供了输出流ServletOutputStream。ServletResponse子类可以提供更多和特定协议相关的方法
3、Servlet 的生命周期
Servlet的生命周期开始于被装载到Servlet容器中,结束于被终止或重新装入时。Servlet的生命周期可以分为3个阶段:初始化阶段、响应客户请求阶段和终止阶段。在javax.servlet.Servlet接口中定义了3个方法init()、service()和destroy(),它们将分别在Servlet的不同阶段被调用
1、初始化阶段
在下列情形下Servlet容器自动装载Servlet:
Servlet容器启动时自动装载某些Servlet
在Servlet容器启动后,客户首次向Servlet发出请求
Servlet的类文件被更新后,重新装载Servlet
Servlet被装载后,Servlet容器创建一个Servlet实例并且调用Servlet的init()方法进行初始化。在Servlet的整个生命周期中,init方法只会被调用一次。init方法有两种重载形式:
public void init(ServletConfig config) throws ServletException;
public void init() throws ServletException;
在Servlet的初始化阶段,Servlet容器会为Servlet创建一个ServletConfig对象,用来存放Servlet的初始化配置信息,如Servlet的初始参数。如果Servlet类覆盖了第一种带参数的init方法,应该先调用super.init(config)方法确保参数config引用ServletConfig对象;如果覆盖的是第二种不带参数的init方法,可以不调用super.init()方法,如果要在init方法中访问ServletConfig对象,可以调用Servlet类的getServletConfig()方法
2、响应客户请求阶段
对于到达Servlet容器的客户请求,Servlet容器创建特定于这个请求的ServletRequest对象和ServletResponse对象,然后调用Servlet的service方法。service方法从ServletRequest对象获得客户请求信息并处理该请求,通过ServletResponse对象向客户返回响应结果
3、终止阶段
当Web应用被终止,或Servlet容器终止运行,或Servlet容器重新装载Servlet的新实例时,Servlet容器会先调用Servlet的destroy方法。在destroy方法中,可以释放Servlet所占用的资源
4、HTTP与HttpServlet
HTTP是一种基于请求/响应模式的协议。客户端发送一个请求,服务器返回对该请求的响应。HTTP使用可靠的TCP连接,默认端口是80
在HTTP中,客户端/服务器之间的会话总是由客户端通过建立连接和发送HTTP请求的方式初始化,服务器不会主动联系客户端或要求与客户端建立连接。在会话开始后,浏览器或服务器都可以随时中断连接,例如,在浏览网页时可以随时点击“停止”按钮中断当前的文件下载过程,关闭与Web服务器的HTTP连接
4.1、HTTP请求
HTTP请求由3个部分构成,分别是:
请求方法URI协议/版本
请求头
请求正文
例如:
GET /sample.jsp HTTP/1.1
Accept:image/gif.image,image/jpeg.*.*
Accept-Lauguage:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozilla/4.0
Accept-Encoding:gzip,deflate
username=weiqin&password=1234
1、请求方法URI协议/版本
GET /sample.jsp HTTP/1.1
根据HTTP标准,HTTP请求可以使用多种请求方法。例如,HTTP 1.1支持7种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TRACE
URI完整的指定了要访问的网络资源,通常只要给出相对于服务器的根目录的相对目录即可,因此总是以“/”开头
协议版本声明了通信过程中使用的HTTP的版本
2、请求头
请求头包含许多有关客户端环境和请求正文的有用信息
3、请求正文
请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来是请求的正文。请求正文中可以包含客户提交的查询字符串信息
4.2、HTTP响应
与HTTP请求类似,HTTP响应也由3个部分构成,分别是:
协议 状态代码 描述
响应头
响应正文
HTTP/1.1 200 OK
Server:ApacheTomcat/5.0
Date:Mon,6 Oct 2003 13:13:13 GMT
Content-Type:text/html
Last-Modified: Mon,6 Oct 2003 13:03:13 GMT
Content-Length:112
<html>
<head>
<title>HTTP响应示例</title>
</head>
<body>
Hello HTTP!
</body>
</html>
1、协议 状态代码 描述
HTTP响应的第一行类似于HTTP请求的第一行,它表示通信所使用的协议是HTTP 1.1,服务器已经成功地处理了客户端发出的请求
2、响应头
响应头也和请求头一样包含许多有用的信息,例如服务器类型、日期时间、内容类型和长度等
3、响应正文
响应正文就是服务器返回的HTML页面,响应头和正文之间也必须用空行分隔
4.3、HttpServlet的功能
在了解了具体的HTTP协议规范后,可以更好地理解HttpServlet的作用。它能够根据客户发出的HTTP请求,生成相应的HTTP响应结果。HttpServlet首先必须读取HTTP请求的内容。Servlet容器负责创建HttpServletRequest对象,并把HTTP请求信息封装到HttpServletRequest对象中,这大大简化了HttpServlet解析请求数据的工作量。如果没有HttpServletRequest,HttpServlet只能直接处理Web客户发出的原始的字符串数据,有了HttpServletRequest后,只要调用HttpServletRequest的相关方法,就可以方便地读取HTTP请求中任何一部分信息
HttpServletRequest中读取HTTP请求信息的常用方法:
getCookies():返回HTTP请求的Cookies
getRequestURI():返回HTTP请求URI
getQueryString():返回HTTP请求数据中的查询字符串
getMethod():返回HTTP请求方法
Servlet容器还向HttpServlet提供了HttpServletResponse对象,HttpServlet可以通过它来生成HTTP响应的每一部分内容
HttpServletResponse提供的生成响应数据Header的方法:
addCookie(Coolie cookie):向HTTP响应中加入Cookie
setHeader(String name,String value):设置HTTP响应的Header
4.4、Servlet容器响应Web客户请求的步骤:
1:Web客户向Servlet容器发出HTTP请求;
2:Servlet容器解析Web客户的HTTP请求;
3:Servlet容器创建一个HttpRequset对象,在这个对象中封装了HTTP请求信息;
4:Servlet容器创建一个HttpResponse对象;
5:Servlet容器调用HttpServlet的service方法,把HttpRequest和HttpResponse对象作为service方法的参数传给HttpServlet对象;
6:HttpServlet调用HttpResponse的有关方法,获取HTTP请求信息
7:HttpServlet调用HttpResponse的有关方法,生成响应数据
8:Servlet容器把HttpServlet的响应结果传给Web客户
5、创建HttpServlet的步骤
创建用户自己的HttpServlet类,通常涉及下列4个步骤:
1、扩展HttpServlet抽象类
2、覆盖HttpServlet的部分方法,如覆盖doGet或doPost方法
3、获取HTTP请求信息,例如通过HttpServletRequest对象来检索HTML表单所提交的数据或URL上的查询字符串。无论是HTML表单数据还是URL上的查询字符串,在HttpServletRequest对象中都以参数名/参数值的形式存放
4、生成HTTP响应结果。通过HttpServletResponse对象可以生成响应结果。HttpServletResponse对象有一个getWriter()方法,该方法返回一个PrintWriter对象。使用PrinterWriter的print()或println()方法可以向客户端发送字符串数据流
6、ServletContext和Web应用的关系
Servlet容器在启动时会加载Web应用,并为每个Web应用创建惟一的ServletContext对象。可以把ServletContext看成是一个Web应用的服务器端组件的共享内存
在ServletContext中设置的属性,在Web应用运行期间一直存在,当Web应用被关闭时,Servlet容器会销毁ServletContext对象,存储在ServletContext对象中的属性自然也不复存在。不同应用的ServletContext各自独立
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yinyuan1987/archive/2008/11/29/3410469.aspx
发表评论
-
2012-05-23 20:59 Java web项目listener Filter servlet启动顺序和配置
2013-02-19 14:23 971一、 1、启动一个WEB项 ... -
ServletContext总结(转)
2013-02-19 13:33 801今天我们学习的是ServletContext的应用。 ... -
SSH配置之web.xml .
2013-02-19 09:33 725web.xml 中的listener、 filte ... -
js自定义对象
2013-01-10 21:12 644一,概述 在Java语言中 ... -
js函数的三种定义方法
2013-01-10 20:57 739javascript定义函数的三种方法 funct ... -
JS基础
2013-01-10 09:49 644javascript在HTML中的嵌入的三种方式,如下:1.第 ... -
servlet的会话管理
2013-01-05 16:32 649在Servlet规范中,Servlet的会话管理技术主要有4种 ... -
数据源的一些小问题
2011-04-15 09:18 1235去年毕业的,在以前公司工作的时候 用的各种框架,太混乱了 ... -
JNDI详解
2011-04-08 14:02 1016NDI介绍(详解,什么是JNDI)JNDI(Java Nami ... -
线程池和JNDI的一些问题
2011-01-09 01:42 1237今天想使用线程池,一查资料,需要使用JNDI 写个小笔记,记 ... -
Web小结---Servlet,JSP,过滤器和监听器,四个作用域和九个内置对象,EL表达式语言,自定义标签,JSTL,国际化与汉字的编码 收藏
2011-01-01 23:39 14431、Servlet、ServletConfig:前者对应一 ... -
web.xml中<context-param>和<init-param>
2010-12-03 12:17 836<context-param>的作用:web.xm ... -
java web项目中web.xml的一点东西
2010-12-03 11:42 1719一个web中完全可以没有web.xml文件,也就是说,web. ... -
SLF4J介绍
2010-12-01 16:57 800装贴: SLF4J介绍 作者:终南 <li ... -
Maven
2010-11-29 11:42 931Maven的主要功能有:1.构建项目(Builds)2.文档编 ... -
Java_Ant详解
2010-11-04 20:56 676本文转自:百度空间 Java_Ant详解 1,什么是ant a ...
相关推荐
【Servlet原理详解】 Servlet是Java Web技术的核心组件,它提供了服务器端处理HTTP请求的能力。Servlet容器,如Tomcat,是Servlet运行的环境,它管理和调度Servlet的生命周期,使得开发者能够专注于业务逻辑,而...
### servlet原理的概述 在深入探讨servlet的原理之前,我们先来定义一下servlet是什么。Servlet是一种服务器端的Java应用程序,它运行在容器(如Tomcat)内,用于处理客户端请求并生成动态响应。Servlet可以被视为...
【Tomcat5&Servlet 原理】 Tomcat 是一个开源的、基于Java的Web应用服务器,主要用于执行Servlet和JSP。Tomcat5是其第五个主要版本,它遵循Servlet和JavaServer Pages(JSP)规范,为开发和部署Java Web应用程序...
本章节将深入探讨Servlet的原理和实践,帮助你理解如何在实际项目中运用这项技术。 1. **C/S与B/S架构** C/S(Client/Server)架构是一种传统的两层架构,客户端直接与服务器通信。而B/S(Browser/Server)架构,...
java视屏\5.WEB SERVER\6.Servlet原理.mp4
Servlet运行原理图,描述servlet运行的步骤方向和servlet运行过程
### Servlet 运行原理及生命周期详解 #### 一、Servlet简介 Servlet 是 Java Web 开发中的一个重要组成部分,它主要用于处理客户端发送至服务器端的 HTTP 请求,并返回相应的响应结果。Servlet 技术允许开发者以 ...
### Servlet工作原理详解 #### 一、Servlet简介与工作流程 Servlet是一种服务器端的Java应用程序,主要用于接收客户端发送的HTTP请求,并返回响应结果。Servlet在Java Web开发中扮演着核心角色,它负责处理用户...
在深入理解Servlet的原理之前,我们先明确一下Servlet的基本概念。Servlet是一个Java类,遵循Servlet API规范,由Web服务器加载并执行,用于扩展服务器的功能,特别是处理客户端的HTTP请求。在本篇文章中,我们将...
JSP (JavaServer Pages) 和 Servlet 是 Java EE (Java Platform, Enterprise Edition) 中用于开发动态Web应用的两种技术。它们可以用于创建动态网站内容,将业务逻辑和HTML页面分离,便于维护和开发。JSP是一种基于...
详细讲解servlet的机制及使用方法,其中有非常容易理解的实例和图解,推荐。
Servlet 工作原理解析
SERVLET 基本原理 SERVLET 基本原理是指 SERVLET 的装载、初始化、服务和销毁等过程。SERVLET 是一种小型的 Java 程序,可以在 Web 服务器中运行,提供动态网页服务。 SERVLET 生命周期是指 SERVLET 从创建到销毁...
2. Servlet原理:Servlet是Java编程语言中处理HTTP请求的服务器端组件。它们接收来自客户端的请求,处理数据,然后返回响应。在图片上传功能中,Servlet将处理文件的接收、验证和存储。 3. 图片上传流程: - 用户...
### Servlet容器工作原理 #### 一、概述 Servlet容器,如Tomcat,是Java Web应用的基础组成部分之一。本文旨在深入探讨Tomcat中的Servlet容器工作原理,重点解释Servlet容器如何加载和管理Servlet,以及如何处理...