SpringMVC拦截器的实现(也就是登录是一定要通过登录的页面)

Posted SmallCuteMonkey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringMVC拦截器的实现(也就是登录是一定要通过登录的页面)相关的知识,希望对你有一定的参考价值。

UserController类中:

   @RequestMapping("login")

    public String login(User user, HttpServletRequest request){
         User htUser = userService.queryByUsernameAndPassword(user);

//判断是否登录成功

         if(htUser!=null){
             HttpSession session=request.getSession();
             session.setAttribute("user",htUser);//把HtUserr 的值传入user中然后可以通过getAttrubute()进行获取,最后拦截器进行放行

//listpage是分页管理系统

             return "redirect:listpage";
         }
package com.zjj.inter;

import com.zjj.pojo.User;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class LoginInterceptor implements HandlerInterceptor {
    //方法执行之前拦截
    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
        HttpSession session = httpServletRequest.getSession();
        User user = (User) session.getAttribute("user");
        //true 放行 false拦截
        if(user!=null){
            return true;
        }
//如果没有登录成功,或者没有先进入拦截页面进行登录,将跳转到拦截页面
        httpServletResponse.sendRedirect("login.jsp");
        return false;
    }
    //方法接收请求之后,解析视图之前拦截
    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {

    }
    //方法执行完毕,视图渲染结束之后执行
    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {

    }
}

还可以定义其他的拦截器看情况而定
preHandle方法执行之前进行拦截。
postHandle()方法执行之后拦截
AfterCompletion()方法执行完毕拦截。

interceptor /ˌɪntəˈsɛptə/
n. 截击舰,[][] 截击机;拦截器;拦截者(interceptor的复数)

SpirngMvc.xml文件加上如下的配置:

<!-- 配置类似于全局的拦截器  如果项目中用到拦截器,需要配此项,如果没用的到拦截器,不能配,否则会报错-->
<mvc:interceptors>
    <mvc:interceptor>
<!-- 表示拦截项目下的所有    -->
        <mvc:mapping path="/**"/>
        <!-- 表示排除login请求的拦截 exclude英文意思排除   -->

        <mvc:exclude-mapping path="/login"/>
        <bean class="com.zjj.inter.LoginInterceptor"></bean>
   </mvc:interceptor>
</mvc:interceptors>

以上是关于SpringMVC拦截器的实现(也就是登录是一定要通过登录的页面)的主要内容,如果未能解决你的问题,请参考以下文章

SpringMVC拦截器实现登录认证

springmvc 拦截器 拦截成功怎么返回登录页面

spring security 默认拦截和 springmvc 的Interceptor 拦截冲突的问题

spring mvc 拦截器登录超时怎么跳转到登录页面?

Spring AOP中@Aspect拦截介绍(一)

SpringMVC拦截器