介绍
这期内容当中小编将会给大家带来有关利用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结果如下:
咋一看,成功拦截了,输入用户名信息,正常跳转到主页,再次进入http://localhost: 8080/TestSSM/user/showAllUser如下: