Spring MVC过滤器-登录过滤的代码实现

发布时间 - 2026-01-10 22:21:50    点击率:

一个非常简单的登录权限拦截器,具体代码如下:

以下代码是继承OncePerRequestFilter实现登录过滤的代码:

/** 
 * 
 * @author geloin 
 * @date 2012-4-10 下午2:37:38 
 */ 
package com.test.spring.filter; 
 
import java.io.IOException; 
import java.io.PrintWriter; 
 
import javax.servlet.FilterChain; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
 
import org.springframework.web.filter.OncePerRequestFilter; 
 
/** 
 * 登录过滤 
 * 
 * @author geloin 
 * @date 2012-4-10 下午2:37:38 
 */ 
public class SessionFilter extends OncePerRequestFilter { 
 
  /* 
   * (non-Javadoc) 
   * 
   * @see 
   * org.springframework.web.filter.OncePerRequestFilter#doFilterInternal( 
   * javax.servlet.http.HttpServletRequest, 
   * javax.servlet.http.HttpServletResponse, javax.servlet.FilterChain) 
   */ 
  @Override 
  protected void doFilterInternal(HttpServletRequest request, 
      HttpServletResponse response, FilterChain filterChain) 
      throws ServletException, IOException { 
 
    // 不过滤的uri 
    String[] notFilter = new String[] { "login.html", "index.html" }; 
 
    // 请求的uri 
    String uri = request.getRequestURI(); 
 
    // uri中包含background时才进行过滤 
    if (uri.indexOf("background") != -1) { 
      // 是否过滤 
      boolean doFilter = true; 
      for (String s : notFilter) { 
        if (uri.indexOf(s) != -1) { 
          // 如果uri中包含不过滤的uri,则不进行过滤 
          doFilter = false; 
          break; 
        } 
      } 
      if (doFilter) { 
        // 执行过滤 
        // 从session中获取登录者实体 
        Object obj = request.getSession().getAttribute("loginedUser"); 
        if (null == obj) { 
          // 如果session中不存在登录者实体,则弹出框提示重新登录 
          // 设置request和response的字符集,防止乱码 
          request.setCharacterEncoding("UTF-8"); 
          response.setCharacterEncoding("UTF-8"); 
          PrintWriter out = response.getWriter(); 
          String loginPage = "...."; 
          StringBuilder builder = new StringBuilder(); 
          builder.append("<script type=\"text/javascript\">"); 
          builder.append("alert('网页过期,请重新登录!');"); 
          builder.append("window.top.location.href='"); 
          builder.append(loginPage); 
          builder.append("';"); 
          builder.append("</script>"); 
          out.print(builder.toString()); 
        } else { 
          // 如果session中存在登录者实体,则继续 
          filterChain.doFilter(request, response); 
        } 
      } else { 
        // 如果不执行过滤,则继续 
        filterChain.doFilter(request, response); 
      } 
    } else { 
      // 如果uri中不包含background,则继续 
      filterChain.doFilter(request, response); 
    } 
  } 
 
} 

写完过滤器后,需要在web.xml中进行配置:

<filter> 
  <filter-name>sessionFilter</filter-name> 
  <filter-class>com.test.spring.filter.SessionFilter</filter-class> 
</filter> 
<filter-mapping> 
  <filter-name>sessionFilter</filter-name> 
  <url-pattern>/*</url-pattern> 
</filter-mapping> 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# springmvc  # 登录过滤器  # 权限过滤器  # 浅谈springMVC拦截器和过滤器总结  # 通过原理解析Spring mvc的内置编码过滤器  # 中不  # 下午  # 弹出  # 时才  # 写完  # 大家多多  # 拦截器  # HttpServletResponse  # HttpServletRequest  # org  # web  # springframework  # http  # javax  # PrintWriter  # servlet  # ServletException  # FilterChain  # void  # protected 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 无锡营销型网站制作公司,无锡网选车牌流程?  Laravel路由怎么定义_Laravel核心路由系统完全入门指南  Laravel如何自定义错误页面(404, 500)?(代码示例)  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  js实现点击每个li节点,都弹出其文本值及修改  IOS倒计时设置UIButton标题title的抖动问题  如何快速搭建安全的FTP站点?  Laravel怎么发送邮件_Laravel Mail类SMTP配置教程  如何在阿里云高效完成企业建站全流程?  如何用VPS主机快速搭建个人网站?  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  如何在万网主机上快速搭建网站?  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  Laravel如何配置和使用缓存?(Redis代码示例)  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  如何在建站之星绑定自定义域名?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  Laravel如何使用Eloquent进行子查询  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  深圳网站制作培训,深圳哪些招聘网站比较好?  Laravel PHP版本要求一览_Laravel各版本环境要求对照  如何在IIS服务器上快速部署高效网站?  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  香港服务器选型指南:免备案配置与高效建站方案解析  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  怎么用AI帮你为初创公司进行市场定位分析?  Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】  如何用IIS7快速搭建并优化网站站点?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  PHP 500报错的快速解决方法  Laravel如何生成API文档?(Swagger/OpenAPI教程)  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  如何在IIS中新建站点并解决端口绑定冲突?  教学论文网站制作软件有哪些,写论文用什么软件 ?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程