SSM框架使用拦截器和过滤器实现登录的拦截

在ssm的普通项目中登录如不进行拦截操作,那么通过虚拟路径进行跨页面展示是十分危险的,安全起见需要需要进行登录的拦截,如果没有登录(没有包含用户信息)那么强制跳转到登录页面,不允许没有登陆即访问其他页面。
过滤器和拦截器区别:

  1. 使用范围不同: Filter 是Servlet规范规定的,所以过滤器只能用于Web程序中。而拦截器既可以用于Web程序,也可以用于Application、Swing 程序中。
  2. 规范不同:过滤器 Filter是在Servlet规范中定义的,是Servlet容器支持的。而拦截器是在Spring容器内的,是Spring框架支持的。chenleixing
  3. 使用的资源不同:同其他的代码块一样, 拦截器也是一个Spring的组件,归Spring管理,配置在Spring文件中,因此能使用Spring里的任何资源、对象,例如Service对象、数据源、事务管理等,通过IoC注入到拦截器即可;而过滤器 Filter则不能。
  4. 深度不同: 过滤器-Filter 在只在Servlet前后起作用。而拦截器能够深入到方法前后、异常抛出前后等,因此拦截器的使用具有更大的弹性。所以在Spring构架的程序中,要优先使用拦截

进入正题:

进行登录拦截需要创建两个类并分别配置

  1. 创建拦截器类并实现拦截器 HandlerInterceptor 接口
package com.wu.config;import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class LoginHandlerInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 登录成功应该有session(在登陆的Controller中设置session)Object admin = request.getSession().getAttribute("admin");System.out.println(admin);if (admin == null){request.setAttribute("msg", "没有权限,请先登录!");request.getRequestDispatcher("/admin/login.jsp").forward(request, response);return false;}else {return true;}}
}
  1. 在我们的springmvc.xml中配置拦截器类
    <!--配置拦截器--><mvc:interceptors><mvc:interceptor>// 所有请求都拦截<mvc:mapping path="/**"/>// 放行登录界面和登陆请求<mvc:exclude-mapping path="/admin/login.jsp"/><mvc:exclude-mapping path="/admin/login.action"/>// 拦截器类的位置<bean class="com.wu.config.LoginHandlerInterceptor"/></mvc:interceptor></mvc:interceptors>
  1. 创建过滤器类并实现 Filter 接口
package com.wu.config;import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class LoginFiler implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) servletRequest;HttpServletResponse response = (HttpServletResponse) servletResponse;Object admin = request.getSession().getAttribute("admin");if(admin == null && request.getRequestURI().indexOf("/admin/login.action") == -1){// 没有登录 强制跳转到登录页面request.getRequestDispatcher("/admin/login.jsp").forward(request, response);}else{// 已经登录,继续请求下一级资源(继续访问)filterChain.doFilter(request, response);}}@Overridepublic void destroy() {}
}
  1. 在web.xml中对过滤器进行配置
  <filter><filter-name>SessionFilter</filter-name><filter-class>com.wu.config.LoginFiler</filter-class></filter><filter-mapping><filter-name>SessionFilter</filter-name>// admin下的所有请求和页面都要过滤<url-pattern>/admin/*</url-pattern></filter-mapping>

配置完成了,简单四步实现对于登录的拦截操作,想要不登录访问其他界面是不可能了,新手上路 有错误大家多多指教

SSM框架使用拦截器和过滤器实现登录的拦截相关推荐

  1. 关于SSM框架设置拦截器和过滤器

    我们知道拦截器和过滤器都是在项目中起到拦截过滤请求的功能,所以可能在设置的时候会傻傻分不清.这里我们先来比较它们的区别. 过滤器Filter是JavaEE标准,在Servlet的规范中定义的,是Ser ...

  2. SpringBoot 拦截器和过滤器

    拦截器和过滤器 时光飞逝,最近也是很忙,但是忙到最后发现在自己并没有太多的成长 工作 学习 生活 没想到成长是不经意间的,像是被 推着,让你身不由己 午休时间,写写博客,也是保留一些自己的时间和空间 ...

  3. 【SpringMVC】拦截器和过滤器

    拦截器: 拦截器是springmvc中的一种,需要实现HandlerInterceptor接口. 拦截器和过滤器类似,功能方向侧重点不同. 过滤器是用来过滤器请求参数,设置编码字符集等工作. 拦截器是 ...

  4. 详解拦截器和过滤器的区别

    拦截器和过滤器的区别 过滤器和拦截器的区别: ①拦截器是基于java的反射机制的,而过滤器是基于函数回调. ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器. ③拦截器只能对acti ...

  5. 区分Java拦截器和过滤器

    今天带大家分析java拦截器和过滤器的区别,文中有非常详细的解释说明,对正在学习java的小伙伴们有很好的帮助,需要的朋友可以参考下 一.过滤器(filter) 过滤器处于客户端与Web资源(Serv ...

  6. 拦截器和过滤器之间有很多相同之处,但是两者之间存在根本的差别

    转自:https://www.cnblogs.com/shangc/p/5939708.html 拦截器和过滤器之间有很多相同之处,但是两者之间存在根本的差别.其主要区别为以下几点: 1)拦截器是基于 ...

  7. struts2中拦截器和过滤器的比较

    拦截器和过滤器的区别: 1.拦截器是基于java的反射机制的,而过滤器是基于函数回调 2.过滤器依赖与servlet容器,而拦截器不依赖与servlet容器 3.拦截器只能对action请求起作用,而 ...

  8. java 拦截器和过滤器的区别

    介绍 在 Java Web 应用程序中,拦截器和过滤器是两种不同的机制,用于在请求/响应处理过程中进行拦截和过滤.两者都可以用来在请求到达目标资源之前对其进行预处理.修改或拦截. 但是,拦截器和过滤器 ...

  9. 拦截器和过滤器有什么区别?

    首先了解什么是过滤器什么是拦截器 ①过滤器(Filter) 过滤器通过直接实现Filter接口实现,也可以通过@WebFilter注解实现特定的URL拦截 在Filter接口中定义了三个方法: ini ...

  10. springboot拦截器和过滤器的区别与使用

    拦截器与过滤器的区别 spring的拦截器与servlet的filter有相似之处,比如二者都是AOP编程思想的体现,都能实现权限检查.日志记录等,不同的是: 适用范围不同:filter是servle ...

最新文章

  1. 二维数组的传参数的方法
  2. 实事求是来讲,比较艰难的环境能够激发人的斗志
  3. IOS 为UILabel添加长按复制功能
  4. 程序员35岁之后的出路_35岁的程序员走向何方?
  5. 服务器项目白名单设置
  6. 计算机多媒体专业是什么专业,什么是计算机多媒体技术
  7. crontab 每天凌晨8点_凌晨3点47分,嘉兴8岁女孩竟独自站在街头,原因竟是…
  8. amos看拟合度在哪里看_360度看佛山战“疫”
  9. (转)Dinkelbach算法(01二分规划更优解法)
  10. a5松下驱动器参数设置表_松下伺服驱动器参数设置MSD043A1X
  11. 怎么提高文公写作水平?公文写作请示类模板
  12. 计算机网络说课教案,认识计算机网络说课稿PPT课件.ppt
  13. matlab 行 读取文件 跳过_matlab-Textscan在行首跳过所需的空白
  14. 庄辰超:“去哪儿”的大生意
  15. 电脑开启后桌面图标不显示
  16. 空间后方交会编程c语言,C语言空间后方交会源代码.doc
  17. Vue3路由,VueX3,Vue3生命周期函数
  18. ngro_k服务器搭建(本地电脑与微信交互)
  19. 超级 POM,POM的层级关系
  20. 记一次在android使用fdisk

热门文章

  1. 漫谈《大型网站技术架构》
  2. Linux 编译并更换内核
  3. linux系统的wps办公软件,linux上安装wps办公软件
  4. strcmp函数详解看这一篇就够了-C语言(函数实现、使用用法举例、作用、与strncmp的区别)
  5. strcmp()函数用法及其详解
  6. 目标检测 | CVPR 2019 目标检测论文汇总
  7. pic系列单片机c语言编程与应用实例,PIC单片机C语言编程实例
  8. Sybase数据库的备份
  9. 伺服电机常用参数设置_伺服驱动器重要参数的设置方法和技巧
  10. 最强Redis实战学习笔记,没有之一!