从来好事天生俭,自古瓜儿苦后甜。这篇文章主要讲述SSM项目配置 拦截器#私藏项目实操分享#相关的知识,希望能为你提供帮助。
第一步:编写一个拦截器(登录拦截器)
@Slf4j
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String requestURI = request.getRequestURI();
log.info("被拦截的请求有:{}",requestURI);
//通过session,拿到用户登录信息
HttpSession session = request.getSession();
final Object userObj = session.getAttribute(ProjShow.USER_SESSION);
//获取角色属性if (userObj != null) {
//如果已经登录,不拦截
return true;
} else {
//如果没有登录,打开登录页面
response.sendRedirect(request.getContextPath() + "/login.jsp");
return false;
}
}
}
第二步:在springmvc配置文件中对第一步中创建的拦截器进行配置
<
mvc:interceptors>
<
mvc:interceptor>
<
!-- 拦截所有mvc控制器 -->
<
mvc:mapping path="/**"/>
<
!-- mvc:exclude-mapping是另外一种拦截,它可以在你后来的测试中对某个页面进行不拦截,这样就不用在
LoginInterceptor的preHandler方法里面获取不拦截的请求uri地址了(优选) -->
<
mvc:exclude-mapping path="/" />
<
mvc:exclude-mapping path="/index.jsp" />
<
mvc:exclude-mapping path="/regist.jsp" />
<
mvc:exclude-mapping path="/login.jsp" />
<
mvc:exclude-mapping path="/account/**" />
<
bean class="com.hc.interceptor.LoginInterceptor"/>
<
/mvc:interceptor>
<
/mvc:interceptors>
第三步:在web.xml中指定使用默认的servlet对静态资源进行拦截
<
!--放行静态资源 ,配合SpringMVC拦截器使用-->
<
servlet-mapping>
<
servlet-name>
default<
/servlet-name>
<
url-pattern>
*.js<
/url-pattern>
<
url-pattern>
*.css<
/url-pattern>
<
/servlet-mapping>
经过以上三步,ssm中的拦截器就创建成功了
附:过滤器与拦截器的区别:
- 【SSM项目配置 拦截器#私藏项目实操分享#】过滤器
- servlet规范中的一部分,任何java web工程都可以使用
- 在url-pattern中配置了/*之后,可以对所有要访问的资源进行拦截
- 拦截器
- 拦截器是AOP思想的具体应用。
- 拦截器是springMVC框架自己的,只有使用了SpringMVC框架的工程才能使
- 拦截器只会拦截访问的控制器方法,如果访问的是jsp/html/css/image/js是不会进行拦截
推荐阅读
- Linux 快捷键,让你的工作效率加倍
- #yyds干货盘点# kubeadm添加新master或node
- #yyds干货盘点#你真的知道Spring注解驱动的前世今生吗(这篇文章让你豁然开朗!)
- Azure Virtual Desktop-3-配置Azure文件共享及配置用户配置文件漫游
- 部署OpenGauss DB一主二备集群
- Java 项目中使用 Resilience4j 框架实现异步超时处理
- Linux进程和任务管理
- #yyds干货盘点# RPCRESTGraphQL接口类型概述
- #yyds干货盘点# 6. Python 元组,不可变的列表,滚雪球学 Python