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引入了注解,允许开发者直接在类或方法上使用`@WebServlet`、`@WebFilter`和`@WebListener`注解来声明它们,使得代码更加简洁,也更易于维护。 其次,Servlet3.0引入了异步处理能力。通过实现`...
这个"javax.servlet-api-3.0.1.jar"文件是Servlet 3.0规范的API实现,包含了开发人员编写Servlet和Filter所需的类和接口。以下是对Servlet 3.0主要特性的详细介绍: 1. **注解驱动的配置**:在Servlet 3.0中,...
下载的`servlet3.0jar综合`压缩包包含了实现这些特性的关键库,对于进行Java EE 3.0开发的程序员来说是必不可少的工具。在实际开发中,结合相关的框架(如Spring MVC)和其他Java EE组件,可以构建出功能强大、易...
1. **注解驱动的配置**:Servlet3.0引入了注解(Annotation),使得开发者可以在类或方法级别直接声明Servlet、Filter和Listener,无需在web.xml中进行繁琐的手动配置。例如,你可以使用`@WebServlet`、`@WebFilter`...
而Servlet 3.0允许使用注解(如`@WebServlet`,`@WebFilter`)直接在类上声明,简化了配置过程。 2. **异步处理**:Servlet 3.0引入了异步处理能力,允许Servlet在处理请求时启动一个后台线程,从而提高服务器性能...
2. **注解驱动的配置**:相比于之前的版本,Servlet 3.0允许使用注解来配置Servlet、Filter和Listener,无需在web.xml中进行繁琐的XML配置。例如,`@WebServlet`、`@WebFilter`和`@WebListener`注解分别用于声明...
这个压缩包“servlet3.0.zip”包含两个核心的JAR文件:“javax.servlet-javadoc.jar”和“javax.servlet.jar”,它们分别提供了Servlet API的文档和实现。 1. **Servlet API**: - `javax.servlet`包是Servlet API...
【标题】"Jsp/Servlet3.0 ppt和代码"涉及的是Java服务器页面(JSP)和Servlet 3.0版本的关键技术。JSP是一种动态网页技术,它允许开发者将HTML代码与Java代码混合编写,从而实现服务器端的动态内容生成。而Servlet是...
【标题】"maven servlet 3.0 eclipse config video" 提供的是关于如何在Eclipse集成开发环境中配置Maven和Servlet 3.0的视频教程。这个教程旨在帮助开发者了解和掌握如何有效地利用Maven构建Java Web项目,并利用...
在Servlet3.0中,我们可以使用注解(@WebServlet、@WebFilter、@WebListener)来替代web.xml中的XML配置,使得部署更简洁。例如,`@WebServlet("/example")`可以直接在Servlet类上声明URL映射。 2. **异步处理**:...
而在Servlet3.0中,我们可以通过`@WebFilter`注解来直接定义过滤器,指定其过滤的URL模式、DispatcherType等。这样,过滤器的配置就更加灵活和直观。 下面是一个使用注解声明的过滤器示例: ```java @WebFilter...
Servlet3.0是Java Web开发中的一个重要里程碑,它在Servlet2.5的基础上引入了许多新特性,极大地提高了开发效率和灵活性。在这个"Servlet3.0相关的包"中,包含了以下几个关键组件: 1. **Servlet**: 这是Java ...
在Servlet 3.0中,开发者可以通过注解(@WebServlet、@WebFilter、@WebListener)来声明Servlet、Filter和Listener,无需再在web.xml中进行繁琐的XML配置。这简化了部署描述符的编写,提高了代码的可读性和可维护性。...
在Servlet3.0之前,我们通常通过web.xml文件来配置Servlet、Filter和Listener。Servlet3.0引入了注解支持,允许开发者直接在类上声明这些组件,例如`@WebServlet`、`@WebFilter`和`@WebListener`,简化了部署描述符...
Servlet3.0是Java Web开发中的一个重要里程碑,它在Servlet2.5的基础上引入了许多新特性,极大地提高了开发效率和灵活性。在这个"Servlet3.0 Demo"项目中,我们可以看到一个典型的使用Servlet3.0特性的示例。以下是...
1. 注解支持:Servlet 3.0引入了注解(Annotation)来声明Servlet、Filter和Listener,避免了XML配置文件的繁琐。例如,`@WebServlet`、`@WebFilter`和`@WebListener`可以直接在类上声明,简化了部署过程。 2. 异步...
Servlet 3.0 还增加了对注解的支持,这为简化 Servlet、过滤器(Filter)和监听器(Listener)的声明提供了便利。在之前的版本中,Servlet、过滤器和监听器都需要在 web.xml 文件中进行声明式配置,而在 Servlet 3.0 中...
过滤器在Servlet 3.0中也得到了加强,我们可以使用`@WebFilter`注解来声明过滤器,同时可以通过`@FilterMapping`来指定过滤器的URL模式。过滤器链的控制也更加灵活,可以实现动态过滤器的注册和执行顺序的控制。 ...
Servlet3.0是Java EE平台中的一个重要里程碑,它在Servlet规范上引入了许多创新特性,极大地提高了Web应用的开发效率和性能。在这个版本中,重点强调了异步处理和反向Ajax的支持,这两个特性使得Web应用能够更加高效...
8. **过滤器链的改进**:Servlet 3.0允许在同一个Filter中匹配多个URL模式,过滤器链的控制也更加灵活,可以使用`doFilter(ServletRequest, ServletResponse, FilterChain)`方法的参数控制过滤器执行流程。...