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各自独立
分享到:
相关推荐
### JSPServlet技术在管理信息系统中的应用:深入解析与实践 #### 一、JSPServlet技术概述 JSPServlet技术是JavaServer Pages (JSP) 和 Servlet 的组合使用,为Web应用程序开发提供了强大的支持。JSP是一种动态...
以下是对Servlet技术的详细介绍: 1. **Servlet基本概念**: Servlet是一种Java类,它扩展了服务器的功能,主要用于接收和处理来自客户端(通常是Web浏览器)的请求,并生成相应的响应。它们在Web服务器中运行,与...
1. 利用servlet技术实现一个简单的聊天室,实现多人同时交流。当发送聊天信息时,信息窗口刷新。信息窗口显示发言人的姓名以及发言的内容。在进入聊天室之前需要进行登录,即输入用户名。 2. 在实验完成时需要向辅导...
【ACCP S2 使用JSP/Servlet技术开发新闻发布系统】是一个面向初学者的课程,旨在教授如何使用Java服务器页面(JSP)和Servlet技术来构建一个动态、交互式的新闻发布平台。这个课程涵盖了从基础概念到实际开发的完整...
Java Servlet 技术是Web开发中的核心组成部分,它允许开发者使用Java语言创建动态、交互式的Web应用。本章将深入讲解Servlet的各个方面。 1. **Servlet概述** - Servlet是Java编程语言编写的服务器端小程序,它...
在本项目中,"JSP+JavaBean+Servlet技术实现某网站用户注册和登录功能",我们探讨了三种核心技术在Web开发中的应用,这三种技术是构建动态网站的基础。以下是这些技术的详细说明: 1. **JavaServer Pages (JSP)**: ...
【标题】:“租房系统 源代码 java jsp servlet技术 struts2技术”是指一个基于Java编程语言,采用jsp、servlet以及Struts2框架实现的租房管理系统的源代码。这个系统提供了基本的房源信息管理功能,包括添加、删除...
Servlet技术简介:Servlet技术是Sun公司提供的一种实现动态网页的解决方案,它是基于Java编程语言的WEB服务器端编程技术,主要用于在WEB服务器端获得客户端的访问请求信息和动态生成对客户端的响应消息。Servlet技术...
【标题】北大青鸟ACCP7.0使用JSP/Servlet技术Y2课件 【内容详解】 北大青鸟的ACCP7.0课程是针对IT行业初学者和进阶者设计的一套全面的编程教育体系,特别是对于Java Web开发领域。在第二学年(Y2)的学习中,重点...
【JSP/Servlet技术开发新闻发布系统】 在Web开发领域,JSP(JavaServer Pages)和Servlet是两种核心的技术,常用于构建动态、交互式的Web应用程序,如新闻发布系统。本项目"使用JSP/Servlet技术开发新闻发布系统...
Servlet 技术是Java EE平台中...总之,Servlet技术是Java Web开发的基础,理解其工作原理和生命周期对于开发高效、安全、可扩展的Web应用至关重要。通过熟练掌握Servlet,开发者能够构建出满足各种需求的Web应用程序。
【标题】"05使用JSP/Servlet技术开发新闻发布系统所有作业zip"涉及的是使用Java服务器页面(JSP)和Servlet技术构建一个新闻发布系统的过程。这个压缩包可能包含了完成此项目的所有源代码、文档和资源文件,分布在...
Servlet技术是Java EE(以前称为J2EE)中用于创建动态Web应用程序的核心技术之一。它是一种在Web服务器端运行的Java程序,专门设计用来处理来自Web浏览器的HTTP请求,并生成相应的HTTP响应。本文将引导您初步了解...
Servlet技术是Java EE平台中用于处理HTTP请求的核心技术,它为开发者提供了构建Web应用程序的Java接口和类。Servlet是一个Java类,遵循Java Servlet API规范,主要用于扩展服务器的功能,特别是Web服务器,以处理...
### Servlet技术概述与核心知识点解析 #### 一、Servlet技术概览 Servlet技术,作为Java Web开发中的核心组件之一,其重要性不言而喻。Servlet,即Server Applet,是一种运行于服务器端的小程序,专门设计用于处理...
JSP+JavaBean+Servlet技术(MVC模型) JSP+JavaBean+Servlet技术(MVC模型) JSP+JavaBean+Servlet技术(MVC模型) JSP+JavaBean+Servlet技术(MVC模型) JSP+JavaBean+Servlet技术(MVC模型) JSP+JavaBean+Servlet...