`

JSP登录前后改变JSESSIONID

 
阅读更多

 

配置web.xml的filter(需要配置在Struts2插件过滤器前)

 

 <filter>
 <filter-name>filter1</filter-name>
 <filter-class>filter.LoginFilter1</filter-class>
 </filter>
 <filter-mapping>
 <filter-name>filter1</filter-name>
 <url-pattern>/*</url-pattern>
 </filter-mapping>



 

增加Filter

 

package 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 LoginFilter1 implements Filter {//尝试改变JSESSIONID

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		System.out.println("LoginFilter1 destroy");
	}

	@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1,
			FilterChain arg2) throws IOException, ServletException {
		// TODO Auto-generated method stub
		HttpServletRequest httpRequest = (HttpServletRequest)arg0;  
		StringBuffer ul = httpRequest.getRequestURL();		
		
		if(ul.toString().contains("login!getintoindex.do")){
			HttpSession session = httpRequest.getSession(false);
			
			if ( session != null && !session.isNew() ) {//isNew() Returns true if the client does not yet know about the session or if the client chooses not to join the session.
				HttpSession sessionOld = session; 
				User user = (User)sessionOld.getAttribute("user");

				sessionOld.invalidate();
				
				session = httpRequest.getSession(true);
				session.setAttribute("user", user);

				System.out.println("LoginFilter1 doFilter,url: " + httpRequest.getRequestURL()+" , session id: " + httpRequest.getSession().getId());
			}			
		}
		
		if(ul.toString().contains("top!logout.do")){//
			HttpSession session = httpRequest.getSession(false);
			if ( session != null && !session.isNew() ) {
				HttpSession sessionOld = session; 
				sessionOld.invalidate();
				session = httpRequest.getSession(true);
				
				System.out.println("LoginFilter1 doFilter,logout. ");
			}
			
		}
		
			
		
		arg2.doFilter(arg0, arg1);
		
		
		
		
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		System.out.println("LoginFilter1 init");
	}

}



 

分享到:
评论

相关推荐

    jsessionid存在的问题及其解决方案

    在Web开发中,`jsessionid`是一个常见的概念,它关联到Java服务器会话(Session)的管理。本文将深入探讨`jsessionid`存在的问题以及相应的解决方案,并结合提供的`DisableUrlSessionFilter.java`和`web.xml`文件来...

    android获取jsessionId和发送jsessionId

    在Android开发中,与服务器进行交互是常见的任务,而`jsessionId`是Web应用程序中用于跟踪用户会话的一种机制。本文将详细讲解如何在Android客户端获取`jsessionId`以及如何在后续请求中发送`jsessionId`,以保持...

    tomcat修改jsessionid在cookie中的名称

    ### Tomcat中修改JSessionID在Cookie中的名称 在Tomcat服务器中,默认情况下,用于传递会话标识(即JSessionID)的Cookie名称为“JSESSIONID”。有时,出于安全考虑或其他需求,我们可能需要自定义这个名称。本文将...

    获取JsessionId

    重定义URL 使其直接进去网页 不用登录 用于:邮件链接直接进入网站

    jsp登录and两站间通信简单示例

    3. 登录成功后,服务器可能会返回一个会话标识(如JSESSIONID),存储在客户端的Cookie中,以便后续请求识别用户身份。 4. 当需要在两个站点间通信时,例如从web站向web2站发送用户登录信息,可以利用CORS或者JSONP...

    UrlFilter过滤jsessionId

    - 移除`jsessionId`可能会对依赖于URL重写的会话管理机制造成影响,需要确保应用的其他部分能够正常处理这种改变。 #### 四、应用场景 - **安全性增强:**防止通过URL泄露会话ID,降低会话劫持的风险。 - **用户...

    jsp最全面试题集(你肯定会喜欢)

    当Cookie不可用时,可以在URL中附加`JSESSIONID`来保持会话。在JSP中,可以使用`session.getAttribute()`和`session.setAttribute()`来读取和设置会话数据。 14. **JSP动作元素** JSP提供了一系列的动作元素,如`...

    HttpSession/session,jsp,servlet——综合练习题一

    在主页面的JSP中,通过检查会话是否存在特定的属性来判断用户是否登录,并显示相应的界面。 总之,`HttpSession`、`jsp`和`servlet`是构建Web应用的重要工具,它们共同帮助开发者创建出能够处理用户状态、动态生成...

    6 jsp内建对象之session

    这个过程通常伴随着设置一个名为JSESSIONID的cookie,包含了session ID。之后,每当该浏览器发送请求时,都会携带这个cookie,服务器通过解析cookie获取session ID,从而找到对应的session数据。 **三、如何在JSP中...

    获得请求头的各种参数信息jsp代码

    获得请求头的各种参数信息jsp代码: ...获取接受客户提交信息的页面: /004.jsp 接受客户提交信息的长度: -1 ...获取头文件中指定头名字的全部值的一个枚举: JSESSIONID=7278C051AADA7370A6DB7492CDD13984

    jsp自定义标签实例

    ### JSP自定义标签知识点详解 #### 一、概述 JSP(JavaServer Pages)是一种基于Java技术的服务器端动态网页开发技术。JSP自定义标签则是为了提高JSP页面的可读性和重用性而引入的一个重要特性。通过自定义标签,...

    学生管理系统(JSP+Servlet+Java)

    这就需要使用会话管理技术,如JSESSIONID,来跟踪用户的登录状态和权限信息。 7. **MVC(Model-View-Controller)模式**:虽然这个项目没有明确提到使用框架,但其结构可能遵循了MVC设计模式。Servlet作为控制器...

    解决java后台登录前后cookie不一致问题

    然而,有时会出现“登录前后Cookie不一致”的问题,这可能会影响用户体验或引发安全性问题。本文将探讨这个问题的原因以及两种可能的解决方案。 **问题分析** 登录前后Cookie不一致的问题可能由以下几个原因引起:...

    网上书店系统(论文+jsp源程序)130220.rar

    这可以通过设置JSESSIONID cookie或在服务器端维护会话对象来实现。 6. **支付接口集成**:为了实现在线支付功能,系统可能集成了第三方支付平台如支付宝或微信支付的API,进行支付请求的发送和支付状态的回调处理...

    Set-Cookie: JSESSIONID=8AB51DC4244907FD9EBB063C7FD73CBA; Path=/; HttpOnly

    Cookie 路径属性安全设置 ...然而,在某些情况下,Cookie 中的路径属性可能会泄露项目路径,导致安全风险。本文将介绍如何解决 Cookie 路径属性暴露问题。 Cookie 路径属性的危险 在服务器中的项目中,如果 Cookie...

    jsp网上书店

    在"chapter8"这个文件名中,可能表示项目的某个章节或模块,可能是关于特定功能的实现,例如支付系统、用户登录注册或者书籍分类管理。通常,项目可能会按功能模块或开发阶段将代码划分为多个章节或子目录,便于管理...

    学校实训JSP项目-[信息办公]企业信息交流系统(CICS) v1.0.zip

    7. **会话管理**:为了保持用户的登录状态,项目可能使用了会话管理技术,如JSESSIONID,来跟踪用户在整个系统的活动。 8. **安全性**:实训项目可能会涵盖基本的安全措施,如密码加密存储、防止SQL注入、XSS攻击...

    python 实现登录网页的操作方法

    有些网页需要你登录之后才...Cookie名称和值可以由服务器端开发自己定义,对于JSP而言也可以直接写入jsessionid,这样服务器可以知道该用户是否合法用户以及是否需要重新登录等。 2、之后我们要获取到用户正常登录的c

    JSP教程

    然而,现代Web应用,尤其是那些需要用户登录或保持用户特定数据的应用,如在线购物车,需要一种机制来维持一系列来自同一用户的请求之间的状态。例如,当用户将商品添加到购物车时,服务器需要能够识别这是同一个...

    季风流量统计系统jsp1.2版

    "季风流量统计系统jsp1.2版"是一款基于JavaServer Pages(JSP)技术构建的流量统计工具,专门用于追踪和分析网站的访问数据。该系统提供了多种维度的统计数据,帮助网站管理员深入了解用户行为,优化网站性能和用户...

Global site tag (gtag.js) - Google Analytics