过滤器:两个非常有用的过滤器
来源:互联网 发布:nginx 模块初始化 编辑:程序博客网 时间:2024/05/10 12:22
LoginFilter.java:import javax.servlet.FilterChain;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.ServletException;import javax.servlet.FilterConfig;/* * * @author Ace * web.xml配置如下: * <filter> * <filter-name>login</filter-name> * <filter-class> * org.waityou.news.util.filters.LoginFilter * </filter-class> * </filter> * <filter-mapping> * <filter-name>login</filter-name> * <url-pattern>/manager/*</url-pattern> * </filter-mapping> */public class LoginFilter implements Filter { protected FilterConfig filterConfig; public void doFilter(final ServletRequest req, final ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest hreq = (HttpServletRequest) req; HttpServletResponse hres = (HttpServletResponse) res; String isLog = (String) hreq.getSession().getAttribute("isLog"); if ((isLog != null) && ((isLog.equals("true")) || (isLog == "true")))//检查是否登录 { chain.doFilter(req, res); return; } else hres.sendRedirect("/error.html");//如果没有登录,把视图派发到登录页面 } public void destroy() { this.filterConfig = null; } public void init(FilterConfig config) { this.filterConfig = config; } public void setFilterConfig(final FilterConfig filterConfig) { this.filterConfig = filterConfig; }}SetCharacterEncodingFilter.java: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 Ace 编码过滤,一律设置成UTF-8 * * web.xml中配置如下: * <filter> * <filter-name>Set Character Encoding</filter-name> * <filter-class> * org.waityou.news.util.filters.SetCharacterEncodingFilter * </filter-class> * </filter> * <filter-mapping> * <filter-name>Set Character Encoding</filter-name> * <url-pattern>/*</url-pattern> * </filter-mapping> */public class SetCharacterEncodingFilter implements Filter { public void destroy() {} public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding("UTF-8"); // 传递控制到下一个过滤器 chain.doFilter(request, response); } public void init(FilterConfig filterConfig) throws ServletException {}}LoginFilter.java:import javax.servlet.FilterChain;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.ServletException;import javax.servlet.FilterConfig;/* * * @author Ace * web.xml配置如下: * <filter> * <filter-name>login</filter-name> * <filter-class> * org.waityou.news.util.filters.LoginFilter * </filter-class> * </filter> * <filter-mapping> * <filter-name>login</filter-name> * <url-pattern>/manager/*</url-pattern> * </filter-mapping> */public class LoginFilter implements Filter { protected FilterConfig filterConfig; public void doFilter(final ServletRequest req, final ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest hreq = (HttpServletRequest) req; HttpServletResponse hres = (HttpServletResponse) res; String isLog = (String) hreq.getSession().getAttribute("isLog"); if ((isLog != null) && ((isLog.equals("true")) || (isLog == "true")))//检查是否登录 { chain.doFilter(req, res); return; } else hres.sendRedirect("/error.html");//如果没有登录,把视图派发到登录页面 } public void destroy() { this.filterConfig = null; } public void init(FilterConfig config) { this.filterConfig = config; } public void setFilterConfig(final FilterConfig filterConfig) { this.filterConfig = filterConfig; }}SetCharacterEncodingFilter.java: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 Ace 编码过滤,一律设置成UTF-8 * * web.xml中配置如下: * <filter> * <filter-name>Set Character Encoding</filter-name> * <filter-class> * org.waityou.news.util.filters.SetCharacterEncodingFilter * </filter-class> * </filter> * <filter-mapping> * <filter-name>Set Character Encoding</filter-name> * <url-pattern>/*</url-pattern> * </filter-mapping> */public class SetCharacterEncodingFilter implements Filter { public void destroy() {} public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding("UTF-8"); // 传递控制到下一个过滤器 chain.doFilter(request, response); } public void init(FilterConfig filterConfig) throws ServletException {}}