本例实现登陆时的验证拦截,采用SpringMVC拦截器来实现
当用户点击到网站主页时要进行拦截,用户登录了才能进入网站主页,否则进入登陆页面
核心代码
首先是index.jsp,显示链接
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>" rel="external nofollow" > <title>首页</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css" rel="external nofollow" > --> </head> <body> <div style="margin:0 auto;padding-top:100px;font-size:18px;" align="center"> <p><a href="loginpage.html" rel="external nofollow" >登陆</a></p> <p><a href="user/home.html" rel="external nofollow" >用户中心</a></p> <p><a href="exception.html" rel="external nofollow" >触发异常</a></p> </div> </body> </html>
controller类
package com.jikexueyuan.demo.springmvc.lesson4.controller; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import com.jikexueyuan.demo.springmvc.lesson4.constant.Global; import com.jikexueyuan.demo.springmvc.lesson4.exception.MyException; import com.jikexueyuan.demo.springmvc.lesson4.model.User; import com.jikexueyuan.demo.springmvc.lesson4.service.LoginService; /** * 这个例子讲解了如何定义MVC三层注解,使用@Resource进行注入,以及使用@RequestMapping、@RequestParam 、@SessionAttributes */ @Controller public class LoginController extends BaseController { @Resource LoginService service; @Resource HttpServletRequest request; @RequestMapping("/exception") public void exception() throws MyException{ throw new MyException("测试springmvc中的异常捕获"); } @RequestMapping("/loginpage") public String toLoginPage(){ return "/WEB-INF/jsp/login.jsp"; } @RequestMapping("/user/home") public String toUserHome(){ return "/WEB-INF/jsp/userhome.jsp"; } @RequestMapping("/logout") public String logout(){ request.getSession().removeAttribute(Global.USER_SESSION_KEY); return "redirect:/"; } @RequestMapping(value = "/doLogin", method = RequestMethod.POST) public String doLogin(@RequestParam String userName, @RequestParam String password){ try { User user = service.doLogin(userName, password); request.getSession().setAttribute(Global.USER_SESSION_KEY, user); return "redirect:/user/home.html"; } catch (Exception e) { return "/WEB-INF/jsp/login.jsp"; } } }
当点击用户中心时,触发拦截,相关配置如下
在spring-mvc.xml中加上拦截配置,拦截所有URL中包含/user/的请求,当然请求用户中心时就会触发这个拦截器了
<mvc:interceptors> <mvc:interceptor> <!-- 拦截所有URL中包含/user/的请求 --> <mvc:mapping path="/user/**"/> <bean class="com.jikexueyuan.demo.springmvc.lesson4.interceptor.LoginInterceptor"></bean> </mvc:interceptor> </mvc:interceptors>
然后是bean指向的具体的interceptor类,如果session保存的用户信息为null,则跳到login页面,postHandle和afterCompletion方法都不执行,反之都执行。
package com.jikexueyuan.demo.springmvc.lesson4.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import com.jikexueyuan.demo.springmvc.lesson4.constant.Global; public class LoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { Object user = request.getSession().getAttribute(Global.USER_SESSION_KEY); if (user == null) { System.out.println("尚未登录,调到登录页面"); response.sendRedirect("/loginpage.html"); return false; } return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("postHandle"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("afterCompletion"); } }
至此,简单的springmvc拦截器就完成了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍springmvc拦截器登录验证示例,包括了springmvc拦截器登录验证示例的使用技巧和注意事项,需要的朋友参考一下 一开始,学了拦截器与过滤器,咋一看两者有点像,实际上两者有很大的不同。就用拦截器和过滤器分别做了登录验证试验,这次先说拦截器。下面是自己实践的一个实例: 在spring-mvc.xml中配置拦截器: 如上所示,这里配置了LoginIntercepter,为了简单起
本文向大家介绍SpringBoot拦截器实现登录拦截的方法示例,包括了SpringBoot拦截器实现登录拦截的方法示例的使用技巧和注意事项,需要的朋友参考一下 源码 GitHub:https://github.com/291685399/springboot-learning/tree/master/springboot-interceptor01 SpringBoot拦截器可以做什么 可以对UR
本文向大家介绍Spring MVC 拦截器实现登录,包括了Spring MVC 拦截器实现登录的使用技巧和注意事项,需要的朋友参考一下 上篇博文我在博客中讲到如何使用spring MVC框架来实现文件的上传和下载,今天小钱给大家再来分享和介绍Spring MVC框架中相当重要的一块功能——拦截器。 关于拦截器的概念我在这里就不多说了,大家可以上网百度或者看别人写的具体博客,我今天要说的是拦截器在实
本文向大家介绍Struts拦截器实现拦截未登陆用户实例解析,包括了Struts拦截器实现拦截未登陆用户实例解析的使用技巧和注意事项,需要的朋友参考一下 本文研究的主要是Struts拦截器实现拦截未登陆用户,具体实现如下。 首先建立一个工具类: checkPrivilegeInterceptor:这个类继承interceptor,这是一个接口,要实现三个方法,要是觉得比较多的话,可以继承他的实现类A
本文向大家介绍SpringMVC中的拦截器详解及代码示例,包括了SpringMVC中的拦截器详解及代码示例的使用技巧和注意事项,需要的朋友参考一下 本文研究的主要是SpringMVC中的拦截器的介绍及实例代码,配置等内容,具体如下。 Springmvc的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理。本文主要总结一下springmvc中拦截器是如何定义
本文向大家介绍vue+axios实现登录拦截的实例代码,包括了vue+axios实现登录拦截的实例代码的使用技巧和注意事项,需要的朋友参考一下 一个项目学会vue全家桶+axios实现登录、拦截、登出功能,以及利用axios的http拦截器拦截请求和响应。 前言 该项目是利用了Github 提供的personal token作为登录token,通过token访问你的Repository List。
本节,我们将通过 Spring MVC 拦截器(Interceptor)来实现一个用户登录权限验证的案例。 在本案例中,只有登录后的用户才能访问系统主页,若没有登录就直接访问主页,则拦截器会将请求拦截并跳转到登录页面,同时在登录页面中给出提示信息。若用户登陆时,用户名或密码错误,则登录页也会显示相应的提示信息。已登录的用户在系统主页点击“退出登录”时,跳转会登录页面,流程图如下。 图1:用户登录流
本文向大家介绍详解springmvc拦截器拦截静态资源,包括了详解springmvc拦截器拦截静态资源的使用技巧和注意事项,需要的朋友参考一下 springmvc拦截器interceptors springmvc拦截器能够对请求的资源路径进行拦截,极大的简化了拦截器的书写。但是,千万千万要注意一点:静态资源的放行。 上代码: 问题来了,在请求jsp页面的时候,你的静态资源的访问仍然会被自定义拦截器