SSM项目配置 拦截器#私藏项目实操分享#

从来好事天生俭,自古瓜儿苦后甜。这篇文章主要讲述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是不会进行拦截

    推荐阅读