Java自定义拦截器详细教程
2018-10-31 10:59
405 查看
前言
Java编程中经常会有一些需要我们进行登录拦截的操作,或者实现,那么怎么用java代码实现一个拦截器呢?一般情况下实现拦截器需要两步,今天就给大家演示一个拦截器,废话不多说,代码+注释直接奉上!
第一步:自定义拦截器
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; /** *自定义拦截器 *实现HandlerInterceptor接口 **/ public class LoginInterceptor implements HandlerInterceptor{ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 获取作用域的user信息,此user信息需要在登录操作的同事放到作用域,以便于此处获取 String user=(String) request.getSession().getAttribute("user"); //获取请求的路径 String url=request.getRequestURI(); //打印路径信息,作为后台日志进行查看 System.out.println(url); //判断user对象的内容是否不为空; //或者是否是访问的后台登录方法(login); //因为我的页面直接导入的easyUI的js包为防止把页面样式拦截,所以加个判断,如果不是这样的话此判断可以省略 if(user!=null|url.endsWith("项目名/login")|url.lastIndexOf("jquery-easyui-1.4")>-1) { return HandlerInterceptor.super.preHandle(request, response, handler); }else { //判断没通过,证明用户没有进行登录操作,操作非法,进行返回登录页面(login.jsp)进行登录 //返回错误提示信息("请先登录!") request.getSession().setAttribute("msg", "请先登录!"); response.sendRedirect("login.jsp"); return false; } } }
第二步:拦截器注册类,使拦截器生效
import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class MyConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { // 使拦截器生效1.此处参数是我们自定义的拦截器名( LoginInterceptor ) 2.添加拦截规则(/**)拦截全部 registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**"); WebMvcConfigurer.super.addInterceptors(registry); } }
控制层代码
//登录验证是否是name='zhangsan',pwd='123' 的用户 @RequestMapping("login") public String doLogin(String name,String pwd,HttpServletRequest request) { //从请求中获取登录名信息,放到user对象,并放入作用域中,方便拦截器获取 request.getSession().setAttribute("user", name); //判断用户名和密码是否正确,此处也可以进行后台数据库的查询,我为了简单写死了登录名和密码 if(name.equals("zhangsan")&&pwd.equals("123")) { //用户名和密码正确重定向到跳转页面的后台方法 return "redirect:toPageList"; }else { // 登录失败,返回提示信息 request.getSession().setAttribute("msg", "账号或密码错误!"); //返回登录页面,重新登录 return "login"; } }阅读更多
相关文章推荐
- JAVA开发详细视频教程
- java日志框架log4j详细配置及与slf4j联合使用教程
- 阿里巴巴Java开发规约插件p3c详细教程及使用感受
- JAVAWEB开发之Servlet3.0新特性的使用以及注解的详细使用和自定义注解的方法、动态代理的使用、利用动态代理实现细粒度的权限控制以及类加载和泛型反射
- Java程序生成exe可执行文件详细教程(图文说明)
- java日志框架log4j详细配置及与slf4j联合使用教程
- 阿里巴巴Java开发规约插件p3c详细教程及使用感受
- 超详细的Xcode代码格式化教程,可自定义样式
- IntelliJ IDEA详细配置和使用教程(适用于Java开发人员)
- springMVC --拦截器详细,使用和自定义拦截器
- Java继承Exception自定义异常类教程以及Javaweb中用Filter拦截并处理异常
- java自定义拦截器用法实例
- Java注解教程:自定义注解示例,利用反射进行解析
- IntelliJ IDEA详细配置和使用教程(适用于Java开发人员)
- JAVA AJAX教程第三章—AJAX详细讲解
- Java注解教程及自定义注解
- Spark SQL 用户自定义函数UDF、用户自定义聚合函数UDAF 教程(Java踩坑教学版)
- 详解Java注解教程及自定义注解
- Java log4j详细教程
- java根据模板导出PDF详细教程(无bug版)