• 拦截器的使用,不登录用户不能进行其他操作


    后台代码登陆成功以后将user存在session中

     1 @RequestMapping("login")
     2     @ResponseBody
     3     public String login( HttpSession session, User user, String code){
     4         Map<String, String> map = new HashMap<String, String>();
     5         String codes = (String) session.getAttribute("code");
     6 //        
     7         if (codes.equalsIgnoreCase(code)) {
     8             Md5Util m = new Md5Util();
     9             String pwd = m.GetMD5(user.getPwd());
    10             User user2 = loginService.loginUser(user.getUserName(),pwd);
    11             if (user2!=null) {
    12                 session.setAttribute("user", user2);
    13                 map.put("flg", "ok");
    14             } else {
    15                 map.put("flg", "error");
    16             }
    17         } else{
    18             session.setAttribute("loginError", "验证码不一致");
    19             map.put("flg", "error");
    20         }
    21         Gson gson = new Gson();
    22         String json = gson.toJson(map);
    23         return json;
    24 
    25         
    26         
    27     }
    28 
    29 
    30     
    View Code

    springmvc-servlet ssm核心配置文件  添加配置

     1 <mvc:interceptors>
     2     <mvc:interceptor>
     3     <!-- 拦截的路径 /** 表示拦截所有请求  拦截的时候,path一定要有 /-->
     4         <mvc:mapping path="/**"/>
     5         <!-- 哪些路径不被拦截 -->
     6         <mvc:exclude-mapping path="/login"/>
     7         <mvc:exclude-mapping path="/code"/>
     8         <!-- 配置一个拦截器 配置一个class -->
     9         <bean class="com.demo.interceptor.MyInterceptor"></bean>
    10     </mvc:interceptor>
    11 </mvc:interceptors>
    View Code

    编写一个拦截器 判断session中有没有值

     1 package com.demo.interceptor;
     2 
     3 import javax.servlet.http.HttpServletRequest;
     4 import javax.servlet.http.HttpServletResponse;
     5 
     6 import org.springframework.web.servlet.HandlerInterceptor;
     7 import org.springframework.web.servlet.ModelAndView;
     8 
     9 import com.demo.pojo.User;
    10 
    11 
    12 
    13 public class MyInterceptor implements HandlerInterceptor {
    14     /**
    15      * 执行完postHandle,才会执行afterCompletion。
    16      */
    17     @Override
    18     public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
    19             throws Exception {
    20 //        System.out.println("afterCompletion");
    21 //        System.out.println(arg2);
    22 //        System.out.println(arg3);
    23 //        System.out.println("-----------------------");
    24     }
    25 
    26     /**
    27      * 如果preHandle 返回true,则会执行postHandle方法。
    28      */
    29     @Override
    30     public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
    31             throws Exception {
    32 //        System.out.println("postHandle");
    33 //        System.out.println(arg2);
    34     }
    35 
    36     /**
    37      * preHandle 请求到达controller之前。
    38      */
    39     @Override
    40     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
    41 //        System.out.println("preHandle");
    42         // 先取得值!如果登录了,则会有值,并且还要将值存储到session中。 从session中取得值。
    43         // 取得到url的地址 相当于取得到 http://localhost:8080/08springmvc/login 地址
    44 //        String url = request.getRequestURI();
    45 //        System.out.println(url);
    46         
    47         // 取得session中的值。如果没有则不放行!
    48         User user = (User) request.getSession().getAttribute("user");
    49         
    50         if (user != null) {
    51             return true;
    52         }
    53         // 如果全部都是false,则继续登录
    54         request.getRequestDispatcher("login.jsp").forward(request, response);
    55         return false;
    56     }
    57 }
    View Code
  • 相关阅读:
    我的JAVA之旅(二)初识JAVA
    ORACLE并发处理
    我的JAVA之旅(一)安装配置
    我的JAVA之旅(三) 元素语法
    改变一生的五句话
    InstallShield集成安装MSDE2000最小版本(三) fishout特许授权发布
    IS2009修改XML File 奕婷特许授权发布
    SQL Server中多个表格求出相同列和不同列(答案来自CSDN上SQL专家的回答)
    InstallShield集成安装MSDE2000最小版本(二) fishout特许授权发布
    Installshield停止操作系统进程的代码 IS6及以上版本适用
  • 原文地址:https://www.cnblogs.com/xaoco/p/9121616.html
Copyright © 2020-2023  润新知