SpringMVC 拦截器实现
来源:互联网 发布:mac自带远程桌面连接 编辑:程序博客网 时间:2024/05/20 16:12
写拦截器的事例出现了一个错误,找了很久,解决了问题就决定放上来。
首先是一个userController
package org.fkit.controller;import javax.servlet.http.HttpSession;import org.fkit.user.User3;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;@Controller public class User3Controller {@RequestMapping (value="/login")public ModelAndView login(String loginname,String password,ModelAndView mv,HttpSession session){if(loginname!=null&&loginname.equals("tyf")&&password!=null&&password.equals("123")){User3 user=new User3();user.setLoginname(loginname);user.setPassword(password);user.setUsername("管理员");session.setAttribute("user", user);mv.setViewName("redirect:main");}else{mv.addObject("message", "登录名密码错误");mv.setViewName("loginForm");}return mv;}}登录页面loginForm.jsp
<form action="login" method="post"> <font color="red">${requestScope.message}</font><br> 登录名:<input type="text" name="loginname"><br> 密码:<input type="password" name="password"><br> <input type="submit" value="登录"> </form>再是跳转到main action的控制器BookController
package org.fkit.controller;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;@Controller public class BookController {@RequestMapping (value="/main")public String main(Model model){return "main";}}关键的地方来了就是我们的拦截器部分
package org.fkit.interceptor;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.fkit.user.User3;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;public class AuthorInterceptor implements HandlerInterceptor{private static final String [] IGNORE={"/loginForm","/login"};@Overridepublic void afterCompletion(HttpServletRequest arg0,HttpServletResponse arg1, Object arg2, Exception arg3)throws Exception {System.out.println("AuthorInterceptor afterCompletion执行了");}@Overridepublic void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,Object arg2, ModelAndView arg3) throws Exception {System.out.println("AuthorInterceptor postHandler执行了");}@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object handle) throws Exception {System.out.println("AutuorInterceprtor preHandle执行开始");boolean flag=false;String servletPath=request.getServletPath();for(String s:IGNORE)if(servletPath.contains(s)){flag=true;break;}if(!flag){User3 user=(User3)request.getSession().getAttribute("user");if(user==null){System.out.println("AuthorInteceptor拦截请求:");request.setAttribute("message","请先登录再访问");request.getRequestDispatcher("/WEB-INF/content/loginForm.jsp").forward(request, response);}else{System.out.println("放行请求");flag=true;}}return flag;}}
我出现的错误正是
request.getRequestDispatcher("/WEB-INF/content/loginForm.jsp").forward(request, response);
一开始只写了loginForm,浏览器解析不出,报了404,我是根据书本写的,不知道为什么会出这种错误。
springMVC的配置文件
<mvc:interceptors><mvc:interceptor><mvc:mapping path="/**"/><bean class="org.fkit.interceptor.AuthorInterceptor"/></mvc:interceptor></mvc:interceptors>
main.jsp是获取登录权限之后可以进去的页面,如果我们没有登录就直接访问main会遭到拦截器的拦截,这正是拦截器的作用所在。
只有输入正确的账号密码才能看到main.jsp
阅读全文
0 0
- springmvc拦截器实现
- SpringMVC 拦截器实现
- SpringMVC 拦截器实现
- SpringMVC 登录拦截器实现
- SpringMVC拦截器的实现
- springmvc拦截器的实现
- SpringMvc拦截器的实现
- SpringMVC拦截器实现登录
- [SpringMVC] SpringMVC拦截器
- SpringMVC中实现自己的拦截器
- SpringMVC 登陆拦截器实现登陆控制
- SpringMVC拦截器实现登录控制
- SpringMVC拦截器实现登录认证
- springmvc拦截器实现自动登录
- springmvc拦截器实现登陆认证
- SpringMVC通过拦截器实现登录控制
- SpringMVC拦截器实现防重复提交
- SpringMVC配置拦截器实现登录控制
- 学习笔记——object detection+DL的发展(RCNN→Fast RCNN→Faster RCNN)
- Linux启动Tomcat返回JRE_HOME字段错误
- 数据挖掘系列(四)聚类算法评价指标
- 解除认证攻击
- 54. Spiral Matrix
- SpringMVC 拦截器实现
- 文章标题
- Stream 里面的ifPresent用法
- Linux 文件特殊权限
- 基于pycaffe从零开始写mnist(第四篇)——生成train_loss图片
- Python初入门(六)(Head First Python 第六章 打包代码与数据 ,字典,类与继承)
- 类加载器、双亲委派模型
- jQuery的扩展与noConflict小结
- C语言 简单选择排序算法