filter控制url访问权限

         在project应用中有一些url是不可以直接访问的,必须有授权或是经过某些处理才能访问,比如访问某些功能必须登录,某些功能必须是指定的用户才能访问,这些需要用到访问权限的控制,如果具有访问的权限,则允许访问,没权限则跳转到指定的处理页面。

package com.bird.filter;

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.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * @author jzq
 *  URL 访问控制
 *  2009-11-12
 */
public class AccessPurviewFilter extends HttpServlet implements Filter {    
    /**  
     *  重定向的URL  
     */  
    private String redirectURl = null;

   /**   doFilter方法的第一个参数为ServletRequest对象。此对象给过滤器提供了对进入的信息(包括
    *    表单数据、cookie和HTTP请求头)的完全访问。第二个参数为ServletResponse,通常在简单
    *    的过滤器中忽略此参数。最后一个参数为FilterChain,此参数用来调用servlet或JSP页。
    *    -- 如果处理HTTP请求,并且需要访问诸如getHeader或getCookies等在ServletRequest中
    *    无法得到的方法,就要把此request对象构造成HttpServletRequest
    */
    public void doFilter(ServletRequest sRequest, ServletResponse sResponse,
            FilterChain filterChain) throws IOException, ServletException {
          HttpServletRequest request = (HttpServletRequest) sRequest;   
         HttpServletResponse response = (HttpServletResponse) sResponse;   
         HttpSession session = request.getSession();   
   
         // 如果回话中的用户名为空,页面重新定向到登陆页面   
         if (session.getAttribute("userName") == null) {
             String contextPath  = request.getContextPath();
             String currentPath = request.getRequestURI(); 
             response.sendRedirect(contextPath  + redirectURl);   
         }            
    }
    
    public void init(FilterConfig arg0) throws ServletException {
       redirectURl = "/login.jsp";         
    }     
}
  web.xml中配置要过滤的URL:

  <filter>
        <filter-name>AccessPurviewFilter</filter-name>
        <filter-class>com.bird.filter.AccessPurviewFilter</filter-class>
  </filter>
  <filter-mapping>
       <filter-name>AccessPurviewFilter</filter-name>
       <url-pattern>/frame/*</url-pattern>
  </filter-mapping>
         上面配置当用户进入 frame 文件夹下的页面的时候,程序会进入 AccessPurviewFilter 里的doFilter方法里,进行权限的判断。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值