`
Luob.
  • 浏览: 1592253 次
  • 来自: 上海
社区版块
存档分类
最新评论

Servlet3.0 Filter

    博客分类:
  • JSP
阅读更多
package com.lee;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

/*
 * 
 *  <filter>
 		<filter-name>log</filter-name>
 		<filter-class>com.lee.LogFilter</filter-class>
 	</filter>
 	<filter-mapping>
 		<filter-name>log</filter-name>
 		<url-pattern>/user/*</url-pattern>
 	</filter-mapping>
 
属性                                                是否必须                              说明
asyncSupported        否				 该Filter是否支持异步操作模式
dispatcherType        否    			 指定Filter对那种dispatcher模式进行过滤 该属性支持 Async,Error Forward,include,request 
displayName           否				 File 显示的名称
filterName            是				Filter的名称
initParams		                 否				Filter的配置参数
servletNames          否                                  可以指定多个,表示对这几个特定的的serlet 进行过滤
urlPatterns/value     否 				指定 Filter拦截的 URL
       
 	
 	
 
@WebFilter(filterName="log",urlPatterns={"/*"})*/
public class LogFilter implements Filter {

	private FilterConfig config;
	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		this.config=null;
	}

	@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1,
			FilterChain chain) throws IOException, ServletException {
		// TODO Auto-generated method stub
		ServletContext context= this.config.getServletContext();
		
		long before=System.currentTimeMillis();
		System.out.println("开始过滤");
		//HttpServletRequestWrapper hrequest=(HttpServletRequestWrapper)arg1;
		
		HttpServletRequest hrequest=(HttpServletRequest)arg0;
		System.out.println("Filter 已经获取到了用户请求的地址:"+hrequest.getServletPath());
		chain.doFilter(arg0, arg1);
		long after=System.currentTimeMillis();
		System.out.println("过滤结束");
		System.out.println("请求被定位到"+hrequest.getRequestURI()+" 所花的时间为:"+(after-before));
		
		
	}

	@Override
	public void init(FilterConfig config) throws ServletException {
		// TODO Auto-generated method stub
		this.config=config;
	}

}

package com.lee;

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;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpSession;

/*
@WebFilter(
		filterName="authority",
		urlPatterns={"/*"},
		initParams={
				@WebInitParam(name="encoding",value="UTF-8"),
				@WebInitParam(name="loginPage",value="/getPostParam.jsp"),
				@WebInitParam(name="proLogin",value="/proLog.jsp")
		}
		)*/
public class AuthorityFilter implements Filter {

	private FilterConfig config;
	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		config=null;
	}

	@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1,
			FilterChain arg2) throws IOException, ServletException {
		// TODO Auto-generated method stub
		String encoding=config.getInitParameter("encoding");
		String loginPage=config.getInitParameter("loginPage");
		String proLogin=config.getInitParameter("proLogin");
		arg0.setCharacterEncoding(encoding);
		
		HttpServletRequest  request=(HttpServletRequest)arg0;
		HttpSession session=request.getSession(true);
		String requestPath=request.getServletPath();
		if(session.getAttribute("user")==null
				&& !requestPath.endsWith(loginPage)
				&& !requestPath.endsWith(proLogin)){
			request.setAttribute("tip", "您还没有登录");
			request.getRequestDispatcher(loginPage).forward(arg0, arg1);
		}else{
			arg2.doFilter(arg0, arg1);		
		}
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		this.config=arg0;
	}

}

分享到:
评论

相关推荐

    Servlet3.0参考手册

    Servlet3.0引入了注解,允许开发者直接在类或方法上使用`@WebServlet`、`@WebFilter`和`@WebListener`注解来声明它们,使得代码更加简洁,也更易于维护。 其次,Servlet3.0引入了异步处理能力。通过实现`...

    servlet3.0.jar下载

    这个"javax.servlet-api-3.0.1.jar"文件是Servlet 3.0规范的API实现,包含了开发人员编写Servlet和Filter所需的类和接口。以下是对Servlet 3.0主要特性的详细介绍: 1. **注解驱动的配置**:在Servlet 3.0中,...

    servlet 3.0 jar 包综合下载

    下载的`servlet3.0jar综合`压缩包包含了实现这些特性的关键库,对于进行Java EE 3.0开发的程序员来说是必不可少的工具。在实际开发中,结合相关的框架(如Spring MVC)和其他Java EE组件,可以构建出功能强大、易...

    servlet3.0 jar包和doc

    1. **注解驱动的配置**:Servlet3.0引入了注解(Annotation),使得开发者可以在类或方法级别直接声明Servlet、Filter和Listener,无需在web.xml中进行繁琐的手动配置。例如,你可以使用`@WebServlet`、`@WebFilter`...

    Servlet 3.0jar包和source包

    而Servlet 3.0允许使用注解(如`@WebServlet`,`@WebFilter`)直接在类上声明,简化了配置过程。 2. **异步处理**:Servlet 3.0引入了异步处理能力,允许Servlet在处理请求时启动一个后台线程,从而提高服务器性能...

    servlet3.0 规范pdf 包含javadoc

    2. **注解驱动的配置**:相比于之前的版本,Servlet 3.0允许使用注解来配置Servlet、Filter和Listener,无需在web.xml中进行繁琐的XML配置。例如,`@WebServlet`、`@WebFilter`和`@WebListener`注解分别用于声明...

    servlet3.0.zip

    这个压缩包“servlet3.0.zip”包含两个核心的JAR文件:“javax.servlet-javadoc.jar”和“javax.servlet.jar”,它们分别提供了Servlet API的文档和实现。 1. **Servlet API**: - `javax.servlet`包是Servlet API...

    Jsp/Servlet3.0 ppt和代码

    【标题】"Jsp/Servlet3.0 ppt和代码"涉及的是Java服务器页面(JSP)和Servlet 3.0版本的关键技术。JSP是一种动态网页技术,它允许开发者将HTML代码与Java代码混合编写,从而实现服务器端的动态内容生成。而Servlet是...

    maven servlet 3.0 eclipse config video

    【标题】"maven servlet 3.0 eclipse config video" 提供的是关于如何在Eclipse集成开发环境中配置Maven和Servlet 3.0的视频教程。这个教程旨在帮助开发者了解和掌握如何有效地利用Maven构建Java Web项目,并利用...

    Servlet3.0特性详解

    在Servlet3.0中,我们可以使用注解(@WebServlet、@WebFilter、@WebListener)来替代web.xml中的XML配置,使得部署更简洁。例如,`@WebServlet("/example")`可以直接在Servlet类上声明URL映射。 2. **异步处理**:...

    Servlet3.0新特性解析

    而在Servlet3.0中,我们可以通过`@WebFilter`注解来直接定义过滤器,指定其过滤的URL模式、DispatcherType等。这样,过滤器的配置就更加灵活和直观。 下面是一个使用注解声明的过滤器示例: ```java @WebFilter...

    servlet3.0相关的包

    Servlet3.0是Java Web开发中的一个重要里程碑,它在Servlet2.5的基础上引入了许多新特性,极大地提高了开发效率和灵活性。在这个"Servlet3.0相关的包"中,包含了以下几个关键组件: 1. **Servlet**: 这是Java ...

    servlet3.0

    在Servlet 3.0中,开发者可以通过注解(@WebServlet、@WebFilter、@WebListener)来声明Servlet、Filter和Listener,无需再在web.xml中进行繁琐的XML配置。这简化了部署描述符的编写,提高了代码的可读性和可维护性。...

    Servlet3.0 新特性

    在Servlet3.0之前,我们通常通过web.xml文件来配置Servlet、Filter和Listener。Servlet3.0引入了注解支持,允许开发者直接在类上声明这些组件,例如`@WebServlet`、`@WebFilter`和`@WebListener`,简化了部署描述符...

    Servlet3.0 Demo

    Servlet3.0是Java Web开发中的一个重要里程碑,它在Servlet2.5的基础上引入了许多新特性,极大地提高了开发效率和灵活性。在这个"Servlet3.0 Demo"项目中,我们可以看到一个典型的使用Servlet3.0特性的示例。以下是...

    Servlet 3.0 - Apache Tomcat 7.0.61

    1. 注解支持:Servlet 3.0引入了注解(Annotation)来声明Servlet、Filter和Listener,避免了XML配置文件的繁琐。例如,`@WebServlet`、`@WebFilter`和`@WebListener`可以直接在类上声明,简化了部署过程。 2. 异步...

    servlet 3.0新增功能详解

    Servlet 3.0 还增加了对注解的支持,这为简化 Servlet、过滤器(Filter)和监听器(Listener)的声明提供了便利。在之前的版本中,Servlet、过滤器和监听器都需要在 web.xml 文件中进行声明式配置,而在 Servlet 3.0 中...

    servlet3.0的学习(二)

    过滤器在Servlet 3.0中也得到了加强,我们可以使用`@WebFilter`注解来声明过滤器,同时可以通过`@FilterMapping`来指定过滤器的URL模式。过滤器链的控制也更加灵活,可以实现动态过滤器的注册和执行顺序的控制。 ...

    Servlet3.0

    Servlet3.0是Java EE平台中的一个重要里程碑,它在Servlet规范上引入了许多创新特性,极大地提高了Web应用的开发效率和性能。在这个版本中,重点强调了异步处理和反向Ajax的支持,这两个特性使得Web应用能够更加高效...

    Servlet 3.0 API - Apache Tomcat 7.0.41

    8. **过滤器链的改进**:Servlet 3.0允许在同一个Filter中匹配多个URL模式,过滤器链的控制也更加灵活,可以使用`doFilter(ServletRequest, ServletResponse, FilterChain)`方法的参数控制过滤器执行流程。...

Global site tag (gtag.js) - Google Analytics