Servlet Filter 过滤器

本文介绍了一个JavaEE项目的权限校验过滤器实现及请求编码的统一转换方法。通过自定义过滤器对用户访问进行权限校验,确保只有认证过的用户才能访问特定资源;同时实现了对HTTP请求字符编码的转换,确保应用内部处理的数据编码一致。

1.编码转换

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        // TODO Auto-generated method stub
        // place your code here

        if(!charEncoding.equals(request.getCharacterEncoding()))
        {
            request.setCharacterEncoding(charEncoding);
        }
        
        response.setCharacterEncoding(charEncoding);
        
        // pass the request along the filter chain
        chain.doFilter(request, response);
    }

2.权限校验过滤

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        // TODO Auto-generated method stub
        // place your code here

        HttpServletRequest req=(HttpServletRequest)request;
        HttpServletResponse res = (HttpServletResponse)response;
        
        String servletPath = req.getServletPath();
        
        System.out.println("servletPath " + servletPath);
        
        HttpSession session = req.getSession();
        String flag = (String)session.getAttribute("flag");
        
        if(servletPath != null &&
                (servletPath.equals("/21/login.jsp") ||
                        (servletPath.equals("/21/index.jsp")) ||
//                        servletPath.equals("/21/hello.jsp") ||
                        (servletPath.equals("/21/LoginServerlet21"))
                        ))
        {
            chain.doFilter(request, response);
        }else
        {
            if(flag != null && flag.equals("login_success"))
            {
                chain.doFilter(request, response);
            }
            else if(flag != null && flag.equals("login_error"))
            {
                req.setAttribute("msg", "登陆失败,请重新登陆!!!!<br />");
                req.setAttribute("return_uri", servletPath);
                RequestDispatcher rd = req.getRequestDispatcher("/21/login.jsp");
                rd.forward(req, res);
            }
            else
            {
                req.setAttribute("msg", "你尚未登陆");
                req.setAttribute("return_uri", servletPath);
                RequestDispatcher rd = req.getRequestDispatcher("/21/login.jsp");
                rd.forward(req, res);
            }
        }

3.源码

  https://git.oschina.net/zkzk945/JavaEE.git

转载于:https://www.cnblogs.com/zkzk945/p/5255817.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值