首页 > 代码库 > 过滤器
过滤器
过滤器就是在请求处理之前,对URL 进行判断,在这里可以进行权限的过滤,将不具有权限访问的用户过滤掉,但是经常我们也可以使用拦截器进行类似的操作,其实过滤器和拦截器的区别挺大的。
我在这里只从一点说明。
过滤器是配置在web.xml中的,配置在web.xml中的一般是全局的,往往只是被初始化一次,而此后一直就会不断的调用其里面的doFilter方法和Servlet在这点上很类似。
而拦截器是配置在struts的配置文件中的,它可以初始化很多次。只要有符合的请求,它就创建。
拦截器
package com.baitw.struts.utils;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.http.Cookie;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;/** * * 权限过滤器 * * */public class AuthorityFilter implements Filter { private FilterConfig config; //过滤器核心方法 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub //获取Filter配置参数 String encoding=config.getInitParameter("encoding"); String loginPage=config.getInitParameter("loginPage"); String proLogin=config.getInitParameter("proLogin"); //设置request编码 request.setCharacterEncoding(encoding); HttpServletRequest requ=(HttpServletRequest) request; HttpSession session=requ.getSession(true); //获取客户请求页面 String requestPath=requ.getServletPath(); /* //获取cookie Cookie[] cookies=requ.getCookies(); Cookie c=cookies[0]; String val=c.getValue(); */ /** * 如果session范围内的user为null,即表明没有登录 * 且用户请求的既不是登录页面,也不是处理登录页面 * */ if(session.getAttribute("username")==null &&!requestPath.endsWith(loginPage) &&!requestPath.endsWith(proLogin) ){ System.out.println("权限拦截器的消息:"+"终止"); request.getRequestDispatcher(loginPage) .forward(request, response); }else{ System.out.println("权限拦截器的消息:"+"放行"); chain.doFilter(request, response); } } public void init(FilterConfig config) throws ServletException { // TODO Auto-generated method stub this.config=config; } public void destroy() { // TODO Auto-generated method stub this.config=null; }}
<!-- 权限拦截器 --> <filter> <filter-name>authority</filter-name> <filter-class>com.baitw.struts.utils.AuthorityFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </init-param> <init-param> <param-name>loginPage</param-name> <param-value>/view/login.jsp</param-value> </init-param> <init-param> <param-name>proLogin</param-name> <param-value>/view/admin/main.jsp</param-value> </init-param> </filter> <filter-mapping> <filter-name>authority</filter-name> <url-pattern>/admin/*</url-pattern> </filter-mapping>
过滤器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。