Spring MVC中的拦截器
来源:互联网 发布:免费cc域名申请不了? 编辑:程序博客网 时间:2024/06/06 01:38
I.实现HandlerInterceptor接口
// 在请求处理的方法之前执行// 返回true执行下一个拦截器,返回false不继续执行@Overridepublic boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception {boolean isUser = true;System.out.println("-------处理前-------");// 使用HttpServletRequest和HttpServletResponse实现拦截跳转if (!isUser) {// response.sendRedirect(request.getContextPath() + "/Index.jsp");RequestDispatcher rd = request.getRequestDispatcher("/Index.jsp");rd.forward(request, response);}return isUser;}
II.配置拦截器
注意拦截器路径的配置
<!-- 配置拦截器 --> <mvc:interceptors> <mvc:interceptor> <!-- /**表示包括路径及其子路径 比如/admin/*表示/admin/add,/admin/list但不包括/admin/user/add 而/adimn/**则包括/admin/user/add --> <mvc:mapping path="/**"/> <!-- 对应的拦截器 --> <bean class="com.duxd.interceptor.MyInterceptor"></bean> </mvc:interceptor> </mvc:interceptors>
需要注意的是这里加入了
III.登录拦截
mvc.xml
<!-- 配置拦截器 --> <mvc:interceptors> <mvc:interceptor> <!-- /**表示包括路径及其子路径 比如/admin/*表示/admin/add,/admin/list但不包括/admin/user/add 而/adimn/**则包括/admin/user/add --> <mvc:mapping path="/**"/> <!-- 对应的拦截器 --> <bean class="com.duxd.interceptor.LoginInterceptor"> <property name="allowedPass"> <list> <value>Login.do</value> </list> </property> </bean> </mvc:interceptor> </mvc:interceptors>LoginInterceptor
// 找出哪些url不被拦截,哪些需要被拦截private List<String> allowedPass;// 要加入getter和setter方法,否则报错public List<String> getAllowedPass() {return allowedPass;}public void setAllowedPass(List<String> allowedPass) {this.allowedPass = allowedPass;}@Overridepublic boolean preHandle(HttpServletRequest req, HttpServletResponse resp,Object handler) throws Exception {String url = req.getRequestURL().toString();String temp;System.out.println(url);// 输出了Login.do,是在mvc.xml里配置Interceptor时设置的value值,这里如果输入的url后缀为Login.do就返回true,否则返回false。for(int i = 0; i < allowedPass.size(); i++) {System.out.println(allowedPass.get(i));}Object user = req.getSession().getAttribute("user");if(user != null) {return true;}//for(String temp:allowedPass) {//if(url.endsWith(temp)) {//return true;//}//}for(int i = 0; i < allowedPass.size(); i++) {temp = allowedPass.get(i);if(url.endsWith(temp)) {return true;}}resp.sendRedirect(req.getContextPath() + "/Login.jsp");return false;}UserController
@Controllerpublic class UserController {@RequestMapping("/Login")public String Login(User user, HttpSession session) {System.out.println(user.getName() + "," + user.getPassword() + ";");if(user.getName().equals("duxd") && user.getPassword().equals("123456")){session.setAttribute("user", user);return "redirect:/Index.jsp";}return "redirect:/Login.jsp";}// 这个由于不在allowedPass中,会被拦截器拦截,重定向到Login界面@RequestMapping("/Add")public String add() {System.out.println("add");return "redirect:/Login.jsp";}
阅读全文
1 0
- Spring MVC中的拦截器
- Spring MVC学习-----------Spring中的拦截器
- spring mvc中的拦截器小结
- spring mvc中的拦截器小结
- spring mvc中的拦截器小结
- Spring mvc中的拦截器小结
- spring mvc中的拦截器小结
- Spring MVC 拦截器
- Spring MVC 拦截器
- Spring MVC 拦截器
- spring MVC拦截器
- Spring MVC拦截器
- spring mvc 拦截器
- spring mvc 拦截器
- spring mvc 拦截器
- Spring mvc 拦截器
- spring mvc 拦截器
- spring mvc 拦截器
- hibernate的缓存
- 视频播放控制-实时进度条显示画面不卡
- 找出数组的重复元素
- 牛顿法与拟牛顿法学习笔记(五)L-BFGS 算法
- 必须知道的八大种排序算法【java实现】(三) 归并排序算法、堆排序算法详解
- Spring MVC中的拦截器
- 最简单的Linux虚拟机磁盘扩容方法
- 使用Pycharm创建一个Django项目
- ubuntu dd指令
- <canvas> 标签
- php入门基础概念
- 教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神
- BlueZ-5.35蓝牙设备扫描源码分析
- Linux进程间六种通信方式