利用springmvc中的拦截器如何实现一个登录验证功能

  介绍

这期内容当中小编将会给大家带来有关利用springmvc中的拦截器如何实现一个登录验证功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

在spring mvc。xml中配置拦截器:

& lt; mvc: interceptors>   & lt; mvc: interceptor>   & lt; mvc:=映射路径“/user/*“/比;   & lt; !——定义在mvc:拦截下面的表示是对特定的请求才进行拦截的——比;   & lt; bean类=癱om.wyb.interceptor.LoginInterceptor"/比;   & lt;/mvc: interceptor>   & lt;/mvc: interceptors>

如上所示,这里配置了LoginIntercepter,为了简单起见,该过滤器只拦截了URL为“/user/*“的请求。

要拦截的请求对应控制器如下:

进口java.util.ArrayList;
  进口并不知道;
  
  进口javax.annotation.Resource;
  进口javax.servlet.http.HttpServletRequest;
  
  进口org.apache.log4j.Logger;
  进口org.springframework.beans.factory.annotation.Autowired;
  进口org.springframework.stereotype.Controller;
  进口org.springframework.ui.Model;
  进口org.springframework.web.bind.annotation.RequestMapping;
  进口org.springframework.web.bind.annotation.ResponseBody;
  
  进口com.wyb.domain.User;
  进口com.wyb.service.IUserService;
  进口com.wyb.service.impl.UserServiceImpl;
  
  @ controller
  @RequestMapping (“/user")
  公开课用户控件{
  
  私有静态最终记录器日志=Logger.getLogger (UserController.class);
  
  @ autowired
  私人IUserService userService;
  
  
  @RequestMapping (“/showAllUser")
  公共字符串showAllUser(模型m) {
  Listuserlist=new ArrayList ();
  userlist=userService.findAllUser ();
  (用户用户:userlist) {
  System.out.println (user.getUserName ());
  }
  返回“/jsp/showAllUser";
  
  }
  }

这里的showAllUser()方法是为了输出所有的用户,为了表明执行了方法,将所有用户在后台打印,为URL: http://localhost: 8080/TestSSM/user/showAllUser可见该URL肯定会被LoginIntercepter拦截。

测试页面showAllUser。jsp如下:

& lt; % @页面语言=癹ava"contentType=皌ext/html;charset=UTF-8"   pageEncoding=癠TF-8" %比;   & lt; !DOCTYPE html公众“-//W3C//DTD html 4.01过渡//EN"“http://www.w3.org/TR/html4/loose.dtd"比;   & lt; html>   & lt; head>   & lt;元http-equiv=癈ontent-Type"内容=皌ext/html;charset=UTF-8"比;   & lt; title>显示所有User   & lt;/head>   & lt; body>   这是showAllUser页面! ! !   & lt;/body>   & lt;/html>

LoginIntercepter如下:

进口javax.servlet.http.HttpServletRequest;
  进口javax.servlet.http.HttpServletResponse;
  进口javax.servlet.http.HttpSession;
  
  进口org.springframework.web.servlet.HandlerInterceptor;
  进口org.springframework.web.servlet.ModelAndView;
  
  进口com.wyb.domain.User;
  
  公共类LoginInterceptor实现HandlerInterceptor {
  
  @Override
  公共空间afterCompletion (HttpServletRequest arg0, HttpServletResponse __arg1、对象最长,异常长度)
  抛出异常{
  System.out.println(“这是afterCompletion LoginInterceptor");
  
  }
  
  @Override
  公共空postHandle (HttpServletRequest arg0, HttpServletResponse __arg1、对象最长,ModelAndView长度)
  抛出异常{
  System.out.println(“这是postHandle LoginInterceptor");
  
  }
  
  @Override
  公共布尔preHandle (HttpServletRequest请求,HttpServletResponse响应对象最长){抛出异常//TODO自动生成方法存根
  System.out.println(“这是preHandle LoginInterceptor");
  HttpSession会话=request.getSession ();
  用户用户=(用户)session.getAttribute (“user");
  如果(用户==null) {
  System.out.println(“没有用户在LoginInterceptor ! ! !“);
  request.getRequestDispatcher (“/web - inf/jsp/login.jsp")。提出(请求、响应);
  
  }//返回真正的代表继续往下执行
  返回true;
  }
  
  }

,这里我犯了一个错误,聪明的小伙伴也许已经看出来了,如果按照上面的代码,当我们访问:http://localhost: 8080/TestSSM/user/showAllUser结果如下:

利用springmvc中的拦截器如何实现一个登录验证功能

咋一看,成功拦截了,输入用户名信息,正常跳转到主页,再次进入http://localhost: 8080/TestSSM/user/showAllUser如下:

利用springmvc中的拦截器如何实现一个登录验证功能