- 浏览: 62524 次
- 性别:
- 来自: 应县
最新评论
-
fc19861011:
请问你解决了吗?poi修改word中生成的图表数据找了好久没发 ...
jacob 怎么改变 word图表的数据呢? -
longgol:
GridPanel中mouseover事件获取列index
...
GridPanel中mouseover事件获取行index
Servlets Filter 是Servlet 2.3 规范中新增加的,它是截取用户从客户端提交的请求,在还没有到达需要访问的资源时运行的一个类。它操纵来自客户端的请求,在资源还没有初发送到客户端前截取响应,并处理这些还没有发送到客户端的响应。
Filters 有许多的应用场合。Servlet 2.3 规范建议如下的地方可以应用Filter:
authentication filters
logging and auditing filters
image conversion filters
data compression filters
encryption filters
tokenizing filters
filters that trigger resource access events
XSL/T filters that transform XML content
MIME-type chain filters
例:
package jasso.web.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
*
* @author
*/
public class SetCharacterEncodingFilter implements Filter {
private String encoding;
/**
* Called by the web container to indicate to a filter that it is being
* taken out of service.
*
* @todo Implement this javax.servlet.Filter method
*/
public void destroy() {
}
/**
* The <code>doFilter</code> method of the Filter is called by the
* container each time a request/response pair is passed through the chain
* due to a client request for a resource at the end of the chain.
*
* @param request
* ServletRequest
* @param response
* ServletResponse
* @param chain
* FilterChain
* @throws IOException
* @throws ServletException
* @todo Implement this javax.servlet.Filter method
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding(encoding);
chain.doFilter(request, response);
}
/**
* @see javax.servlet.Filter#init(FilterConfig)
*/
public void init(FilterConfig config) throws ServletException {
encoding = config.getInitParameter("encoding");
}
}
web.xml部分
......
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>my.web.filter.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>Shift_JIS</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<servlet-name>action</servlet-name>
</filter-mapping>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/config/struts-config.xml,/WEB-INF/config/struts-config-contents.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
----------------------------------------------
javax.servlet.filter的用法
如何实现一个过滤器呢?
1.所在的类实现Filter接口
public interface Filter
public void init(FilterConfig filterConfig)throws ServletException
过滤器初始化是在容器启动时自动初始化
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws IOException,ServletExcepton
在标准Servlet中的doGet或doPost 方法中,传递参数为:HttpServletRequest、HttpServletResponse
过滤器销毁
public void destroy()
package cn.mldn.lxh.filter
import java.io.*;
import javax.servlet.*;
public class FirstFilter implements Filter
{
public void init(FilterConfig config)throws ServletException
{
System.out.println("过滤器初始化");
}
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws IOException,ServletException
{
System.out.println(过滤doFilter);
}
public void destroy()
{
System.out.println(过滤器销毁);
}
}
web.xml文件配置
<filter>
<filter-name> first </filter-name>
<filter-class> cn.mldn.lxh.filter.FirstFilter </filter-class>
</filter>
<filter-mapping>
<filter-name> first </filter-name>
与servlet中的url-pattern不一样,此处表示对那个页面进行过滤,如果全部都过滤,则"/*"
<url-pattern> /* </url-pattern>
</filter-mapping>
如果过滤器要将内容传递到目的地,则需要FilterChain,将请求继续向下转发
过滤器也会执行两次:FilterChain这前执行一次,之后再执行一次
1.过滤非法文字:
package cn.mldn.lxh.filter;
import java.io.*;
import javax.servlet.*;
public class CharFilter implements Filter
{
public void init(FilterConfig filterConfig)throws ServletException
{
//System.out.println("init");
}
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws IOException,ServletException
{
String c.getParameter("content");
//如果indexOf返回-1则表示没有查到所要的内容
if(content!=null)
if(content.indexOf("AAA")==-1)
{
chain.doFilter(request,response);
}
esle
{
System.out.println("有非法文字");
//如果需要的话,此处依然可以使用RequestDispatcher进行跳转
}
}
else
{
chain.doFilter(request,response);
}
}
public void destroy()
{
//System.out.println("过滤器销毁");
}
<filter>
<filter-name> char </filter-name>
<filter-class> cn.mldn.lxh.filter.CharFilter </filter-class>
</filter>
<filter-mapping>
<filter-name> char </filter-name>
<url-pattern> /* </url-pattern>
</filter-mapping>
2.对内容进行统一的编码
setCharacterEncoding("GB2312");
package cn.mldn.lxh.filter;
import java.io.*;
import javax.servlet.*;
public class EncodingFilter implements Filter
{
public void init(FilterConfig filterConfig)throws ServletException
{
//System.out.println("过滤器初始化");
}
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws IOException,ServletException
{
try{
request.setCharacterEncoding("GB2312");
}
catch(Exception e)
{}
chain.doFilter(request,response);
}
public void destroy()
{
//System.out.println("销毁");
}
}
<filter>
<filter-name> encoding </filter-name>
<filter-class> </filter-class>
</filter>
<filter-mapping>
<filter-name> encoding </filter-name>
<url-pattern> /* </url-pattern>
</filter-mapping>
3.登陆验证
package cn.mldn.lxh.filter;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class LoginFilter implements Filter
{
public void init(FilterCoinfig filterConfig)throws ServletException
{
//System.out.println("过滤器初始化");
}
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws IOException,ServletException
{
//Session属于http范畴,把以ServletRequest对象需要先转换成HttpServletRequest对象
HttpServletRequest req=(HttpServletRequest)request;
HttpSession session =req.getSession();
//如果session不为空,则可以浏览其它页面
if(session.getAttribute("uname")!=null)
{
chain.doFilter(request,response);
}
else
{
//通过requestDispatcher跳转到登陆面
request.getRequestDispatcher("login.jsp").forward(request,response);
}
}
public void destroy()
{
//System,out.println("销毁");
}
}
<filter>
<filter-name> login </filter-name>
<filter-class> cn.mldn.lxh.filter.LoginFilter </filter-class>
<init-param>
<param-name> 参数名称 </param-name>
<param-value> 参数值 </param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name> login </filter-name>
<url-pattern> /* </url-pattern>
</filter-mapping>
读取web.xml中的参数的方法:
public void init(FilterConfig arg0) throws ServletException {
String 参数值= arg0.getInitParameter("参数名称");
}
Filters 有许多的应用场合。Servlet 2.3 规范建议如下的地方可以应用Filter:
authentication filters
logging and auditing filters
image conversion filters
data compression filters
encryption filters
tokenizing filters
filters that trigger resource access events
XSL/T filters that transform XML content
MIME-type chain filters
例:
package jasso.web.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
*
* @author
*/
public class SetCharacterEncodingFilter implements Filter {
private String encoding;
/**
* Called by the web container to indicate to a filter that it is being
* taken out of service.
*
* @todo Implement this javax.servlet.Filter method
*/
public void destroy() {
}
/**
* The <code>doFilter</code> method of the Filter is called by the
* container each time a request/response pair is passed through the chain
* due to a client request for a resource at the end of the chain.
*
* @param request
* ServletRequest
* @param response
* ServletResponse
* @param chain
* FilterChain
* @throws IOException
* @throws ServletException
* @todo Implement this javax.servlet.Filter method
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding(encoding);
chain.doFilter(request, response);
}
/**
* @see javax.servlet.Filter#init(FilterConfig)
*/
public void init(FilterConfig config) throws ServletException {
encoding = config.getInitParameter("encoding");
}
}
web.xml部分
......
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>my.web.filter.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>Shift_JIS</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<servlet-name>action</servlet-name>
</filter-mapping>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/config/struts-config.xml,/WEB-INF/config/struts-config-contents.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
----------------------------------------------
javax.servlet.filter的用法
如何实现一个过滤器呢?
1.所在的类实现Filter接口
public interface Filter
public void init(FilterConfig filterConfig)throws ServletException
过滤器初始化是在容器启动时自动初始化
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws IOException,ServletExcepton
在标准Servlet中的doGet或doPost 方法中,传递参数为:HttpServletRequest、HttpServletResponse
过滤器销毁
public void destroy()
package cn.mldn.lxh.filter
import java.io.*;
import javax.servlet.*;
public class FirstFilter implements Filter
{
public void init(FilterConfig config)throws ServletException
{
System.out.println("过滤器初始化");
}
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws IOException,ServletException
{
System.out.println(过滤doFilter);
}
public void destroy()
{
System.out.println(过滤器销毁);
}
}
web.xml文件配置
<filter>
<filter-name> first </filter-name>
<filter-class> cn.mldn.lxh.filter.FirstFilter </filter-class>
</filter>
<filter-mapping>
<filter-name> first </filter-name>
与servlet中的url-pattern不一样,此处表示对那个页面进行过滤,如果全部都过滤,则"/*"
<url-pattern> /* </url-pattern>
</filter-mapping>
如果过滤器要将内容传递到目的地,则需要FilterChain,将请求继续向下转发
过滤器也会执行两次:FilterChain这前执行一次,之后再执行一次
1.过滤非法文字:
package cn.mldn.lxh.filter;
import java.io.*;
import javax.servlet.*;
public class CharFilter implements Filter
{
public void init(FilterConfig filterConfig)throws ServletException
{
//System.out.println("init");
}
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws IOException,ServletException
{
String c.getParameter("content");
//如果indexOf返回-1则表示没有查到所要的内容
if(content!=null)
if(content.indexOf("AAA")==-1)
{
chain.doFilter(request,response);
}
esle
{
System.out.println("有非法文字");
//如果需要的话,此处依然可以使用RequestDispatcher进行跳转
}
}
else
{
chain.doFilter(request,response);
}
}
public void destroy()
{
//System.out.println("过滤器销毁");
}
<filter>
<filter-name> char </filter-name>
<filter-class> cn.mldn.lxh.filter.CharFilter </filter-class>
</filter>
<filter-mapping>
<filter-name> char </filter-name>
<url-pattern> /* </url-pattern>
</filter-mapping>
2.对内容进行统一的编码
setCharacterEncoding("GB2312");
package cn.mldn.lxh.filter;
import java.io.*;
import javax.servlet.*;
public class EncodingFilter implements Filter
{
public void init(FilterConfig filterConfig)throws ServletException
{
//System.out.println("过滤器初始化");
}
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws IOException,ServletException
{
try{
request.setCharacterEncoding("GB2312");
}
catch(Exception e)
{}
chain.doFilter(request,response);
}
public void destroy()
{
//System.out.println("销毁");
}
}
<filter>
<filter-name> encoding </filter-name>
<filter-class> </filter-class>
</filter>
<filter-mapping>
<filter-name> encoding </filter-name>
<url-pattern> /* </url-pattern>
</filter-mapping>
3.登陆验证
package cn.mldn.lxh.filter;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class LoginFilter implements Filter
{
public void init(FilterCoinfig filterConfig)throws ServletException
{
//System.out.println("过滤器初始化");
}
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws IOException,ServletException
{
//Session属于http范畴,把以ServletRequest对象需要先转换成HttpServletRequest对象
HttpServletRequest req=(HttpServletRequest)request;
HttpSession session =req.getSession();
//如果session不为空,则可以浏览其它页面
if(session.getAttribute("uname")!=null)
{
chain.doFilter(request,response);
}
else
{
//通过requestDispatcher跳转到登陆面
request.getRequestDispatcher("login.jsp").forward(request,response);
}
}
public void destroy()
{
//System,out.println("销毁");
}
}
<filter>
<filter-name> login </filter-name>
<filter-class> cn.mldn.lxh.filter.LoginFilter </filter-class>
<init-param>
<param-name> 参数名称 </param-name>
<param-value> 参数值 </param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name> login </filter-name>
<url-pattern> /* </url-pattern>
</filter-mapping>
读取web.xml中的参数的方法:
public void init(FilterConfig arg0) throws ServletException {
String 参数值= arg0.getInitParameter("参数名称");
}
发表评论
-
Tomcat集群与负载均衡
2011-01-26 16:00 612在单一的服务器上执行W ... -
xalan-2.7.0.jar下载地址
2011-01-26 15:59 3203xalan-2.7.0.jar下载地址:http://svn. ... -
provider org.apache.xalan.processor.TransformerFactoryImpl not found
2011-01-26 15:58 984完整的Exception: Exception startin ... -
Apache与Tomcat整合的简单方法
2011-01-26 15:57 6961、准备,下载需要的文件。这里假定你已经正确安装配置好了JDK ... -
(转)Tomcat源码学习(一)
2011-01-26 15:57 619Tomcat源码学习(一) http://carllgc.bl ... -
Tomat源码学习(二) [图片]
2011-01-26 15:55 746Tomat源码学习(二) Tomat6的整体架构 在上篇文 ... -
Tomat6架构探讨(续)
2011-01-26 15:54 737Tomat源码学习(二) 下面,我们重点针对Catalin ... -
JNDI
2011-01-26 15:49 739Java术语 英文全称是:Java ... -
JSP内建对象- - 转
2011-01-26 15:48 589① out - javax.servlet.jsp.jspWr ... -
全面理解String(JAVA复习)- -
2011-01-26 15:48 6101. 首先String不属 ... -
初学者如何开发出高质量的J2EE系统 (转载)
2011-01-26 15:47 725J2EE学习者越来越多,J2E ... -
关于JSP中的taglib uri
2011-01-26 15:47 1025自定义标签在jsp中应用是需要声明标签库,有下面两种方式: 1 ... -
context-param和init-param区别
2011-01-26 15:46 478web.xml里面可以定义两种参数: (1)applicati ... -
javax.servlet.FilterChain
2011-01-26 15:45 995javax.servlet Interface Filter ... -
引用 五个有用的过滤器 Filter
2011-01-26 15:45 644引用 xyz 的 五个有用的过滤器 Filter 来源:htt ... -
spring:简单的属性参考
2011-01-26 15:43 574在定义文件(XML配置文件)中定义Bean时,可以直接指定一个 ... -
spring:Inversion of Control具体实现【资料搜集】
2011-01-26 15:42 632IoC(Inversion of Control)控制反转的具 ... -
学习Spring前必须了解的几点【资料搜集】
2011-01-26 15:42 891轻量级(Lightweight) 轻量级的形容是相对于 ... -
struts2:主题: Interceptor在Struts2中的应用... [图片]
2011-01-26 15:41 711Interceptor(拦截器)将Action共用的行为独立出 ... -
struts2配置文件介绍
2011-01-26 15:40 666一、Struts2配置文件 Struts2相关的配置文件有w ...
相关推荐
当你遇到“找不到javax.servlet.*”这样的错误时,通常是因为你的项目缺少了这个库,所以需要引入`javax.servlet.jar`来解决问题。 1. **Java Servlet简介** Java Servlet是Java平台上的一个标准,用于扩展服务器...
javax.servlet.Filter.class javax.servlet.FilterConfig.class javax.servlet.ServletRequestAttributeListener.class javax.servlet.ServletRequestAttributeEvent.class javax.servlet.GenericServlet.class ...
自Servlet 3.0开始,Servlet API引入了一些新的特性,比如注解驱动的Servlet和Filter注册,异步处理能力等。如果需要这些新特性,需要确保使用的`javax.servlet.jar`对应的是Servlet 3.0及更高版本。 7. **JAR包...
它包含了一些基本的Servlet和Filter接口,如`Servlet`, `GenericServlet`, `HttpServlet`, `Filter`, `ServletConfig`等。虽然3.1版本提供了更多高级功能,但2.5版本仍被许多老项目和不支持新规范的服务器使用。 3....
开发者可以通过实现`javax.servlet.Filter`接口来创建过滤器,并通过`web.xml`部署描述符配置过滤规则。 Listener则是在特定事件发生时被调用的类,比如session创建、销毁或请求初始化等。它们通过实现不同的监听器...
6. `javax.servlet.annotation`包:包含了各种注解,比如`@WebServlet`、`@WebFilter`和`@WebListener`,使得开发者可以通过注解方式声明Servlet、过滤器和监听器,简化了web.xml配置文件的编写。 7. `javax....
【标题】"javax.servlet3.0 javax.servlet_jsp2.0源码"涉及的是Java Servlet和JSP(JavaServer Pages)技术的核心API,这两个组件是Java Web开发的基础。源码分析可以帮助我们深入理解它们的工作原理。 【描述】...
`javax.servlet` 包还包含了Filter和Listener接口。Filters可以在请求到达Servlet之前对其进行预处理,或在响应发送给客户端之后进行后处理。Listeners可以监听Servlet、Session和ServletContext事件,实现特定的...
9. **Filter**: Filter是javax.servlet.filter包中的接口,用于在Servlet处理请求之前或之后进行拦截和修改。这可以用于登录验证、数据转换、日志记录等功能。多个Filter可以通过配置进行链式调用。 10. **...
javax.servlet 是Java编程语言中用于构建Web应用程序的标准API,它定义了服务器端Servlet和过滤器的接口和类。Servlet是一种Java程序,它可以接收并响应来自Web客户端(如浏览器)的请求,而过滤器则允许在请求处理...
8. **过滤器Filter**:Servlet API还定义了Filter接口,允许在请求到达Servlet之前进行拦截和处理,比如登录检查、数据转换等。 9. **监听器Listener**:Servlet API提供了各种监听器,如SessionListener、...
1. **注解配置**:在Servlet 3.0中,开发者可以直接在类或方法上使用注解(如`@WebServlet`、`@WebFilter`和`@WebListener`)来声明Servlet、过滤器和监听器,而无需在web.xml文件中进行繁琐的手动配置。 2. **异步...
`javax.servlet-api`是一个关键的Java库,它定义了Servlet、过滤器(Filter)和监听器(Listener)等核心接口,是开发Java Servlet应用的基础。这个库通常以JAR(Java Archive)文件的形式存在,例如在提供的`javax....
例如,`javax.servlet.ServletRequest`和`javax.servlet.ServletResponse`接口分别代表了HTTP请求和响应对象,而`javax.servlet.Filter`接口则用于实现请求过滤功能,可以用于数据验证、性能优化等场景。 在Java ...
7. **Filter**: 这个接口定义了过滤器,允许你在请求到达Servlet之前对其进行拦截和处理,或者在响应离开Servlet之后进行修改。这对于实现登录检查、日志记录、性能监控等任务非常有用。 8. **FilterChain**: 过滤...
`javax.servlet` 是Java服务器端编程的一个重要组件,主要用于创建Web应用程序。这个API提供了一系列接口和类,使得开发者能够处理HTTP请求和响应,构建动态、交互式的Web服务。本资源包含两个版本的`javax.servlet`...
这个包包含了Servlet API中的所有类和接口,如`ServletRequest`、`ServletResponse`、`Filter`等。通过查看这些源代码,我们可以了解这些核心类和接口的实现细节,从而提高我们的编程技能和解决问题的能力。 总的来...
6. **Filter**:`javax.servlet.Filter`接口定义了过滤器,允许开发者在请求到达Servlet之前对其进行拦截和处理。过滤器常用于权限控制、日志记录、数据转换等场景。 7. **FilterChain**:`javax.servlet....
`javax.servlet`库还包括了`Filter`和`Listener`的概念,这些是实现Web应用拦截和监听功能的重要接口。例如,`Filter`可以用来进行请求的预处理和后处理,如登录验证、GZIP压缩等;`Listener`则可以监听特定的Web...
1. **Servlet API**: `javax.servlet` 包含了Servlet和Filter的核心接口和类,如`Servlet`, `GenericServlet`, `HttpServlet`, `ServletConfig`, `ServletContext`等。`Servlet`是所有Servlet类的抽象基类,`...