给struts配置登陆验证过滤器,判断Session过期则重新登陆

struts1.2自定义标签之session验证 视频第一部分共两部分 下载前请阅读博客文章详细 博文链接:https://dlivan.iteye.com/blog/68374 立即下载

做的毕设题目,需要用到验证登陆状态,没有登陆的不能访问后台的页面,自动跳转到登陆页面。

参考了 http://blog.youkuaiyun.com/fly_fish456/article/details/8096305 这位兄台的博客之后,自己写了个过滤器:

1.首先是在登陆的Action中设置一个session来标志是否已经登陆:

HttpSession session = ServletActionContext.getRequest().getSession();
session.setAttribute("account", account);


2.在项目新建一个LoginFilter类作为过滤器:

package dorm.sys.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.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

public class LoginFilter extends HttpServlet implements Filter {

	public void destroy() {
	}

	public void doFilter(ServletRequest sRequest, ServletResponse sResponse,
			FilterChain filterChain) throws IOException, ServletException {

		HttpServletRequest request = (HttpServletRequest) sRequest;
		HttpServletResponse response = (HttpServletResponse) sResponse;
		HttpSession session = request.getSession();
		String url = request.getServletPath();
		String contextPath = request.getContextPath();

		if (url.equals("")) {
			url += "/";
		}
		// 未登录时,若访问后台资源,将过滤到login页面
		if ((url.startsWith("/") && !url.startsWith("/login"))) {
			String user = (String) session.getAttribute("account");
			if (user == null) {
				response.sendRedirect(contextPath + "/login.html");
				return;
			} else {
				// 登陆之后,验证session是否过期,session过期,转至登陆页面
				if (!ServletActionContext.getRequest()
						.isRequestedSessionIdValid()) {
					response.sendRedirect(contextPath + "/login.html");
					return;
				}
			}
		}
		filterChain.doFilter(sRequest, sResponse);
	}

	public void init(FilterConfig arg0) throws ServletException {

	}
}


3.web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>Dorm_mgm_sys</display-name>
  <welcome-file-list>
    <welcome-file>login.html</welcome-file>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  <filter>
  	<filter-name>loginFilter</filter-name>
  	<filter-class>dorm.sys.filter.LoginFilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>loginFilter</filter-name>
  	<url-pattern>/jsp/*</url-pattern>
  </filter-mapping>
  <session-config>
  	<session-timeout>30</session-timeout>
  </session-config>
</web-app>



其中:

<session-config>
  <session-timeout>30</session-timeout>
  </session-config>

设置Session 30分钟过期,也就是30分钟没有操作将要跳转到登陆页面重新登陆


这样就可以了,除了login页面外全部都会被过滤器检测。

注:

浏览器关闭后session将被销毁,用户需重新登陆。

退出操作则将session中的username值设置为null即可。



OTA(Over-The-Air)升级 OTA(Over-the-Air)是一种通过无线方式进行数据传输和更新的技术,通常用于电子设备(如智能手机、汽车、物联网设备等)的软件、固件或配置更新。OTA可以在设备与服务器之间进行远程传输,用户无需将设备接入电脑或进行有线操作。通过OTA,用户只需要通过Wi-Fi或移动网络连接,便能自动接收并安装最新的更新,而无需手动干预。OTA的优点是便捷和高效,能够确保设备随时保持最新状态,同时减少用户的操作负担。:如智能家居设备、路由器、汽车等硬件设备的固件更新。:确保设备上的应用保持最新版本。 阅读详情

相关推荐

训练AI:从数据收集到模型部署的完整指南

如果你刚开始接触AI,建议先学习一些基础的编程和机器学习知识,还可以使用现成的AI平台和工具来帮助你训练AI模型。在这篇文章中,我们将详细探讨从数据收集到模型部署的完整步骤,并提供一些有用的技巧和工具,以帮助你成功地训练自己的AI模型。在收集数据时,你需要从可靠的数据源(如数据仓库、数据集市、API接口)获取数据,确保数据的准确性和完整性。常用的划分比例是70%的数据集用于训练模型、15%的数据集用于验证模型,5%的数据集用于超参数调整,最后10%的数据集用于测试模型的性能。测试数据集用于测试模型的性能。

a_wsnd的博客 4166

struts 用拦截器进行用户权限隔离,未登录用户跳到登录界面 *** 最爱那水货

一般,我们的web应用都是只有在用户登录之后才允许操作的,也就是说我们不允许非登录认证的用户直接访问某些页面或功能菜单项。对于个别页面来说,可能不需要进行拦截,此时,如果项目采用struts view框架来做的话,我们可以用strut的拦截器做一个intercepter类。 首先在项目中独立一个包出来   我们写一个拦截器类,让它继承 Method...

weixin_30813225的博客 141

Vivado项目开发新思路:用VSCode写代码,用Vivado管理IP核与综合(Windows/Mac环境通用指南)

本文介绍了如何结合Vivado和VSCode的优势,打造高效的FPGA设计工作流。通过配置VSCode的Verilog插件和Vivado环境集成,开发者可以在VSCode中编写代码,同时利用Vivado管理IP核与综合,显著提升开发效率和团队协作体验。

weixin_42545503的博客 337

过滤器和拦截器比较及实现未登录跳转登录页的方式

看了一下午的文档,对Filter(过滤器)和Interceptor(拦截器)有了更深入的理解,下面主要记录对这两个在未登录时自动跳转登录页面的实现的一些自己的理解。 首先要求拦截未登录自动跳转登录页面这种场景,用Filter(过滤器)和Interceptor(拦截器)都能够实现。 但Filter(过滤器)和Interceptor(拦截器)有以下差异。 1、拦截器是基于java的反射机制的;而...

qq_35155114的博客 2131

从零开始利用MATLAB进行FPGA设计(六)用ADC采集信号教程1

用AN9238采集信号的方法(1),包含PLL、FIFO、ILA的基础教程。

WZT725的博客 3094

数据分析是什么?

说道“数据分析”一词,大家应该并不陌生,数据分析从字面上来理解,就是对数据做出分析然后得出一个结论,看起来浅显易懂,下面我们把这个词语分开得到的是“数据”与“分析”。“数据”的范围就很广泛了,小到一个计量数字,大到成亿级别的数据汇总,都可以称为数据;“分析”一词并不难理解,以智慧思维的方法对某一事物做出合理的解释,给出结论是为分析,一般会用到数学上的分析方法,比如统计学或者概率论等等。 1. 什么是数据分析 1) 数据分析发展背景 进入到 21 世纪以后,伴随着互联网的迅速发展,大数据应运而生,越来越多的数

MC_XY的博客 5432

Struts2的Session超时返回登录页面

  今天做一个S2SM的项目时,在session超时或者失效时返回到登陆页面重新登陆,前台使用的easyui框架 1、首先修改web.xml &lt;session-config&gt; &lt;session-timeout&gt;1&lt;/session-timeout&gt; &lt;/session-config&gt; 2、自定义一个登录超时的拦截器 packagec...

zhangshufei的博客 315

ABAP链接外围数据库SQL实战案例

这是一个ABAP 直接读取SQL数据库数据的实例,以此种方式可以将SAP与外围的系统做一些集成,比如生产,SAP本身生产这部分是弱项,管不了那么细,很多车间的数据都是在MES系统,如管理上需要则可以将MES的一些数据自动读取过来,结合SAP本身的业务数据,做一些分析是比较方便的。 1、首先在SAP里建立数据库链接:DBCO ,直接增加一条记录,填上数据库的相关信息:IP地址、数据库名、账号SA、密码这些。 2、开发程序,设置成自动运行的计划,固定时间自动读取SQL里的数据,保存到SAP自定义表.

heng0757的专栏 1511

Struts过滤器实现用户登陆验证

class="com.bdqn.Iterceptior.MyAuthorization">                       这是声明了一个过滤器 指定过滤器所在的类 这个类继承自com.opensymphony.xwork2.interceptor.AbstractInterceptor; 实现了方法 public class MyAuthorization exten

Trifolium的博客 730

PC 端微信页面拆分及 JavaFx 使用

一、前言 对于一个知识点的学习过程来说,往往使用自己熟悉的工具或方式才更易于上手。因为所有同类型的知识点在抛出复杂的流程拨云见日后,所能得到的几乎都是同样的设计思想和实现理论。 在 Java 语言桌面版开发中,直至目前共提供了三套 UI 开发方式;Awt、Swing、JavaFx,以及一些扩展组件 SWT 等。在这三套 UI 组件中,JavaFx 是最新也是最为好用的,因为他提供了丰富的功能,以及...

bugstack虫洞栈 3609

水文仿真软件:SWMM (Storm Water Management Model)_(6).地理信息系统(GIS)与SWMM数据交换

地理信息系统(GIS)与SWMM数据交换是水文仿真中的一个重要环节。通过合理的数据准备、导入、导出和校验,可以确保模型的准确性和实用性。本文介绍了使用SWMM GIS Add-on和Python脚本进行数据交换的方法,并提供了一些优化建议和常见问题的解决方案。希望这些内容能帮助读者更好地进行GIS与SWMM的数据交换,提高水文仿真的效率和质量。

kkchenjj的博客 578

Struts2拦截器详解

在之前的文章中,我们已经涉及到了拦截器(Interceptor)的概念。downpour 写道拦截器是AOP中的概念,它本身是一段代码,可以通过定义“织入点”,来指定拦截器的代码在“织入点”的前后执行,从而起到拦截的作用。正如上面 Struts2的Reference中讲述的,Struts2的Interceptor,其拦截的对象是Action代码,可以定义在Action代码之前或者之后执行拦

笨鸟学飞的专栏 4185

YOLOv8中的可变形卷积改进 | 从DCNv1到DCNv3的多位置替换可变形卷积保姆级实操

可变形卷积(Deformable Convolution)最早由Dai等人在2017年提出,其核心思想是在标准卷积操作的基础上,引入可学习的偏移量(offsets),使卷积核能够自适应调整其采样位置,从而增强模型对目标变形的感知能力。return x本文通过深入探讨可变形卷积在YOLOv8中的应用,详细介绍了DCNv1、DCNv2和DCNv3的原理和实现,并通过实验验证了其在目标检测任务中的有效性。未来,我们将继续探索更多优化策略和技术,提升YOLOv8模型的性能,以应对更复杂的目标检测任务。

一键难忘的博客 4050

Struts2使用过滤器验证登陆状态

最近做的这个仓库管理项目,需要用到登陆状态的认证,用户在没登陆的情况下就不能访问管理页面,访问后会跳回登陆页面。 在每个页面都加上判断显然不大现实,优快云上查了下,果断使用过滤器Filter。 在Web.xml中增加个配置过滤器loginFilter: loginFilter com.filter.LoginFilter

海阔凭鱼跃,天高任鸟飞 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

struts2过滤器验证登陆状态

实现效果为:用户在没登陆的情况下就不能访问管理页面,访问后会跳回登陆页面在web.xml里,配置一个过滤器  RightFilter com.***.rights.RightFilter RightFilter<

phantomes的专栏 839

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

struts2 拦截器 登录验证

session过期以后,需要重新登陆,struts2拦截器或过滤器可以验证session是否还存在,如果不存在,则跳转到登录页面,或其他页面。其中拦截器是动态拦截action调用的对象,开发者可以定义在一个action执行前后执行的代码,也可以在一个action执行前阻止其执行;过滤器是在jsp页面中获取session,如果获取不到,再进行相应的处理。 struts2提供了种类丰富的拦截器,

funi16的专栏 2617

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

STM32全解析:从内核选型到工具链与实战避坑指南

在嵌入式开发领域,单片机(MCU)是整个系统的控制核心,而基于ARM Cortex-M内核的STM32凭借其丰富的产品线、完善的软件生态和广泛的应用场景,成为工程师绕不开的选择。理解内核、芯片与开发板的关系,掌握时钟树、GPIO、定时器、串口等基础外设的原理,是进行工程实践的前提。MCU选型不能只看主频,还需结合功耗预算、外设数量和存储容量综合判断。借助图形化配置工具与HAL库,开发者能快速搭建工程,但引脚冲突、时钟配置错误、调试器连接失败等仍是新手常见挑战。从点灯到电机控制、工业仪表,STM32覆盖了消费

weixin_34192816的博客 351

SSH网上商城项目实战 过滤器实现购物车购物登陆功能的判断。

上一节我们做完了购物车的基本操作,但是有个问题是:当用户点击结算时,我们应该做一个登录的判断,判断用户有没有登录,没有登录的话,得首先让用户登录。这就用到了过滤器的技术了,过滤器是专门拦截页面请求的,它与拦截器的原理差不多,拦截器是专门拦截Action请求的,所以各有所用,如果直接是页面的跳转,不经过Action的话,我们只要写一个拦截器即可,如果需要跳转到一个Action处理,那么我们就得写一个

WhtBk的博客 3867

Struts1中加入session失效过滤器

1、在web.xml加入过滤器代码 <filte...

weixin_34343308的博客 291

struts2 拦截器拦截action中指定方法

1.继承类MethodFilterInterceptor(此类是类AbstractInterceptor的子类) import java.util.Map; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwor

Lee_guang的专栏 5805
上一篇: SVN的MKACTIVITY 403 Forbidden 异常处理
下一篇: 在js中显示一个时钟
冷静BB
博客等级 码龄12年 298粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值