<!-- 拦截器配置--> <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] 举报,一经查实,本站将立刻删除。