我是做到这里,才用了注释的方式拿到了ls。
step8:
这里的话,拦截器,首先说下流程
拦截器流程
我发起请求->进拦截器->进action
这里多拦截器的情况我就不说了,反正有种就近原则的味道。
这里的拦截器类
LoginChk.java
package com.ssmlogin.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class LoginChk implements HandlerInterceptor { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // TODO 自动生成的方法存根 // 权限检查,只有在session中存在用户名,这个时候才能跳转 System.out.println("进入拦截器。。。"+request.getAttribute("username")+":"+request.getSession().getAttribute("username")); if(request.getSession().getAttribute("username") != null) { return true; } else { System.out.println("权限不足!"); request.setAttribute("message", "权限不足,请登录"); request.getRequestDispatcher("/index.jsp").forward(request, response); return false; } } public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // TODO 自动生成的方法存根 } public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // TODO 自动生成的方法存根 } }
就注意一下,pre方法返回true才继续流程,不然就停止了。
至于为什么,可以跟一下源码。
注册拦截器
自己定义的一定要注册,注册部分代码,在spring-mvc.xml中:
<!-- 注册拦截器 --> <mvc:interceptors > <mvc:interceptor> <mvc:mapping path="/**"/> <mvc:exclude-mapping path="/login"/> <mvc:exclude-mapping path="/register"/> <bean class="com.ssmlogin.interceptor.LoginChk" /> </mvc:interceptor> </mvc:interceptors>
配置也很简单,在除了注册和登录的其他情况,都要拦截,这里注册还未写。
配置到这里就好了,
这里测试呢,可以直接访问/welcome,应该就会有相关提示了。
如果我的内容在哪里有问题,欢迎私信指正。