- 浏览: 83570 次
- 性别:
- 来自: 郑州市
-
文章分类
最新评论
-
kellen_liu:
学习了!!
ipc$ -
gdljg0460:
[color=orange][/color]lkkk
过滤器(filter)在web 中的应用 -
jasongreen:
我一直用它,好东西
过滤器(filter)在web 中的应用 -
love_y:
强烈支持~!
过滤器(filter)在web 中的应用 -
love_y:
强烈支持~!
过滤器(filter)在web 中的应用
Servlet和Servlet容器:
我们通过浏览器访问一个网页的过程,实际上是浏览器通过HTTP协议和WEB服务器进行
交互的过程。也就是说,用户要访问网络资源,首先需要在网络上架设Web服务器来为
用户提供 内容服务,所有的内容都存在与服务器端,客户端发出请求,服务器端对对
请求作出响应,将用户请求的资源发送到客户端。
开发WEB应用程序一般是利用已经实现了HTTP协议的服务器端软件,这些软件为我们提
供了扩展的接口,我们只需要按照一定的规则去提供相应的扩展功能。当这类Web服务
器接受到客户请求后,判断请求是否访问我们提供的扩展功能,如果是,就将请求交由
我们所编写的程序去处理。当处理完成后,程序将处理结果交给Web服务器软件,web服
务器再将结果作为相应信息返回给客户端。
在Java中,给我们提供了编写扩展功能的技术——Servlet。Java Servlet(Java服务
器小程序)是一个基于Java技术的Web组件,运行在服务器端,由Servlet容器所管理,
用于生成动态的内容。Servlet是平台独立的Java类,编写一个Servlet,实际上就是按
照Servlet规范写一个Java类。Servlet被编译为平台中立的字节码,可以被动态加载到
支持Java技术的Web服务器中运行。
Servlet容器有时也叫Servlet引擎,是Web服务器或应用程序服务器的一部分,用于在
发送的请求和响应之上提供网络服务,解码基于MIME的请求,格式化基于MIME的响应。
Servlet容器在Servlet的生命周内包容和管理Servlet。
Servlet容器根据工作模式的不同,分三类:
1、独立的Servlet容器;
2、进程内的Servlet容器;
3、进程外的Servlet容器。
注:
Catalina :Tomcat 源于 Apache Jakarta 的开放源代码项目。Tomcat 是一种 Web 容
器,其中包括 servlet 和 JSP 容器(引擎)。从Tomcat4.0x中采用了新的Servlet容
器catalina。
Servlet接口:
接口提供了5个方法:
1、public void init(ServletConfig config)throws ServletException
init():在Servlet实例化之后,Servlet容器会调用init()方法,来初始化该对象,
主要是为了让Servlet对象在处理客户请求前完成一些初始化工作,例如:建立数据库
的连接,获取配置信息等。对于每个Servlet实例,init()方法只能被调用一次。
servlet容器通过参数config向Servlet传递配置信息。Servlet使用ServletConfig对象
从Web应用程序的配置信息中获取以名-值对形式提供的初始化参数。另外,在Serlet
中,还可以通过ServletConfig对象获取描述Servlet运行环境的ServletContext对象,
使用该对象,Servlet可以和它的容器进行通信。
2、public vlid service(ServletRequest req,ServletResponse res)throws
ServletExcepton,java.io.IOException
service():容器调用service()方法来处理客户端的请求。要注意的是,在service
()方法被容器调用之前,必须确保init()方法正确完成。容器会构造一个表示客户端请
求信息的请求对象(类型为ServletRequest)和一个用于响应的响应对象
(ServletReponse)作为参数传递给service()。
3、public void destory()
当容器检测到一个Servlet对象应该从服务中被移出的时候,容器会调用该对象的
destory()方法,以便让Servlet对象可以释放所使用的资源,以保存到持久存储设备中
。例如:将内容中的数据保存到数据中,关闭数据库连接等。
4、public ServletConfig getServletConfig()
getServletConfig():该方法返回容器调用init()方法时传递给Servlet对象的
ServletConfig对象,ServletConfig对象包含了Servlet的初始化参数。
5、public java.lang.String.getServletInfo()
getServletInfo():返回一个String类型的字符串,其中包括了关于Servlet的信息
,例如作者、版本和版权。
GenericServleta:
如果我们直接通过实现Servlet接口来编写一个Servlet类,就需要实现Servlet接口中定义的5中方法,为了简化Servlet的编写,在javax.servlet包中,给我们提供了一个抽象的类GenericServlet,它提供了除service()方法外的其他4种方法的简单实现。GenericServlet类定义了一个通用的、不依赖于具体协议的Servlet,它实现了Servlet接口和ServletConfig接口。
如果我们要编写一个通用的Servlet,只需要从GenericServlet类继承,并实现其中的抽象方法service()。
GenericServlet类中,提供了两种重载的init()方法:
·public void init(ServletConfig config)throws ServletException
·public void init()throws ServletException
第一种init()方法是Servlet接口中init()方法的实现。这种方法中,首先将ServletConfig对象保存在一个transient实例变量中,然后调用第二种不带参数的init()方法。
通常我们在编写集成自GenericServlet的Servlet类时,只需重写第一种不带参数的init()方法就可以了。如果覆盖了第一种init()方法,那么应该在子类的该方法中,包含一句super.init(config)代码调用。
HttpServlet:
在应用中都是浏览器通过HTTP协议去访问服务器端的资源,而我们所编写的Servlet也主要应用于HTTP协议的请求和响应。Sun公司在javax.servlet.http包中给我们提供了一个抽象的类HttpServlet,它继承自GenericServlet类,用于创建适合Web站点的HTTPServlet。
HttpServlet提供了两种重载service()方法:
·public void service(ServletRequest req,ServletResponse res)throws ServletExcepton,java.io.IOException
·public void service(HttpServletRequest req,HttpServletResponse resp) throws ServletException,java.io.IOException
第一种service()方法是GenericeServlet类中的service()方法的实现。在这种方法中,首先将req和res对象转换为HttpServletRequest(继承自ServletRequest接口)和HttpServletResponse(继承自ServletResponse接口)类型,然后调用第二种service()方法,对客户请求进行处理。
针对HTTP1.1中定义的7种请求方法Get、Post、Head、Put、Delete、Trace和Options、HttpServlet分别提供了7种处理方法。
HttpServlet虽然是抽象类,但在这个类中没有抽象的方法,其中所有的方法都是已经实现的。只是在这个类中对客户请求进行处理的方法,没有真正的实现,当然也不可能真正的实现。
Servlet定义两个异常类:ServletException和UnavailableException。
ServletException类定义了一个一般的异常,可以被init()、service()、doXXX()方法抛出,这个类提供了下面4种构造方法和1种实例方法。
·public ServletException()
构造一个新的servlet异常
·public ServletException(java.lang.String.message)
message可以被写入服务器的日志中,或者显示给用户。
·public ServletException(java.lang.String.message,java.lang.Throwable rootCause)
在Servlet执行时,如果有一个异常阻碍了servlet的正常操作,那么这个异常就是根原因(rootcause)异常。
·public ServletException(java.lang.Throwable rootCause)
·public java.lang.Throwable getRootCause()
该方法返回引起这个servlet异常的异常,也就是返回根原因的异常。
UnavailableException类:
UnavailableException类是ServletException类的子类,该异常被Servlet抛出,用于向Servlet容器指示这个Servlet永久的或者暂时的不可用。提供了下面2中构造方法和3种实例方法。
·public UnavailableException(java.lang.String msg)
该方法用一个给定的消息构造一个新的异常,指示Servlet永久不可用。
·public UnavailableException(java.lang.String msg,int seconds)
暂时不可用,secondes内不可以用。
·public int getUnavailableSecondes()
该方法返回Servlet预期的暂时不可用的秒数。负数表明永久不可以用或估计不出。
·public boolean isPermanent()
该方法返回一个布尔值,返回true,表明是否永久不可以用。false表示可用或暂时不可用。
未完待续!
servlet 例子见附件。可直接导入到eclipse.
- TServlet.rar (4 KB)
- 描述: servlet 小例子
- 下载次数: 10
发表评论
-
应用OSCache提升J2EE系统运行性能
2009-05-19 11:38 969作者简介 肖菁,软件工程师,IBM developer ... -
ExtJs 关键概念解惑
2009-05-11 09:13 1845l 面板Panel:面板是一块区域,程序员可以 ... -
jmock 单元测试
2009-05-04 11:12 1221JMock是帮助创建mock对象 ... -
基于Tomcat开发Portlet------续
2009-04-03 15:55 1699官方文档说如果使用了“80%9d\j2sdk1.4.1_07\ ... -
基于Tomcat开发Portlet
2009-04-03 15:36 33181. 文档说明 本文基于Tomcat开发Portlet的部分 ... -
xp 安装sqlserver 2000
2008-07-09 09:12 2234为了帮朋友解决在WINDOWS ... -
appfuse 2 下载
2008-05-16 10:32 8678具体步骤: 1、下载jdk,maven,mysql5.x.设 ... -
J2EE 中的安全
2008-04-07 10:09 1348本文所介绍的内容是基于j2ee1.3版本的。 j2ee中的安全 ... -
用过滤器进行权限控制实例 附源码
2008-01-15 13:44 3710用过滤器实现的简单的权限控制 没有登陆的情况下,直接访问登陆页 ... -
过滤器(filter) 例子源码
2008-01-15 09:41 2769最基本的过滤器的应用的源码. 过滤器的相关内容可以查看相关内 ... -
过滤器(filter)在web 中的应用
2008-01-14 18:12 4284过滤器(Filter)在Web开发中的应用: Filter是 ... -
servlet 相关内容 续一
2008-01-14 10:20 1555Servlet 相关内容 续一 Serlvet生命周期: S ... -
XSL(eXtensible Stylesheet Language)------可扩展样式标语
2008-01-11 13:41 1213XSL(eXtensible Stylesheet Langu ... -
使用 Acegi 保护 Java 应用程序: 续三
2008-01-09 13:46 1088本文是 Acegi Security Syster ... -
使用 Acegi 保护 Java 应用程序: 续二
2008-01-09 10:55 1136使用 Acegi 保护 Java 应用程序: 续二 了解了 A ... -
使用 Acegi 保护 Java 应用程序: 续一
2008-01-09 10:26 1245使用 Acegi 保护 Java 应用程序: 续一 Exce ... -
使用 Acegi 保护 Java 应用程序
2008-01-08 17:21 1125第 1 部分: 架构概览和 ... -
使用LookupDispatchAction- -
2007-11-29 10:13 1506org.apache.stru ... -
ForwardAction、IncludeAction、SwitchAction
2007-11-29 10:12 2022发表:2005-5-26 2:37:49 出 ...
相关推荐
这篇博客"Servlet进阶的相关内容"可能深入探讨了Servlet的高级特性和实践应用。由于没有直接提供博客的具体内容,我会根据Servlet的常见进阶主题进行详细的阐述。 1. **Servlet生命周期**:Servlet在服务器启动时...
`SessionServlet.java` 文件名暗示这是一个实现了Servlet接口的类,专门处理与HTTP会话(Session)相关的操作。在Web开发中,会话跟踪是保持用户状态的关键,特别是对于需要用户登录或需要记住用户信息的应用程序。...
以下是对Servlet相关内容的详细说明: 一、Servlet概述 1.1 B/S架构(Browser/Server浏览器-服务器架构) B/S架构是一种基于互联网的软件应用模式,用户通过浏览器进行交互,服务器负责处理请求并返回数据。这种...
在这个“servlet相关的实例(共三个包)第一包”中,我们可以深入理解如何使用Servlet技术来构建实际的应用程序,比如人力资源管理系统。这个压缩包包含源码下载和一个使用JSP(JavaServer Pages)和Servlet实现的人力...
- Servlet是一个Java类,它扩展了Java平台,使得Java可以用来处理Web应用程序中的动态内容。 - 通过实现Servlet接口或继承HttpServlet基类来创建Servlet。 - Web服务器通过Servlet容器(如Tomcat)来加载和运行...
在描述中提到的"全新的servlet相关jar包,值得学习与研究",暗示了这是一个新的版本或者更新,包含了最新的Servlet规范和API。学习和研究Servlet API对于理解Web服务器如何处理HTTP请求,以及如何编写服务端代码来...
在这个压缩包中,我们可能会找到`javax`包,这是Java标准库的一部分,包含了Servlet相关的类和接口。 Servlet API主要包含以下几个核心概念: 1. **Servlet接口**:所有Servlet都必须实现这个接口,它定义了...
在`jsp.txt`文件中,可能包含了关于JSP指令、表达式、脚本元素、动作标签等相关内容的解释。 1. JSP指令:如`<%@ page %>`, `<%@ include %>`, 和`<jsp:directive>`,它们用于配置整个JSP页面或引入其他资源。 2. ...
让我们详细了解一下Servlet及其相关知识。 1. **Servlet概述**: Servlet是一个Java类,它扩展了Java平台的服务能力,特别是对于Web服务器。Servlet可以处理来自客户端的请求,执行业务逻辑,然后生成动态内容返回...
至于压缩包中的"ServletMessage",这可能是项目的源代码文件夹,包含了实现留言板功能的Servlet类、Javabean类以及相关的HTML和JSP文件。在实际开发中,我们可能会看到如`MessageServlet.java`、`MessageBean.java`...
Servlet-API.jar和javax.servlet.jar是Java Web开发中两个至关重要的库文件,它们包含了Servlet和相关API的实现。在深入理解这两个文件之前,我们先要了解Servlet的概念。 Servlet是一种Java类,它扩展了服务器的...
这些方法会从ServletRequest对象中获取请求参数,并通过ServletResponse对象设置响应内容。 ServletConfig对象提供了初始化参数和ServletContext的访问。初始化参数是在Servlet部署描述符(web.xml)中定义的,可供...
"com.oreilly.servlet" 是一个与Java Servlet相关的库,主要由O'Reilly Media公司提供。Servlet是Java编程语言中用于开发动态Web应用程序的核心技术。它允许Java代码响应来自Web客户端(如浏览器)的请求,并生成...
当您在项目中遇到“找不到类”或“类路径异常”与Servlet相关的错误时,可能是因为缺少了这个jar包。 1. **Servlet简介** Servlet是Java中用于扩展服务器功能的接口和类的集合。它们是Java EE的一部分,允许开发者...
在ShoppCar这个子文件中,可能包含了购物车相关的Servlet类、JSP页面、数据库操作代码、甚至可能有专门处理购物车操作的过滤器或监听器。通过对这个文件的深入理解和修改,我们可以完善购物系统的购物车功能,比如...
在实际应用中,Servlet常与JSP(JavaServer Pages)结合使用,提供动态内容生成。Servlet负责处理业务逻辑和数据交互,而JSP则用于展示视图。此外,Servlet还可以配合Filter(过滤器)实现请求和响应的拦截、URL重写...
`SQL文件`可能用于创建数据库表或者填充初始数据,与Servlet项目中的数据存储部分有关,例如用户信息、文章数据等。 通过这个练习项目,学习者可以全面掌握Servlet的使用,包括编写Servlet类、处理HTTP请求、与...