- 浏览: 462068 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
xbyy123:
如果底层原理是这样的话,那么太谢谢了,瞬间明白了spring事 ...
Spring事务原理 -
欢乐逗佛:
盗取一时爽,全家火葬场
java工厂模式三种 -
ananeye:
不错不错不错不错
spring 加载过程 -
ananeye:
写的浅显易懂,不错,赞一个。
Spring事务原理 -
18289753290:
我们平时好像不是这么写的。直接就是service了,servi ...
Spring事务原理
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的生命周期:
u init方法,负责初始化Servlet对象
u service方法,负责响应客户的请求
u 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提供更多的与特定协议相关的数据。
ServletResponse接口:ServletResponse接口为Servlet提供了返回响应结果的方法。它允许Servlet设置返回数据的长度和MIME类型,并且提供了输出流ServletOutputStream。ServletResponse子类可以提供更多和特定协议相关的方法。
特别需要指出的是Servlet是以多线程的方式工作的,Servlet可以同时处理多个请求。作为开发人员,需要注意Servlet成员变量的线程安全,在doGet()、doPost()中的局部域变量是线程安全的,而Servlet的成员变量则有线程安全的隐患。所以除非你有意需要应用这种特性,在一般情况下,不宜将一些可改写的变量定义成Servlet的成员变量,否则一定要采取线程同步的措施确保线程安全。
3、Servlet 的生命周期
Servlet的生命周期开始于被装载到Servlet容器中,结束于被终止或重新装入时。Servlet的生命周期可以分为3个阶段:初始化阶段、响应客户请求阶段和终止阶段。在javax.servlet.Servlet接口中定义了3个方法init()、service()和destroy(),它们将分别在Servlet的不同阶段被调用:
1)、初始化阶段
在下列情形下Servlet容器自动装载Servlet:
u Servlet容器启动时自动装载某些Servlet
u 在Servlet容器启动后,客户首次向Servlet发出请求
u 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请求信息的常用方法:
u getCookies():返回HTTP请求的Cookies
u getRequestURI():返回HTTP请求URI
u getQueryString():返回HTTP请求数据中的查询字符串
u getMethod():返回HTTP请求方法
Servlet容器还向HttpServlet提供了HttpServletResponse对象,HttpServlet可以通过它来生成HTTP响应的每一部分内容。
HttpServletResponse提供的生成响应数据Header的方法:
u addCookie(Coolie cookie):向HTTP响应中加入Cookie
u setHeader(String name,String value):设置HTTP响应的Header。
4.4、Servlet容器响应Web客户请求的步骤:
(1)、Web客户向Servlet容器发出HTTP请求;
(2)、Servlet容器解析Web客户的HTTP请求;
(3)、Servlet容器创建一个HttpServletRequest对象,在这个对象中封装了HTTP请求信息;
(4)、Servlet容器创建一个HttpServletResponse对象;
(5)、Servlet容器调用HttpServlet的service方法,把HttpServletRequest和HttpServletResponse对象作为service方法的参数传给HttpServlet对象;
(6)、HttpServlet调用HttpServletRequest的有关方法,获取HTTP请求信息
(7)、HttpServlet调用HttpServletResponse的有关方法,生成响应数据
(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各自独立。
7、Servlet的特性及适用场合
虽然Servlet也可以用于生成动态网页,但这个功能已经逐渐让位给新锐JSP了,不过Servlet并没有因为江山代有才人而成为Java历史博物馆的古董,它依然身怀绝技笑傲江湖:
·自动启动
一般情况下,JSP只有在客户端第一次调用后,方才进行编译并初始化,而Servlet则可以通过web.xml的<load-on-startup>配置,使其在Web容器启动时自动初始化。可使用Servlet这个特性完成Web应用程序的初始化工作:如下载字典表、控制表、初始化配置信息等,启动某个后台进程等。
·路径匹配映射
Servlet可以通过web.xml 中<servlet-mapping>用通配符配置URI映射,对多个匹配的URI进行响应,而JSP只能通过一个具体的URI调用。这个特性可以使你在请求进入某个具体的页面前截获并处理它,许多Web应用框架,如Struts、Spring都利用了Servlet的这个特性,在此基础上创建构架。
·Servlet过滤器
Servlet过滤器继承于javax.servlet.Servlet并实现javax.servlet.Filter的类,在请求到达服务程序前和响应发往客户端前进行加工处理。如果有大量的页面都需要进行相同的处理,则可以使用一个Servlet过滤器对此一并处理。如你可以用Servlet过滤器进行编码转换、或者为每个页面添加一个统一的标题头等。
·Servlet监听器
J2EE定义了多个Web事件监听器接口,Servlet监听器是继承javax.servlet.Servlet并实现这些事件监听接口的类。如果 Web应用服务器对某个Web容器的事件感兴趣,就可以构造一个实现该事件监听接口的Servlet,以便在该事件发生时做相应的处理。灵活使用 Servlet监听器,可以使一些原来很难实现的操作变得易如反掌。
此外,如果一个动态网页的页面展现逻辑少,而业务处理逻辑多,如一个计算圆周率并返回结果页面的请求,这时使用Servlet比JSP更适合。所以需要创建一个动态网页,在到底使用Servlet还是JSP的问题上举棋不定时,请这记住下面这句经典的话:Servlet是包含HTML代码的Java程序,而JSP是包含Java代码的HTML网页
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的生命周期:
u init方法,负责初始化Servlet对象
u service方法,负责响应客户的请求
u 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提供更多的与特定协议相关的数据。
ServletResponse接口:ServletResponse接口为Servlet提供了返回响应结果的方法。它允许Servlet设置返回数据的长度和MIME类型,并且提供了输出流ServletOutputStream。ServletResponse子类可以提供更多和特定协议相关的方法。
特别需要指出的是Servlet是以多线程的方式工作的,Servlet可以同时处理多个请求。作为开发人员,需要注意Servlet成员变量的线程安全,在doGet()、doPost()中的局部域变量是线程安全的,而Servlet的成员变量则有线程安全的隐患。所以除非你有意需要应用这种特性,在一般情况下,不宜将一些可改写的变量定义成Servlet的成员变量,否则一定要采取线程同步的措施确保线程安全。
3、Servlet 的生命周期
Servlet的生命周期开始于被装载到Servlet容器中,结束于被终止或重新装入时。Servlet的生命周期可以分为3个阶段:初始化阶段、响应客户请求阶段和终止阶段。在javax.servlet.Servlet接口中定义了3个方法init()、service()和destroy(),它们将分别在Servlet的不同阶段被调用:
1)、初始化阶段
在下列情形下Servlet容器自动装载Servlet:
u Servlet容器启动时自动装载某些Servlet
u 在Servlet容器启动后,客户首次向Servlet发出请求
u 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请求信息的常用方法:
u getCookies():返回HTTP请求的Cookies
u getRequestURI():返回HTTP请求URI
u getQueryString():返回HTTP请求数据中的查询字符串
u getMethod():返回HTTP请求方法
Servlet容器还向HttpServlet提供了HttpServletResponse对象,HttpServlet可以通过它来生成HTTP响应的每一部分内容。
HttpServletResponse提供的生成响应数据Header的方法:
u addCookie(Coolie cookie):向HTTP响应中加入Cookie
u setHeader(String name,String value):设置HTTP响应的Header。
4.4、Servlet容器响应Web客户请求的步骤:
(1)、Web客户向Servlet容器发出HTTP请求;
(2)、Servlet容器解析Web客户的HTTP请求;
(3)、Servlet容器创建一个HttpServletRequest对象,在这个对象中封装了HTTP请求信息;
(4)、Servlet容器创建一个HttpServletResponse对象;
(5)、Servlet容器调用HttpServlet的service方法,把HttpServletRequest和HttpServletResponse对象作为service方法的参数传给HttpServlet对象;
(6)、HttpServlet调用HttpServletRequest的有关方法,获取HTTP请求信息
(7)、HttpServlet调用HttpServletResponse的有关方法,生成响应数据
(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各自独立。
7、Servlet的特性及适用场合
虽然Servlet也可以用于生成动态网页,但这个功能已经逐渐让位给新锐JSP了,不过Servlet并没有因为江山代有才人而成为Java历史博物馆的古董,它依然身怀绝技笑傲江湖:
·自动启动
一般情况下,JSP只有在客户端第一次调用后,方才进行编译并初始化,而Servlet则可以通过web.xml的<load-on-startup>配置,使其在Web容器启动时自动初始化。可使用Servlet这个特性完成Web应用程序的初始化工作:如下载字典表、控制表、初始化配置信息等,启动某个后台进程等。
·路径匹配映射
Servlet可以通过web.xml 中<servlet-mapping>用通配符配置URI映射,对多个匹配的URI进行响应,而JSP只能通过一个具体的URI调用。这个特性可以使你在请求进入某个具体的页面前截获并处理它,许多Web应用框架,如Struts、Spring都利用了Servlet的这个特性,在此基础上创建构架。
·Servlet过滤器
Servlet过滤器继承于javax.servlet.Servlet并实现javax.servlet.Filter的类,在请求到达服务程序前和响应发往客户端前进行加工处理。如果有大量的页面都需要进行相同的处理,则可以使用一个Servlet过滤器对此一并处理。如你可以用Servlet过滤器进行编码转换、或者为每个页面添加一个统一的标题头等。
·Servlet监听器
J2EE定义了多个Web事件监听器接口,Servlet监听器是继承javax.servlet.Servlet并实现这些事件监听接口的类。如果 Web应用服务器对某个Web容器的事件感兴趣,就可以构造一个实现该事件监听接口的Servlet,以便在该事件发生时做相应的处理。灵活使用 Servlet监听器,可以使一些原来很难实现的操作变得易如反掌。
此外,如果一个动态网页的页面展现逻辑少,而业务处理逻辑多,如一个计算圆周率并返回结果页面的请求,这时使用Servlet比JSP更适合。所以需要创建一个动态网页,在到底使用Servlet还是JSP的问题上举棋不定时,请这记住下面这句经典的话:Servlet是包含HTML代码的Java程序,而JSP是包含Java代码的HTML网页
发表评论
-
Tomcat 乱码设置
2012-11-13 12:17 1135第一,存文件必须以一种编码存;读文件也必须以一种编码读,如不特 ... -
Session原理机制
2012-10-16 09:58 938这个jsessionid是session的一个标识。 ... -
Post与Get区别
2012-10-15 11:40 879一、 在Form里面,可以 ... -
http协议
2012-10-15 11:01 1068HTTP协议是什么? 简单 ... -
tomcat配置编码中文
2012-09-13 11:09 1040第一,存文件必须以一种编码存;读文件也必须以一种编码读,如不特 ... -
tomcat精华配置-包括单点登录
2012-09-13 11:05 10901、配置系统管理(Admin Web application) ... -
tomcat的虚拟目录和热部署
2012-08-24 17:27 1207虚拟目录的设置 一种:把项目文件放到tomcat的安装路径的相 ... -
web.xml加载详解
2012-08-10 11:42 1092一 1、启动一个WEB项目的时候,WEB容器会去读取它的配 ... -
webservice-axis2安装
2012-07-19 11:11 9691.下载 Myeclipse Axis2 插件 http:/ ... -
tomcat虚拟目录配置
2012-07-18 16:44 1081Tomcat虚拟目录设置 重 ... -
Session cookie 原理
2011-07-28 14:50 1045我们来看个例子 ... -
Session 工作原理
2011-07-28 14:39 1288在java WEB开发中,session既是重点又是难点,很多 ... -
localhost和127.0.0.1的区别
2011-04-18 10:29 1222一. localhost也叫local ,正确的解释是:本地服 ... -
Tomcat的web应用程序部署方法
2011-04-12 21:00 1142一. 在tomcat中的conf目录中, 在server.xm ... -
Tomcat5 与Tomcat6的区别
2011-04-12 17:07 19311. 目录结构 tomcat5 有9个目录(bin, conf ... -
Tomcat启动一闪而过(控制台报错了)
2011-04-12 16:57 2176tomcat启动时如果执行startup.bat一闪而过 ... -
Tomcat 不通版本下数据源的配置
2011-04-12 16:18 1211一. Tomcat中数据源的配置,不同的版本方法略有不同 ... -
Tomcat启动流程与配置详解
2011-04-01 18:55 10921. Tomcat5.0 的目录结构 共有9个目录 bin, ... -
Tomcat 5目录结构解释介绍(转载)
2011-04-01 17:00 1069tomcat5下有9个目录,分别是bin,common,con ...
相关推荐
详细介绍了JAVAWEB中的servlet 非常适合初学者
在本文中,我们将深入探讨Servlet的概念、工作原理以及其生命周期的详细过程。 Servlet是一个可重用的Java类,它扩展了Java平台的能力,使得开发者能够创建能够与Web服务器交互的应用程序。Servlet主要负责接收HTTP...
Servlet是在Java平台上运行的服务器端组件,主要用于扩展服务器的功能,处理来自客户端的请求并生成响应。Java Servlet API提供了一套标准的接口,使得开发者可以编写Servlet来处理HTTP请求。在本例中,我们将创建一...
1. **Servlet介绍**: Servlet是Java编程语言中的一组接口,它允许开发人员扩展服务器的功能,尤其是HTTP服务器。Servlet可以接收并响应来自Web客户端的请求,例如浏览器,然后生成动态内容返回。 2. **创建...
1. **Servlet介绍**:Servlet是Java编写的服务器端组件,它扩展了Web服务器的功能,能够处理HTTP请求并返回响应。在本项目中,Servlet作为控制层,负责接收前端发送的请求,进行业务逻辑处理,并将结果传递给前端...
### Servlet介绍 Servlet是Java编写的服务器端组件,用于处理HTTP请求和响应。它们提供了对HTTP协议的低级访问,可以接收来自客户端的请求,处理数据,然后生成响应。Servlet通常不直接生成HTML,而是通过JSP或其他...
**Servlet介绍** Servlet是Java中用于处理HTTP请求的服务器端组件。在AJAX请求中,Servlet接收来自客户端(这里是JSP页面)的请求,执行业务逻辑(如查询数据库以检查用户名),然后返回结果。在这个例子中,我们的...
3. **Servlet介绍** Servlet是Java EE中用于处理HTTP请求的服务器端组件。在本项目中,Servlet接收SwfUpload发送的文件数据,进行保存操作。Servlet生命周期包括加载、初始化、服务、销毁等阶段,通过`doPost()`或`...
jsp+servlet简介 简单介绍jsp+servlet简介 简单介绍jsp+servlet简介 简单介绍jsp+servlet简介 简单介绍jsp+servlet简介 简单介绍jsp+servlet简介 简单介绍jsp+servlet简介 简单介绍jsp+servlet简介 简单介绍jsp+...
4. Servlet 介绍 Servlet 是一个 Java 语言编写的 Web 组件,能够处理 HTTP 请求和响应。Servlet 的执行流程包括初始化、服务、销毁三个阶段。 5. Servlet 生命周期 Servlet 的生命周期包括初始化、服务、销毁三...
Servlet是Java平台上的一个核心技术,它主要用于开发Web应用程序,特别是在B/S(浏览器/服务器)架构下。Servlet是一个Java对象,遵循Sun指定的J2EE规范,它扩展了Web服务器的功能,使得服务器能够处理HTTP请求并...
#### 六、Servlet介绍 - **Servlet概述**:Servlet是一种服务器端的Java应用程序,它可以接收客户端的请求并做出响应。Servlet技术是Java EE平台的一部分,主要用于构建动态Web应用程序。 - **Servlet生命周期**:...
Servlet 介绍 Servlet 是一种小程序,运行在各种服务器端,用于处理客户端的请求。Servlet 需要继承 HttpServlet 接口,并实现其方法。在 Servlet 中, doGet 方法用于处理 GET 请求,而 doPost 方法用于处理 POST ...
Servlet是Java平台上的一个核心技术,用于开发web应用程序。Servlet是一个服务器端的Java小程序,它扩展了Web服务器的功能,能够处理来自客户端(如浏览器)的请求,并返回响应。Servlet是平台独立的,可以在任何...
### servlet API介绍以及开发部署 #### 一、概述 Servlet技术是Java Web开发的重要组成部分,它主要用于处理HTTP请求并生成动态网页。为了更好地理解和运用这一技术,本篇将详细介绍Servlet API的基本概念及其核心...
#### 第6讲:Servlet介绍与实现 - **Servlet基本概念**:阐述Servlet的工作原理和生命周期。 - **Servlet配置与部署**:讨论web.xml文件的作用以及如何配置Servlet。 #### 第7讲:Servlet高级特性 - **Servlet...
本文档将详细介绍如何使用 MyEclipse 8.5 和 Tomcat 6.0 开发 Java Servlet 的基本流程。 #### 二、开发环境配置 为了进行 Java Servlet 的开发,首先需要搭建一个合适的开发环境。本教程推荐的环境配置如下: - ...
本篇将深入介绍Servlet的主要函数和API,并结合2.1版Java Servlet API的文档进行详细解析。 1. **Servlet生命周期** Servlet的生命周期包括加载、初始化、服务、销毁四个阶段。`init()`方法在Servlet实例化后首次...
### Servlet介绍 Servlet是Java编写的小程序,它们运行在服务器端,处理HTTP请求并生成响应。Servlet提供了更底层的控制,可以用来扩展Web服务器的功能。在JSP中,Servlet常被用作后台处理逻辑,接收JSP提交的请求,...