zoukankan      html  css  js  c++  java
  • SpringMVC拦截器

    拦截器

    1.定义

    Spring Web MVC 的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理。
    常用:未登录拦截、角色分配、自动登录、权限控制等 

    2.自定义拦截器

    //自定义的拦截器需要实现HandlerIntercrptor,并且实现其中的方法 
    public class LoginIntercrptor implements HandlerInterceptor{
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception {
            //Controller执行前调用此方法
            // 返回true表示继续执行,返回false中止执行
            // 常用于登录校验、权限拦截等
            HttpSession httpSession = request.getSession();
            User user = (User) httpSession.getAttribute("user");
            if (user!=null) {
                //不为空表示登录了直接放行
                return true;
            }else {
                response.sendRedirect(request.getContextPath()+"/login.html");
            }
            return false;
        }
        @Override
        public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
            // controller执行后但未返回视图前调用此方法
            // 这里可在返回用户前对模型数据进行加工处理,比如这里加入公用信息以便页面显示
        }
        @Override
        public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
            // controller执行后且视图返回后调用此方法
            // 这里可得到执行controller时的异常信息
            // 这里可记录操作日志
        }
    }

     3.配置文件进行声明

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context" 
           xmlns="http://www.springframework.org/schema/beans"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xsi:schemaLocation="
        http://www.springframework.org/schema/mvc  
        http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd  
    
        http://www.springframework.org/schema/beans  
        http://www.springframework.org/schema/beans/spring-beans-4.3.xsd 
        http://www.springframework.org/schema/context  
        http://www.springframework.org/schema/context/spring-context-4.3.xsd ">
        <!--扫描controller注解-->
        <context:component-scan base-package="com.itqf.controller"/>
      <!--配置处理器--> <mvc:annotation-driven/>
      
    <!--配置拦截器-->
      
    <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <mvc:exclude-mapping path="/login.html"/> <!--添加自己定义的拦截器--> <bean class="com.itqf.interceptor.LoginIntercrptor"></bean> </mvc:interceptor> </mvc:interceptors>
      <!--配置视图解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="suffix" value=".jsp"/> <property name="prefix" value="/"/> </bean> </beans>

    4.页面属性

    <form action="/login.html" method="post">
        用户名:<input type="text" name="name"><br>
        密码:<input type="password" name="pwd">
        <input type="submit" value="登录">
    </form> 

     5.控制器类

    @Controller
    public
    class LoginController { @RequestMapping("/index.html") public String index(){ return "login"; } @RequestMapping("/login.html") public String login(User user, HttpSession session){ System.out.println(user); if (user == null){ }else { if ("root".equals(user.getName())||"111".equals(user.getPwd())){ //登陆成功 session.setAttribute("user",user);
            //成功跳转到index页面
    return "forward:index.jsp"; } } return "login"; } }
  • 相关阅读:
    一个Electron的设计缺陷及应对方案
    如何点击穿透Electron不规则窗体的透明区域
    Electron团队为什么要干掉remote模块
    Clickhouse 单机双实例
    Kafka安全认证SASL/PLAIN
    Syslog的使用
    Kafka Consumer
    Kafka Producer客户端
    Kafka客户端操作
    springboot集成flyway实践
  • 原文地址:https://www.cnblogs.com/a77355699/p/8082305.html
Copyright © 2011-2022 走看看