SSM框架使用拦截器和过滤器实现登录的拦截
SSM框架使用拦截器和过滤器实现登录的拦截
在ssm的普通项目中登录如不进行拦截操作,那么通过虚拟路径进行跨页面展示是十分危险的,安全起见需要需要进行登录的拦截,如果没有登录(没有包含用户信息)那么强制跳转到登录页面,不允许没有登陆即访问其他页面。
过滤器和拦截器区别:
- 使用范围不同: Filter 是Servlet规范规定的,所以过滤器只能用于Web程序中。而拦截器既可以用于Web程序,也可以用于Application、Swing 程序中。
- 规范不同:过滤器 Filter是在Servlet规范中定义的,是Servlet容器支持的。而拦截器是在Spring容器内的,是Spring框架支持的。chenleixing
- 使用的资源不同:同其他的代码块一样, 拦截器也是一个Spring的组件,归Spring管理,配置在Spring文件中,因此能使用Spring里的任何资源、对象,例如Service对象、数据源、事务管理等,通过IoC注入到拦截器即可;而过滤器 Filter则不能。
- 深度不同: 过滤器-Filter 在只在Servlet前后起作用。而拦截器能够深入到方法前后、异常抛出前后等,因此拦截器的使用具有更大的弹性。所以在Spring构架的程序中,要优先使用拦截
进入正题:
进行登录拦截需要创建两个类并分别配置
- 创建拦截器类并实现拦截器 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;}}
}
- 在我们的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>
- 创建过滤器类并实现 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() {}
}
- 在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框架使用拦截器和过滤器实现登录的拦截相关推荐
- 关于SSM框架设置拦截器和过滤器
我们知道拦截器和过滤器都是在项目中起到拦截过滤请求的功能,所以可能在设置的时候会傻傻分不清.这里我们先来比较它们的区别. 过滤器Filter是JavaEE标准,在Servlet的规范中定义的,是Ser ...
- SpringBoot 拦截器和过滤器
拦截器和过滤器 时光飞逝,最近也是很忙,但是忙到最后发现在自己并没有太多的成长 工作 学习 生活 没想到成长是不经意间的,像是被 推着,让你身不由己 午休时间,写写博客,也是保留一些自己的时间和空间 ...
- 【SpringMVC】拦截器和过滤器
拦截器: 拦截器是springmvc中的一种,需要实现HandlerInterceptor接口. 拦截器和过滤器类似,功能方向侧重点不同. 过滤器是用来过滤器请求参数,设置编码字符集等工作. 拦截器是 ...
- 详解拦截器和过滤器的区别
拦截器和过滤器的区别 过滤器和拦截器的区别: ①拦截器是基于java的反射机制的,而过滤器是基于函数回调. ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器. ③拦截器只能对acti ...
- 区分Java拦截器和过滤器
今天带大家分析java拦截器和过滤器的区别,文中有非常详细的解释说明,对正在学习java的小伙伴们有很好的帮助,需要的朋友可以参考下 一.过滤器(filter) 过滤器处于客户端与Web资源(Serv ...
- 拦截器和过滤器之间有很多相同之处,但是两者之间存在根本的差别
转自:https://www.cnblogs.com/shangc/p/5939708.html 拦截器和过滤器之间有很多相同之处,但是两者之间存在根本的差别.其主要区别为以下几点: 1)拦截器是基于 ...
- struts2中拦截器和过滤器的比较
拦截器和过滤器的区别: 1.拦截器是基于java的反射机制的,而过滤器是基于函数回调 2.过滤器依赖与servlet容器,而拦截器不依赖与servlet容器 3.拦截器只能对action请求起作用,而 ...
- java 拦截器和过滤器的区别
介绍 在 Java Web 应用程序中,拦截器和过滤器是两种不同的机制,用于在请求/响应处理过程中进行拦截和过滤.两者都可以用来在请求到达目标资源之前对其进行预处理.修改或拦截. 但是,拦截器和过滤器 ...
- 拦截器和过滤器有什么区别?
首先了解什么是过滤器什么是拦截器 ①过滤器(Filter) 过滤器通过直接实现Filter接口实现,也可以通过@WebFilter注解实现特定的URL拦截 在Filter接口中定义了三个方法: ini ...
- springboot拦截器和过滤器的区别与使用
拦截器与过滤器的区别 spring的拦截器与servlet的filter有相似之处,比如二者都是AOP编程思想的体现,都能实现权限检查.日志记录等,不同的是: 适用范围不同:filter是servle ...
最新文章
- 二维数组的传参数的方法
- 实事求是来讲,比较艰难的环境能够激发人的斗志
- IOS 为UILabel添加长按复制功能
- 程序员35岁之后的出路_35岁的程序员走向何方?
- 服务器项目白名单设置
- 计算机多媒体专业是什么专业,什么是计算机多媒体技术
- crontab 每天凌晨8点_凌晨3点47分,嘉兴8岁女孩竟独自站在街头,原因竟是…
- amos看拟合度在哪里看_360度看佛山战“疫”
- (转)Dinkelbach算法(01二分规划更优解法)
- a5松下驱动器参数设置表_松下伺服驱动器参数设置MSD043A1X
- 怎么提高文公写作水平?公文写作请示类模板
- 计算机网络说课教案,认识计算机网络说课稿PPT课件.ppt
- matlab 行 读取文件 跳过_matlab-Textscan在行首跳过所需的空白
- 庄辰超:“去哪儿”的大生意
- 电脑开启后桌面图标不显示
- 空间后方交会编程c语言,C语言空间后方交会源代码.doc
- Vue3路由,VueX3,Vue3生命周期函数
- ngro_k服务器搭建(本地电脑与微信交互)
- 超级 POM,POM的层级关系
- 记一次在android使用fdisk