java 拦截器

一、前言

  这是一篇关于 java 拦截器的文章,是我的写 java  web 所遇见的问题。当我们写好一个网站,必须要通过登陆页面才可以进入这个系统。那么我们就得写个 java 拦截器,如果是通过登录进入系统的用户,那么这样的用户就可以访问任何一个文件或者任何的 jsp 页面。如果非登录界面想进入系统,或者想搞事情的用户,我们是不允许他进入我们的系统的。这就是拦截器的功能。

  参考的实例:时间辜负了谁的博客 

二、代码实现

  实现这个功能,我们需要写一个类,让这个类继承 Fliter 这个类。这里强调一下,我的这个类是创建在 com.wz.common 中的。具体的代码实现如下:

  

package com.wz.common;

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 javax.servlet.http.HttpSession;

public class LoginFilter implements Filter {

    @Override
    public void destroy() {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        
        //获取在下面代码中的request、respone、session对象
        HttpServletRequest servletRequest=(HttpServletRequest)request;
        HttpServletResponse servletResponse=(HttpServletResponse)response;
        HttpSession session=servletRequest.getSession();
        
        //获取请求的URL 
        String path=servletRequest.getRequestURI();
        
        //输出看一下路径
        System.out.println("path查看一下路径"+path);
        
        String id=(String)session.getAttribute("id");
        
        //登陆页面不需要过滤
        if(path.indexOf("/login.jsp")>-1){
            chain.doFilter(servletRequest, servletResponse);
            return;
        }
        
        //判断如果没有员工的信息,就跳转到登陆页面
        if(id==null){
            servletResponse.sendRedirect("../login.jsp");
        }else{
            chain.doFilter(servletRequest, servletResponse);
        }
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub
        
    }

    
}

三、web.xml 配置

  代码已经实现好了,我们需要这 web.xml 实现配置,我需要拦截的文件夹如下图所示:我想要拦截Admin 下面的所以文件夹。

  

  在 web.xml 的文件配置代码如下:

<!-- 配置拦截器 -->
    <filter>
        <filter-name>login</filter-name>
          <filter-class>com.wz.common.LoginFilter</filter-class>
     </filter>
     
    <filter-mapping>
          <filter-name>login</filter-name>
          <url-pattern>/Admin/*</url-pattern>
     </filter-mapping>

四、个人总结  

  学习新的东西,我们要静下心,多百度一下就好了。感觉一直不断学习的自己!

  

posted @ 2017-08-20 11:00  周兴兴  阅读(237)  评论(1编辑  收藏  举报