首页 > 其他 > 详细

过滤器

时间:2017-02-13 19:55:54      阅读:111      评论:0      收藏:0      [点我收藏+]

做过滤器:

1.做类

建一个实现javax.servlet.Filter接口的类

在doFilter()方法中编写过滤逻辑

技术分享

package com.itnba.maya.filter;

import java.io.IOException;
import java.util.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class StateFilter implements Filter {
    private ArrayList<String> list =new ArrayList<String>();//建一个集合,放可以不用验证身份的页面
    @Override
    public void destroy() {
        // TODO 自动生成的方法存根
        
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        //转换类型
        HttpServletRequest req=(HttpServletRequest) request;  
        HttpServletResponse res=(HttpServletResponse) response;
        
        HttpSession session=req.getSession();
        //获取请求界面的路径
        String a=req.getRequestURI();//长的路径
        String b=req.getContextPath();//短的路径
        String c=a.substring(b.length());//截取路径
        
        if(list.contains(c)==false){   //要请求的不是登录页面,需要验证session;
            
            if(session.getAttribute("user")==null){//判断session是否有值,没有就转到登录页面
                res.sendRedirect("cs1.jsp");
            }
            else{
                chain.doFilter(req, res);
            }
        }
        else{
            chain.doFilter(req, res);
        }
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
        
        String val=arg0.getInitParameter("allowpage");//读web.xml配置中的init-param的value
        //劈开放到数组中
        String[]arr =val.split(",");
        //把数组全部放到集合里
        list.addAll(Arrays.asList(arr));
    }

}

 2.做配置

在web.xml中配置<filter>和<filter-mapping>元素

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  version="3.1">
    <filter>
        <filter-name>statefilter</filter-name><!--自己取的名字跟下面的要一样-->
        <filter-class>com.itnba.maya.filter.StateFilter</filter-class><!--过滤器类的包和类名--!>
        <init-param>
        <param-name>allowpage</param-name><!--在过滤器类中的 init(FilterConfig arg0)方法调用,获取下面的value值--!>
        <param-value>/cs1.jsp,/Cs1</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>statefilter</filter-name><!--自己取的名字跟上面面的要一样-->
        <url-pattern>/*</url-pattern><!--要过滤的页面/*代表全部-->
    </filter-mapping>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

</web-app>

这样运行没有登录的页面,就会跳转到登录页面。

技术分享

 

过滤器

原文:http://www.cnblogs.com/hq233/p/6395041.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!