一、前言
这是一篇关于 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>
四、个人总结
学习新的东西,我们要静下心,多百度一下就好了。感觉一直不断学习的自己!