微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SpringMVC---拦截器

@H_404_3@

SpringMVC—拦截

  1. 拦截器配置
  2. 一个拦截
  3. 练习

拦截器的配置

<!--    拦截器配置-->
    <mvc:interceptors>
<!--        第一个拦截器-->
        <mvc:interceptor>
            <mvc:mapping path="/**"/>   <!--拦截位置/**代表所有-->
            <bean class="Mr_xiao.interceptor.HelloInterceptor" /><!--拦截器的位置-->
        </mvc:interceptor>
    </mvc:interceptors>

一个拦截

HelloInterceptor.java 继承接口HanderInterceptor重写三个方法

/**
 * 第一个拦截器
 * 拦截位置在哪?
 * 怎么放行or不放行?
 */
public class HelloInterceptor implements handlerinterceptor {
    //拦截前执行     返回true继续执行,返回false终止执行
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("拦截前运行"+handler);
        return true;
    }
    //此方法可以进一步更改视图模型(拦截进行中)
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("拦截进行中"+handler);
//        modelAndView.addobject("lol","edg   WINNER");
//        modelAndView.setViewName("404Error");
    }
    //视图渲染结束后执行(拦截后执行)
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("拦截后运行"+handler);
    }
}

练习

Login控制器 session LOGIN=admin
Game控制器 “你正在玩英雄联盟”
拦截器 检查LOGIN有没有?? 有—》放行 没----》login.jsp

创建登陆拦截器loginInterceptor

public class LoginInterceptor implements handlerinterceptor {
    //拦截前执行     返回true继续执行,返回false终止执行
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        Object uname=request.getSession().getAttribute("login");
        System.out.println("uname="+uname);
        if(uname==null||uname.equals("")){
            response.sendRedirect("login.jsp");
            return false;
        }else {
            return true;
        }
    }
    //此方法可以进一步更改视图模型(拦截进行中)
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("我要去打游戏咯~");
    }
}

login.jsp

<form action="login" method="post">
        用户名:<input type="text" name="uname" required><br/>
        密码:<input type="password" name="upwd">
        <input type="submit" value="Login">
    </form>
    <h2><a href="clearlogin">退出登陆</a> </h2>
    <h2><a href="begingame">开始游戏</a> </h2>

实现类

@Controller
@SessionAttributes({"login"})
public class LoginController {
    @RequestMapping("/login")
    public String login(String uname, String upwd, ModelMap map){
        System.out.println("用户名:"+uname);
        System.out.println("密码:"+upwd);
        map.put("login","admin");
        return "success";		//登陆成功自己控制跳转到哪
    }
    @RequestMapping("/begingame")
    public String begingame(){
        System.out.println("开启我的游戏之旅....");
        return "success";
    }
    @RequestMapping("/clearlogin")
    public String clearlogin(SessionStatus ss){
        System.out.println("退出登录....");
        ss.setComplete();
        return "redirect:login.jsp";
    }
}

最终测试结果看控制台信息即可
还有不要忘了配置拦截

 <mvc:interceptors>
<!--        登陆拦截器-->
        <mvc:interceptor>
            <mvc:mapping path="/begingame"/>
            <bean class="Mr_xiao.interceptor.LoginInterceptor" />
        </mvc:interceptor>
    </mvc:interceptors>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐