java SpringMVC Filter登录拦截器

简介: java SpringMVC Filter登录拦截器

SpringMVC框架是一个非常强大的java web框架,目前最主流的也是spring mvc的框架今天我们学习下springMVCd的登录拦截器Filter


首先呢,SpringMVC具有统一的入口DIspatcherServlet,所有请求都会通过DIspatcherServlet来进行处理


dispatcherServlet是前置控制器,配置在web.xml中,主要是用来拦截对应的请求,然后将请求根据对应的规则发送到Controller来进行处理


首先在web.xml中进行配置拦截请求

  <!--filter登录拦截器-->
  <filter>    
    <!--拦截请求做处理的类-->
      <filter-name>SecurityServlet</filter-name>    
      <filter-class> org.andy.shop.utils.SecurityServlet</filter-class>    
  </filter>    
  <filter-mapping>    
      <filter-name>SecurityServlet</filter-name>    
      <url-pattern>*.jsp</url-pattern>    
  </filter-mapping>    
  <filter-mapping>   
  <!--拦截格式.do--> 
      <filter-name>SecurityServlet</filter-name>    
      <url-pattern>*.do</url-pattern>    
  </filter-mapping> 

这里我们用的是.do拦截格式,就是说所有请求中有.do的请求都会被我们拦截下来做登录处理,这里如果将.do写成“/”的话,就会拦截所有请求,会导致 js文件、css文件等文件无法访问

这里我们写的是继承HttpServlet类实现Filter接口

package org.andy.shop.utils;
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.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; 
/**
 * Filter 登录拦截器
 * @author lyy
 * @date 2016-05-05
 */
public class SecurityServlet extends HttpServlet implements Filter{
  /**
   * 
   */
  private static final long serialVersionUID = 1L;
  public void init(FilterConfig filterConfig) throws ServletException {
  }
  public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain chain)
      throws IOException, ServletException {
    HttpServletRequest request=(HttpServletRequest)srequest;
        HttpServletResponse response  =(HttpServletResponse) sresponse;
        HttpSession session = request.getSession(true);
        String usercode = (String) request.getRemoteUser();// 登录人
        String user_role = (String)session.getAttribute(Constants.USERID);//登录人角色
        String url=request.getRequestURI();//获取的请求路径
        System.out.println(url);
        if(user_role == null || "".equals(user_role)) {//如果登录标识为空
             //判断获取的路径不为空且不是访问登录页面或执行登录操作时跳转
             if(url!=null && !url.equals("") && (url.contains("userDetail.do") )) {//如果请求url不为空且请求的url包含userDetail.do请求
                 response.sendRedirect(request.getContextPath() + "/login.do");
                 return;
             }
         }
        chain.doFilter(srequest, sresponse);//跳转
         return;
  }
}

当我们访问localhost:8080/test/userDetai.do时如果没有登录的验证就会跳转到对应的login页面

目录
相关文章
|
7天前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
8天前
|
JSON 前端开发 Java
【Java笔记+踩坑】SpringMVC基础
springmvc简介、入门案例、bean加载控制、PostMan工具的使用、普通和JSON和日期格式请求参数传递、响应JSON或jsp或文本、Rest风格
【Java笔记+踩坑】SpringMVC基础
|
14天前
|
监控 前端开发 Java
Java里的过滤器和拦截器是什么原理,如何选择?
Java里的过滤器和拦截器是什么原理,如何选择?
11 0
|
1月前
|
存储 算法 Java
在Java中使用MD5对用户输入密码进行加密存储、同时登录验证。
这篇文章详细介绍了在Java项目中如何使用MD5算法对用户密码进行加密存储和登录验证,包括加入依赖、编写MD5工具类、注册时的密码加密和登录时的密码验证等步骤,并通过示例代码和数据库存储信息展示了测试效果。
在Java中使用MD5对用户输入密码进行加密存储、同时登录验证。
|
23天前
|
安全 Java API
Java 8 流库的魔法革命:Filter、Map、FlatMap 和 Optional 如何颠覆编程世界!
【8月更文挑战第29天】Java 8 的 Stream API 通过 Filter、Map、FlatMap 和 Optional 等操作,提供了高效、简洁的数据集合处理方式。Filter 用于筛选符合条件的元素;Map 对元素进行转换;FlatMap 将多个流扁平化合并;Optional 安全处理空值。这些操作结合使用,能够显著提升代码的可读性和简洁性,使数据处理更为高效和便捷。
28 0
|
27天前
|
SQL Java 数据库连接
【Azure 应用服务】Java ODBC代码中,启用 Managed Identity 登录 SQL Server 报错 Managed Identity authentication is not available
【Azure 应用服务】Java ODBC代码中,启用 Managed Identity 登录 SQL Server 报错 Managed Identity authentication is not available
|
1月前
|
设计模式 JSON 前端开发
【Java 第十二篇章】SpringMvc 框架介绍
Spring MVC 是 Spring 框架中的模块,采用 MVC 设计模式构建 Web 应用。核心组件包括 DispatcherServlet、Controller、Model 和 View。流程始于 DispatcherServlet 接收并分发请求至 Controller,Controller 处理业务逻辑并与 Model 交互,再通过 View 展示结果。优势包括松耦合架构支持多种视图技术,强大的请求处理和数据绑定功能简化开发,以及易于与其他 Spring 模块和第三方库集成。
10 0
|
1月前
|
前端开发 Java Spring
Java 新手入门:Spring Boot 轻松整合 Spring 和 Spring MVC!
Java 新手入门:Spring Boot 轻松整合 Spring 和 Spring MVC!
43 0
|
3月前
|
Java 数据安全/隐私保护
利用Java图形化界面组件Swing写一个简易的登录界面
利用Java图形化界面组件Swing写一个简易的登录界面
44 1
|
3月前
|
存储 NoSQL Java
Redis系列学习文章分享---第三篇(Redis快速入门之Java客户端--短信登录+session+验证码+拦截器+登录刷新)
Redis系列学习文章分享---第三篇(Redis快速入门之Java客户端--短信登录+session+验证码+拦截器+登录刷新)
63 0