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 MVC中使用查询字符串与参数
通过结合实际的需求和业务逻辑,开发者可以灵活地利用这些机制,为用户提供更丰富而高效的Web应用体验。
224 15
|
8月前
|
JSON 前端开发 Java
Java新手指南:如何在Spring MVC中处理请求参数
处理Spring MVC中的请求参数是通过控制器方法中的注解来完成的。这些注解包括 `@RequestParam`, `@PathVariable`, `@ModelAttribute`, `@RequestBody`, `@RequestHeader`, `@Valid`, 和 `@RequestMapping`。使用这些注解可以轻松从HTTP请求中提取所需信息,例如URL参数、表单数据或者JSON请求体,并将其转换成Java对象以供进一步处理。
589 17
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
1901 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
缓存 Java 应用服务中间件
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
3523 5
|
存储 小程序 前端开发
微信小程序与Java后端实现微信授权登录功能
微信小程序极大地简化了登录注册流程。对于用户而言,仅仅需要点击授权按钮,便能够完成登录操作,无需经历繁琐的注册步骤以及输入账号密码等一系列复杂操作,这种便捷的登录方式极大地提升了用户的使用体验
3673 12
|
监控 Java 数据管理
java会话跟踪和拦截器过滤器
本文介绍了Web开发中的会话跟踪技术——Cookie与Session,以及过滤器(Filter)和监听器(Listener)的概念和应用。Cookie通过在客户端记录信息来识别用户,而Session则在服务器端保存用户状态。过滤器用于拦截和处理请求及响应,监听器则监控域对象的状态变化。文章详细解释了这些技术的实现方式、应用场景和主要方法,帮助开发者更好地理解和使用这些工具。
265 1
|
小程序 前端开发 算法
|
Java
Java 登录输入的验证码
Java 登录输入的验证码
210 1
|
缓存 前端开发 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版)
|
JSON 前端开发 Java
【Java笔记+踩坑】SpringMVC基础
springmvc简介、入门案例、bean加载控制、PostMan工具的使用、普通和JSON和日期格式请求参数传递、响应JSON或jsp或文本、Rest风格
【Java笔记+踩坑】SpringMVC基础