|
1. 简介
- 过滤器能够在Servlet、JSP或HTML等web组件被调用之前检查ServletRequest对象,修改请求头和请求正文的内容或者对请求进行预处理操作
- 能够在Servlet、JSP或HTML等web组件被调用之后检查ServletReponse对象,修改响应头和响应正文。
- 利用包装类ServletRequestWrapper和ServletResponseWrapper来修改ServletRequest对象和ServletResponse对象。
2.如何创建过滤器?
必须实现javax.servlet.Filter接口。
init(FilterConfig config) :过滤器初始化方法。 Web 应用启动时, Servlet 容器首先创建 FilterConfig 对象(包含过滤器配置信息),然后创建 Filter 对象,接着调用 Filter 对象的 init(FilterConfig config) 方法,读取 web.xml 中的配置参数。
public class LoginFilter implements Filter{
private FilterConfig config;
private String username;
@Override
public void destroy() {
this.config = null;
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
ServletException {
//HttpServletRequest httpRequest = (HttpServletRequest)request;
HttpServletResponse httpResponse = (HttpServletResponse)response;
System.out.println("登录过滤器验证");
if(StringUtils.equalsIgnoreCase(username, "flyer")){
System.out.println("验证通过");
chain.doFilter(request, response);
}else {
System.out.println("验证被拦截");
httpResponse.sendRedirect("login.jsp");
}
}
@Override
public void init(FilterConfig config) throws ServletException {
this.config = config;
username = config.getInitParameter("username");
}
}
web.xml 中添加过滤器配置
Xml代码
- <filter>
- <filter-name>loginFilter</filter-name>
- <filter-class>com.flyer.filter.LoginFilter</filter-class>
- <init-param>
- <param-name>username</param-name>
- <param-value>flyer</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>loginFilter</filter-name>
- <url-pattern>
- /*
- </url-pattern>
- </filter-mapping>
web 开发中常用的字符集编码过滤器
Xml代码
- <filter>
- <filter-name>encodingFilter</filter-name>
- <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
- <init-param>
- <param-name>encoding</param-name>
- <param-value>
- UTF-8
- </param-value>
- </init-param>
- </filter>
- <!-- 过滤器能为所有的url过滤 -->
- <filter-mapping>
- <filter-name>encodingFilter</filter-name>
- <url-pattern>
- /*
- </url-pattern>
- </filter-mapping>
补充:Servlet监听器 类似与Swing界面应用开发,Servlet也可以创建监听器,以对Servlet容器,或Servlet中以象的事件做出反应。Servlet监听器主要有以下几种: ServletRequestListener ,ServletRequestAttributeListener, HttpSessionActivationListener ,HttpSessionBindingListener , HttpSessionAttributeListener,HttpSessionListener, ServletContextListener等等。 这些监听器主要用来监听session,request,application这三个对象里存取数据的变化。
|
|
|