ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SpringMVC---拦截器

2021-11-02 18:59:53  阅读:126  来源: 互联网

标签:拦截器 SpringMVC System --- println login public out


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>

标签:拦截器,SpringMVC,System,---,println,login,public,out
来源: https://blog.csdn.net/m_xiaozhilei/article/details/121106513

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有