jsp 过滤 filter

UserFilter.java

 

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

import org.apache.commons.lang.StringUtils;


public class UserFilter implements Filter {
 
 
 private String sessionKey;
 
 
 private String excepUrl;
 
 
 private String redirectUrl;
 
 public void init(FilterConfig cfg) throwsServletException {
  sessionKey =cfg.getInitParameter("sessionKey");
  redirectUrl =cfg.getInitParameter("redirectUrl");
  excepUrl =cfg.getInitParameter("excepUrl");
 }
 
 
 public void doFilter(ServletRequest req,ServletResponse res, FilterChain chain) throws IOException,ServletException {
  // 如果 sessionKey 为空,则直接放行
  if(StringUtils.isBlank(sessionKey)) {
   chain.doFilter(req,res);
   return;
  }
//     * 请求 http://127.0.0.1:8080/webApp/home.jsp?&a=1&b=2
//         * request.getRequestURL(): http://127.0.0.1:8080/webApp/home.jsp
//        * request.getContextPath(): /webApp 
//        * request.getServletPath():/home.jsp
//        * request.getRequestURI(): /webApp/home.jsp
//        * request.getQueryString():a=1&b=2
  HttpServletRequest request =(HttpServletRequest) req;
  HttpServletResponse response =(HttpServletResponse) res;
  String servletPath =request.getServletPath();//当前页面的路径(如"/index.jsp")
  //如果请求的路径与redirectUrl(将要跳转的页面)相同,或请求的路径是排除的URL时,则直接放行
  if(servletPath.equals("/"+redirectUrl) ||excepUrl.contains(servletPath)) {
   chain.doFilter(req,res);
   return;
  }
  
  Object sessionObj =request.getSession().getAttribute(sessionKey);
  // 如果Session为空,则跳转到指定页面
   if (sessionObj == null){
   response.sendRedirect(redirectUrl);
    } else{
    chain.doFilter(req, res);
   }
   }
 
 public void destroy() {
  
 }

}


web.xml


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

<web-app version="2.5"xmlns="http://java.sun.com/xml/ns/javaee"

 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

 <filter>

   <filter-name>UserFilter</filter-name>

   <filter-class>filter.UserFilter</filter-class>

   <init-param>

           <description>

            将当前登录的用户的信息保存在 session 中时使用的key,

            如果没有配置此参数,则该过滤器不起作用

           </description>

        <param-name>sessionKey</param-name>

        <param-value>userInfo</param-value>

   </init-param>

   <init-param>

       <description>

                如果用户未登录(即在session 中 key 为 sessionKey 的属性不存在或为空),

                则将请求重定向到该url。该 url 不包含web应用的 ContextPath。

             如果不配置此参数,则在用户未登录系统的情况下,直接重定向到web应用的根路径(/)     

       </description>

          <param-name>redirectUrl</param-name>

          <param-value>index.jsp</param-value>

      </init-param>

      <init-param>

           <description>

                             不需要进行拦截的 url,即:如果当前请求的 url 的servletPath 能在此excepUrl里,则直接放行(即使未登录系统)。

                             格式如(/checkuser.jsp /up.jsp)           

           </description>

           <param-name>excepUrl</param-name>

           <param-value>/checkuser.jsp</param-value>

     </init-param>

 </filter>

                  


<filter-mapping>

   <filter-name>UserFilter</filter-name>

   <url-pattern>*.jsp</url-pattern>

</filter-mapping>

 <welcome-file-list>

 <welcome-file>index.jsp</welcome-file>

 </welcome-file-list>

 <login-config>

 <auth-method>BASIC</auth-method>

 </login-config>

</web-app>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值