初试Filter对权限和session的控制。

用Filter防止用户访问一些未被授权的资源,比如一个用户未登录就不允许访问网站的某些页面,并将页面重定向到需要用户登录的页面,下面是一个相关的例子:

package com.drp.util.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class AuthFilter implements Filter {
 
 public void destroy() {

 }

 public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
   FilterChain filterChain) throws IOException, ServletException {//1,doFilter方法的第一个参数为ServletRequest对象。此对象给过滤器提供了对进入的信息(包括表单数据、cookie和HTTP请求头)的完全访问。第二个参数为ServletResponse,通常在简单的过滤器中忽略此参数。最后一个参数为FilterChain,此参数用来调用servlet或JSP页。

  HttpServletRequest request = (HttpServletRequest)servletRequest;//;//如果处理HTTP请求,并且需要访问诸如getHeader或getCookies等在ServletRequest中无法得到的方法,就要把此request对象构造成HttpServletRequest
  HttpServletResponse response = (HttpServletResponse)servletResponse。

  String currentURL = request.getRequestURI();//取得根目录所对应的绝对路径:

  
  String targetURL = currentURL.substring(currentURL.indexOf("/", 1), currentURL.length());  //截取到当前文件名用于比较

  HttpSession session = request.getSession(false);
  
  if (!"/login.jsp".equals(targetURL)) {//判断当前页是否是重定向以后的登录页面页面,如果是就不做session的判断,防止出现死循环
   if (session == null || session.getAttribute("user") == null) {//*用户登录以后需手动添加session
    System.out.println("request.getContextPath()=" + request.getContextPath());
    response.sendRedirect(request.getContextPath() + "/login.jsp");//如果session为空表示用户没有登录就重定向到login.jsp页面
    return;
   }
  }
  //加入filter链继续向下执行
  filterChain.doFilter(request, response);//.调用FilterChain对象的doFilter方法。Filter接口的doFilter方法取一个FilterChain对象作为它的一个参数。在调用此对象的doFilter方法时,激活下一个相关的过滤器。如果没有另一个过滤器与servlet或JSP页面关联,则servlet或JSP页面被激活。

 }

 public void init(FilterConfig filterConfig) throws ServletException {

 }
}
然后在配置文件web.xml里添加: (请注意,过滤是在serlvet规范2.3版中初次引入的。因此,web.xml文件必须使用DTD的2.3以上版本。)
<filter>
   <filter-name>AuthFilter</filter-name>
   <filter-class>com.drp.util.filter.AuthFilter</filter-class>
 </filter>
  
 <filter-mapping>
   <filter-name>AuthFilter</filter-name>
   <url-pattern>*.jsp</url-pattern>//表示对所有jsp文件有效
 </filter-mapping>

这样用户没有登录的情况下就会转到登录页面。
蓝牙HCI Dongle实战:从芯片选型到协议栈集成的完整指南 本文详细介绍了蓝牙HCI Dongle的实战应用,从芯片选型到协议栈集成的完整指南。通过对比CSR8510、nRF52840等主流芯片的性能和价格,提供选型建议和避坑技巧。同时,深入解析Zephyr协议栈移植和常见问题排查,帮助开发者高效完成蓝牙项目开发。 阅读详情

相关推荐

OpenClaw:深度学习驱动的智能编程工具实战解析

智能编程工具通过深度学习技术革新传统开发流程,其核心在于代码语义理解与实时协作能力。这类工具采用AI代码补全、错误预测等技术,显著降低开发者认知负荷,尤其适用于复杂业务逻辑开发和遗留系统维护场景。以OpenClaw为例,其智能填充和上下文感知功能可提升40%编码效率,减少65%调试时间。关键技术实现包含自然语言处理、代码静态分析等,在金融科技、电商系统等领域具有广泛应用前景。热词提示:代码理解引擎、智能工作流整合展现了当前AI辅助开发的最新趋势。

chubaisheng8627的博客 320

Filter过滤器 &(登录功能拦截例子)

Filter:简单来说就是设立在客户端和服务器之间的一个拦截关卡,当发现客户端请求的资源或者服务器响应给客户端的资源不规范(比如:敏感字符等)就会拦截该资源还有一个作用就是:可以在拦截关卡这里存放一些权限控制在里面 注意1:这个实现的Filter是 javax.servlet包下的Filter注意2:只要Filter的拦截路径是/* 那么客户端访问的路径资源或者服务器响应的资源 都是会先被拦截下来的,然后放不放行看代码 代码演示: eg:当我们没有Filter拦截的时候我们开启服务器访问hello.jsp资

lwj_07的博客 3414

保姆级教程:DBeaver社区版安装与驱动配置(附阿里云镜像解决下载超时)

本文提供DBeaver社区版的保姆级安装教程,涵盖版本选择、安装路径设置到驱动配置优化。特别针对国内用户遇到的下载超时问题,详细介绍了如何配置阿里云镜像加速驱动下载,确保高效连接MySQL等主流数据库。

weixin_30430169的博客 479

hibernate过滤器的使用方法

当我们使用hibernate并配置了关联关系时,如一对多,有时候我们查取一的一端的时候,并不需要把多的一端全部查询出来,而是需要一些符合条件的,这时就用到了hibernate过滤器。 比如,有员工Staff和考勤记录Att两张表,配置一对多,要查询今天的所有考勤记录。今天是个时间段,从00:00:00到23:59:59,我们需要配置hibernate的过滤器,xml配置如下: <!DOCTY

lkl713的专栏 3328

NOIP2008年普及组初赛题目答案及解析

NOIP2008年初赛详细题解

城南蝈蝈 926

Spring WebFlux响应式编程实战(三):优雅处理异常与高效调试技巧

本文深入探讨了Spring WebFlux响应式编程中的异常处理与调试技巧。文章通过电商订单流处理场景,详细解析了Reactor核心操作符onErrorReturn、onErrorResume和onErrorMap的实战应用,并介绍了如何构建@ControllerAdvice和WebExceptionHandler全局异常处理防线。同时,提供了使用.log()操作符、Hooks.onOperatorDebug()及BlockHound进行高效调试的方法,旨在帮助开发者构建健壮、可维护的响应式应用。

weixin_29252171的博客 65

session和Filter

jsp利用servlet提供的HttpSession接口识别一个用户,存储这个用户的所有访问信息。默认情况下,jsp允许会话跟踪,一个新的HttpSession对象将会自动地为新的客户端实例化。禁止会话跟踪需要关掉它,通过将page指令中session属性值设为false来实现。方法功能实现返回session对象中于指定名称绑定的对象,如果不存在则返回null返回session对象中所有的对象名称返回session对象被创建的时间,以毫秒为单位,从1970年1月1号凌晨开始算起。

暮辰的博客 518

【DaVinci Developer实战指南】从入门到精通:软件组件设计与配置全解析

本文详细解析了DaVinci Developer在汽车电子开发中的核心应用,从软件组件设计到配置实战,涵盖Application SWC创建、RunnableEntity设计及Exclusive Area配置等关键环节。通过实际案例分享,帮助开发者快速掌握AUTOSAR架构下的ECU软件开发技巧,提升工作效率与系统稳定性。

weixin_30952535的博客 248

实现sessionfilter_通用的用户登录过滤器(SessionFilter)

本系列文章导读:功能描述用于检查用户是否登录了系统,如果未登录,则重定向到指的登录页面。使用方法在 java web 项目的 web.xml 文件中添加如下代码,对每个参数都进行了详细的说明。SessionFiltercom.hmw.filter.SessionFilter将当前登录的用户的信息保存在 session 中时使用的key,如果没有配置此参数,则该过滤器不起作用sessionKeyus...

weixin_29204205的博客 1405

【微服务】SpringBoot 对接飞书审批流程使用详解

SpringBoot 对接飞书审批流程使用详解

congge_study的博客 3769

主成分分析(Principal Component Analysis,PCA)

主成分分析1.主成分分析1.1 降维(Dimensionality Reduction)1.2 均值(Mean)1.3 方差(Variance)1.4 协方差(Covariance)1.5 协方差矩阵(Covariance Matrix)1.6 线性变换(Linear Transformation)1.7 主成分分析(PCA)1.8 PCA和SVD的关系 1.主成分分析 关于PCA的介绍:用最直观的方式告诉你:什么是主成分分析PCA 笔记来源:Principal Component Analysis (PC

一个搬运知识的笨小孩 3227

初试Filter对权限和session的控制

用Filter防止用户访问一些未被授权的资源,比如一个用户未登录就不允许访问网站的某些页面,并将页面重定向到需要用户登录的页面,下面是一个相关的例子:package com.drp.util.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;imp

鸟儿飞的专栏 913

【升级U8+】不能将值 NULL 插入列 ‘VT_ID‘,表 ‘VoucherItems‘;列不允许有 Null 值。

不能将值 NULL 插入列 ‘VT_ID’,表 ‘UFDATA_006_2012.dbo.VoucherItems’;列不允许有 Null 值。INSERT 失败。

努力不懈的为广大客户提供优质的产品与真诚、贴心、专业的服务! 513

MCP协议实战:用OpenClaw构建可插拔AI Agent工具生态

在AI Agent开发中,工具集成是核心挑战之一。传统方式需要为每个功能编写特定的API调用、错误处理和解析逻辑,导致代码耦合度高、开发效率低下。Model Context Protocol(MCP)作为一种标准化协议,定义了工具与大型语言模型之间的通用通信规范,使得工具能够以统一格式描述自身功能。通过MCP,工具开发者可以独立构建功能模块,而AI Agent框架(如OpenClaw)则作为集线器,动态加载和管理这些工具。这种架构将开发模式从“全栈硬编码”升级为“生态集成”,显著提升了工具复用性和系统可维护

weixin_30838873的博客 276

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

实现sessionfilter_对Filter和Session的理解与学习

Filter简介:ServletAPI中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。通过Filter技术,开发人员可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截。简单说,就是可以实现web容器对某资源的访问前截获进行相关的处理,还可以在某资源向web容器返回响应前进行截获进行处理。doFilter方...

weixin_42584758的博客 858

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【JavaWeb开发-Servlet】应用过滤器实现登录功能验证(filter-login)

添加过滤器后每次访问不同路径都会先进行session过滤,看是否已经登录,登录了就可以访问其他页面,没登录就返回登录界面。因为此时session为空,跳转到登录页,此时session还是为空,陷入死循环,程序无法正常启动。原来需要一个一个写,现在通过过滤器拦截与放行可以实现一劳永逸了。修改方法:获取请求路径并进行判断,允许特定的几个页面放行。将filter写在最上面,/*可以拦截所有路径。

有朋自远方来,不亦乐乎。 2611

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Cookie,Session,Filter总结

它能够在一个request到达servlet之前预处理request,也可以在response离开servlet时处理response.换种说法,filter其实是一个“servlet chaining“(servlet 链).我们可以理解为filter位于请求发出和到达servlet处理之间。

m0_59219785的博客 364

登录拦截器LoginFilter正确打开方式(Token验证、将统一参数放入ServletRequest中)

登录拦截器LoginFilter正确打开方式(Token验证、将统一参数放入ServletRequest中)

weixin_45100257的博客 989

用户登录(login)过滤器(Filter)

在一个web应用中,通常需要用户认证,通过了用户认证才能访问网页。 几乎所有网页在访问前,都需要通过用户认证,所以用户认证可以做成一个过滤器。访问一个Servlet或JSP时,会自动的调用过滤器,过滤器里判断是否已经用户认证过了,如果已经认证通过,则显示页面,如果没有通过,则跳转至用户登录页面。 下面是用户登录过滤器的代码: (根据网上搜索到的一个例子,修改而成) ------

zhangzhipeng136的博客 5767

Hibernate 过滤器

Hibernate过滤器(filter)是全局有效的、具有名字、可以带参数的过滤器,对于某个特定的Hibernate session您可以选择是否启用(或禁用)某个过滤器。 Hibernate3的过滤器可以进行预定义,并可绑定在类和集合层。那么什么叫预定义过滤器呢?就是可以定义象"where"子句的限制性子句,但这些 子句是相对类和不同集合的元素的。除了这些过滤器条件可以被参数化外。系统还能...

weixin_30319153的博客 204

【Java-Web】利用Session和Filter进行权限管理

在使用浏览器的时候,浏览器如何保存我们的个人信息呢?有两种方法,一个是Cookie,一个是Session,区别在于,前者是在客户端保存,即我们的电脑或手机等设备上本地保存;后者是在服务器端保存,不需要占用我们本地的空间。

m0_65679465的博客 1470

登录过滤器LoginFilter的实现

需求:对url进行拦截, 当用户未登录的时候,跳转到登录界面。 LoginFilter package com.tao.smp.web.filter; import com.tao.smp.common.constant.SmpConst; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax...

西瓜游侠的博客 1万+

Java实现登录的过滤拦截(LoginFilter)

Java实现登录的过滤拦截(LoginFilter) 1、首先获取请求的地址,使用: request.getRequestURI(); 2、判断请求的地址是否是登录的jsp、servlet,以及一些静态资源如:css,img,js等。 如果是,直接放行; 如果不是,则跳转到登录界面login.jsp 3、代码实现如下:

Chehongdeng的博客 6233

java filter 登陆,Filter实现登陆验证

今天的简历被查看了十份,还是一个hr都没有给我打电话,有一个之前投的给我打电话,但是因为我现在在重庆没有面成。我吐槽完毕,分享今日学习心得对于有些页面,我们必须要求登陆成功以后才能访问,目前接触到三种方式,先来介绍一下使用Filter实现登陆拦截验证Filter是一个接口,若要自定义一个过滤器,则必须实现Filter接口。为了完成登陆验证,首先自定义一个登陆过滤器:LoginFilter.java...

weixin_35122994的博客 487
上一篇: jFreeChart初探(静态应用)
下一篇: 初探tomcat连接池
QIAOBING2000ICE
博客等级 码龄19年 0粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值