Springmvc拦截器
2021-01-06 12:30
阅读:539
YPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
标签:跳转 action 传输数据 info boolean ISE html ping gets
拦截器可以在控制层Controller方法前后执行对应的操作,以实现登录拦截,权限控制等功能。
1)编写拦截器,实现HandlerInterceptor接口;
//控制层拦截器实现 public class LoginInterceptor implements HandlerInterceptor{ /** *请求到达控制层之前执行 返回true,则放行,返回false,则拦截 *handler:请求的对象,如果是控制层请求,则为HandleMethod对象,可通过该对象获取控制层方法信息 * **/ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("进入拦截器"); //判定handler是否为控制层方法 if (handler instanceof HandlerMethod){ HandlerMethod handlerMethod= (HandlerMethod) handler; //获取方法名 String name=handlerMethod.getMethod().getName(); System.out.println("方法名:"+name); Class> beanType = handlerMethod.getBeanType(); System.out.println("控制层类名:"+beanType.getName()); } //去session中获取登录标识 HttpSession session = request.getSession(); User user= (User) session.getAttribute("user"); if (user!=null){//用户已登录,放行 return true; } //如果没有登录,则跳转到登录页面 response.sendRedirect(request.getContextPath()+"/login.jsp"); return false; } /** * 控制层方法调用之后,视图解析器解析之前执行 * modelAndView:控制层方法返回的模型视图对象 * **/ @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("进入拦截器postHandle方法"); if (modelAndView!=null){ System.out.println("需要跳转的页面:"+modelAndView.getViewName()); System.out.println("返回的Model数据:"+modelAndView.getModel()); System.out.println("返回的ModelMap数据:"+modelAndView.getModelMap()); modelAndView.addObject("postHandleInfo","postHandle中添加的值"); } } /** * 在视图解析器之后执行,通常做一些清理工作 * **/ @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("进入afterCompletion方法"); } }
2)Springmvc的配置文件中配置拦截器,并指定拦截的请求和放行的请求;
3)写一个控制层文件来传输数据;
@Controller public class IndexController { @RequestMapping("/login") public String login(String name, String password, HttpSession session){ System.out.println("获取到前台数据:name="+name+",password="+password); //todo 查询数据库,验证是否存在用户数据 User user=new User(); user.setName("科比"); if (user==null){//如果用户不存在,跳回登录页面 return "login.jsp"; } //登录成功,将用户信息放入session session.setAttribute("user",user); return "index.jsp"; } }
4)再写一个用户登录的页面和按钮;
"text/html;charset=UTF-8" language="java" isELIgnored="false" %>用户登录
Springmvc拦截器
标签:跳转 action 传输数据 info boolean ISE html ping gets
原文地址:https://www.cnblogs.com/xie-qi/p/12977393.html
评论
亲,登录后才可以留言!