建一个实现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)); } }
在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