httprequest.getsession 返回 null

2024-02-01

我编写了一个过滤器,它将使当前会话无效并创建新会话并将旧会话的属性复制到新会话中。 这在 tomcat5 和 jdk 1,4 中工作正常,但是当我将其切换到 tomcat6 和 jdk 1.6 时 一旦过滤器运行,然后处理下一个请求httprequest.getsession(false ) is null。为什么它在 tomcat 6 中的行为有所不同。 请帮忙。 这是代码片段

public void doFilter(ServletRequest request, ServletResponse response,
                        FilterChain chain) throws IOException, ServletException 
                        { 
        HttpServletRequest httpRequest = (HttpServletRequest) request;
        System.out.println("within GenerteNewSessionFilter");
        System.out.println("within GenerteNewSessionFilter getRequestURI"+httpRequest.getRequestURI());
        System.out.println("within GenerteNewSessionFilter getRequestURL"+httpRequest.getRequestURL());

        System.out.println("within GenerteNewSessionFilter session false"+httpRequest.getSession(false));

        String reqUrl=httpRequest.getRequestURL().toString();
        if (reqUrl==null){
            reqUrl="";
        }
        int idxLogin=reqUrl.indexOf("LoginSubmit.jsp");
        int idxReg=reqUrl.indexOf("RegistrationSubmit.jsp");
        int idxErr=reqUrl.indexOf("Error");

    int idxSave=-1;
    System.out.println("within GenerteNewSessionFilter reqUrl "+reqUrl);
    System.out.println("within GenerteNewSessionFilter idxLogin index"+idxLogin);
    System.out.println("within GenerteNewSessionFilter idxReg index"+idxReg);
    System.out.println("within GenerteNewSessionFilter idxErr index"+idxErr);

    if (httpRequest.getSession(false) != null  &&  (idxLogin >0 || idxReg >0) && idxErr <0 ){
      //copy session attributes from old session to a map. 
        System.out.println("copy session attributes from old session to a map");
        HttpSession session = httpRequest.getSession();

      HashMap old=new HashMap();
      Enumeration keys = (Enumeration) session.getAttributeNames();
      while (keys.hasMoreElements()) {
        String key = (String) keys.nextElement();

       old.put(key, session.getAttribute(key));
          session.removeAttribute(key);


      }
      System.out.println("old  session id  "+session.getId());

      //invalidate session and create new session.
      session.invalidate();
      //create new session
      session = httpRequest.getSession(true);

      //copy session attributes from map session to new session
      Iterator it = old.entrySet().iterator(); //iterator
      while (it.hasNext()) {
          Map.Entry pairs = (Map.Entry)it.next();
          //putitng old attributes in to new session
          session.setAttribute((String) pairs.getKey(), pairs.getValue());

      }//end while loop
          System.out.println("end copy  session attributes");
          System.out.println("new session id status "+httpRequest.getSession(false));
          System.out.println("final new   session session id  "+session.getId());
    }
    chain.doFilter(request, response);
    }
      public void init(FilterConfig filterConfig) throws ServletException {


    }

}         

的 javadocHttpServletRequest.getSession(布尔创建) http://tomcat.apache.org/tomcat-7.0-doc/servletapi/javax/servlet/http/HttpServletRequest.html#getSession(boolean)明确指出,如果您通过了falsevalue 到它的参数,它只会返回HttpSession如果已经存在。如果没有与请求关联的会话,则会返回null.

因此,如果您使当前会话无效,显然会调用request.getSession(false)在您的下一个请求中将返回null.

如果您想在使当前会话失效后创建一个新会话,请使用:request.getSession(true)或者更简单地说:request.getSession().

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

httprequest.getsession 返回 null 的相关文章

  • Spring应用中Eureka健康检查的问题

    我正在开发一个基于 Spring 的应用程序 其中包含多个微服务 我的一个微服务充当尤里卡服务器 到目前为止一切正常 在我所有其他微服务中 用 EnableEurekaClient 我想启用这样的健康检查 应用程序 yml eureka c
  • Mockito:如何通过模拟测试我的服务?

    我是模拟测试新手 我想测试我的服务方法CorrectionService correctPerson Long personId 实现尚未编写 但这就是它将执行的操作 CorrectionService将调用一个方法AddressDAO这将
  • Junit:如何测试从属性文件读取属性的方法

    嗨 我有课ReadProperty其中有一个方法ReadPropertyFile返回类型的Myclass从属性文件读取参数值并返回Myclass目的 我需要帮助来测试ReadPropertyFile方法与JUnit 如果可能的话使用模拟文件
  • 如何通过 javaconfig 使用 SchedulerFactoryBean.schedulerContextAsMap

    我使用 Spring 4 0 并将项目从 xml 移至 java config 除了访问 Service scheduleService 带注释的类来自QuartzJobBean executeInternal 我必须让它工作的 xml 位
  • 为什么 JTables 使 TableModel 在呈现时不可序列化?

    所以最近我正在开发一个工具 供我们配置某些应用程序 它不需要是什么真正令人敬畏的东西 只是一个具有一些 SQL 脚本生成功能并创建几个 XML 文件的基本工具 在此期间 我使用自己的 AbstractTableModel 实现创建了一系列
  • 使用 LinkedList 实现下一个和上一个按钮

    这可能是一个愚蠢的问题 但我很难思考清楚 我编写了一个使用 LinkedList 来移动加载的 MIDI 乐器的方法 我想制作一个下一个和一个上一个按钮 以便每次单击该按钮时都会遍历 LinkedList 如果我硬编码itr next or
  • Spring AspectJ 在双代理接口时失败:无法生成类的 CGLIB 子类

    我正在使用Spring的
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • Java 集合的并集或交集

    建立并集或交集的最简单方法是什么Set在 Java 中 我见过这个简单问题的一些奇怪的解决方案 例如手动迭代这两个集合 最简单的单行解决方案是这样的 set1 addAll set2 Union set1 retainAll set2 In
  • 没有 Spring 的自定义 Prometheus 指标

    我需要为 Web 应用程序提供自定义指标 问题是我不能使用 Spring 但我必须使用 jax rs 端点 要求非常简单 想象一下 您有一个包含键值对的映射 其中键是指标名称 值是一个简单的整数 它是一个计数器 代码会是这样的 public
  • 将流转换为 IntStream

    我有一种感觉 我在这里错过了一些东西 我发现自己做了以下事情 private static int getHighestValue Map
  • 将 MOXy 设置为 JAXB 提供程序,而在同一包中没有属性文件

    我正在尝试使用 MOXy 作为我的 JAXB 提供程序 以便将内容编组 解组到 XML JSON 中 我创建了 jaxb properties 文件 内容如下 javax xml bind context factory org eclip
  • jdbc mysql loginTimeout 不起作用

    有人可以解释一下为什么下面的程序在 3 秒后超时 因为我将其设置为在 3 秒后超时 12秒 我特意关闭了mysql服务器来测试mysql服务器无法访问的这种场景 import java sql Connection import java
  • logcat 中 mSecurityInputMethodService 为 null

    我写了一点android应显示智能手机当前位置 最后已知位置 的应用程序 尽管我复制了示例代码 并尝试了其他几种解决方案 但似乎每次都有相同的错误 我的应用程序由一个按钮组成 按下按钮应该log经度和纬度 但仅对数 mSecurityInp
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • Cucumber 0.4.3 (cuke4duke) 与 java + maven gem 问题

    我最近开始为 Cucumber 安装一个示例项目 并尝试使用 maven java 运行它 我遵循了这个指南 http www goodercode com wp using cucumber tests with maven and ja
  • 找不到符号 NOTIFICATION_SERVICE?

    package com test app import android app Notification import android app NotificationManager import android app PendingIn
  • 使用 CXF-RS 组件时,为什么我们使用 而不是普通的

    作为后续这个问题 https stackoverflow com questions 20598199 对于如何正确使用CXF RS组件我还是有点困惑 我很困惑为什么我们需要
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • Yii2 登录失败时没有错误信息

    我目前正在使用 Yii2 框架 在登录页面中 当我登录失败时 它只会刷新视图 但不会显示任何错误 这是我目前的观点 div class site login div
  • 如何使用 Google Calendar API iOS Swift 创建事件

    我想开发一个演示应用程序 它将使用我的应用程序创建事件 使用 Google Calendar API 存储事件 然后获取所有数据并发出提醒 我已经提到过这个link https developers google com google ap
  • 首先遍历图广度,在 Haskell 中标记访问过的节点

    所以问题很简单 给定一个图 我希望图的结构在这个问题中并不重要 我该如何对其进行 BFS 呢 我最近问了一个关于生成列表的问题 其中每个元素都将许多元素附加到其末尾 希望答案应该能让我创建一个执行 BFS 所需的队列 但是搜索还需要另一个关
  • SQL Server 中更新查询后插入

    我有一个存储在存储过程中的更新查询 我想在执行存储过程后插入更新的查询 这是我的存储过程 ALTER PROCEDURE dbo sp assign account id agency int month nvarchar 2 region
  • 如何仅克隆 Git 存储库的子文件夹并使子文件夹中的所有文件最终位于根目录中?

    我意识到以前也有人问过类似的问题 如何仅克隆 Git 存储库的子目录 https stackoverflow com questions 600079 is there any way to clone a git repositorys
  • 如何用Python绘制ROC曲线

    我正在尝试绘制 ROC 曲线来评估我使用逻辑回归包在 Python 中开发的预测模型的准确性 我计算了真阳性率和假阳性率 但是 我无法弄清楚如何使用正确绘制这些matplotlib并计算AUC值 我怎么能这么做呢 您可以尝试以下两种方法 假
  • 使用自定义基本 URL 为 Keycloak docker 配置反向代理

    我怎样才能设置docker keycloak base url作为参数 我有以下 nginx 反向代理配置 server listen 80 server name example com location keycloak proxy p
  • 从 pandas 数据框中选择特定索引、列对

    我有一个数据框x x pd DataFrame np random randn 3 3 index 1 2 3 columns A B C x A B C 1 0 256668 0 338741 0 733561 2 0 200978 0
  • 如何使用 ASCII 符号绘制图像?

    我正在尝试从图像制作 ASCII 艺术 但由于某种原因 输出总是旋转 我检查了我的代码很多次 但我根本找不到错误 我猜这与imageWidth and imageHeight但对我来说一切看起来都很好 代码可以在github https g
  • NotSerializedException org.neo4j.kernel.EmbeddedGraphDatabase

    我正在使用 neo4j 创建图表 将 mongodb 中的数据作为文档 独立代码运行良好 没有风暴 但是 在将其与 Storm 集成时 我得到了 java io NotSerializedException org neo4j kernel
  • 使用 VBA 过滤函数时的性能注意事项

    我不明白 Filter 功能如何运行得这么快 我对各种数据使用了 Filter 无论数据类型如何 Filter 都会消除我使用的任何替代方法 我经常使用由 Stephen Bullen 编写的二分搜索算法和 QuickArraySort 算
  • 从 R 中的给定字符串中提取日期

    这是我有的一个字符串 7MA S VE MS FB MEASURE P1 2013 08 21 17 42 19 BMP 我正在尝试以这种方式提取日期 library stringr as Date str extract test 0 9
  • 如何向多个收件人发送消息?

    我在使用 Gmail API 向多个地址发送邮件时遇到一些问题 我已成功将一封邮件仅发送到一个地址 但当我在邮件中包含多个以逗号分隔的地址时 出现以下错误 To field 请求时发生错误 https www googleapis com
  • 如何避免在多态打印宏中使用 #if

    让我们尝试运行以下代码 include
  • JavaScript 获取数组的一部分

    如何创建一个新数组 其中包含旧数组中编号为第 n 到第 n k 的所有元素 你想要的slice https developer mozilla org en US docs JavaScript Reference Global Objec
  • Python ZeroMQ PUSH/PULL——丢失消息?

    我正在尝试使用python with zeroMQ in PUSH PULL模式 发送大小的消息4 MB 每隔几秒钟 由于某种原因 虽然看起来所有消息都已发送 但服务器似乎只收到了其中一些消息 我在这里缺少什么 这是客户端的代码 clien
  • SQL查询获取具有子记录列表的父表记录

    我在 MS SQL Server 2005 数据库中有两个表 父表和子表 其中父表可能与许多子记录相关 Child parent id 与 parent id 相关 子表也有列 foo 我需要带回父表中的所有记录 其中 child foo
  • 如何在 Python 上使用 Xlib 模拟鼠标点击

    出于教育目的 我开始使用以下命令编写 python 脚本cwiid and Xlib这样我就可以像鼠标一样使用我的wiimote 到目前为止 我已经通过调用让光标移动disp warp pointer dx dy 然后打电话disp syn
  • SVGSVGElement.children 在 IE11 中不起作用?

    我这里有一个非常简单的jsfiddle http jsfiddle net 9uS3u http jsfiddle net 9uS3u 它由以下 html 组成
  • httprequest.getsession 返回 null

    我编写了一个过滤器 它将使当前会话无效并创建新会话并将旧会话的属性复制到新会话中 这在 tomcat5 和 jdk 1 4 中工作正常 但是当我将其切换到 tomcat6 和 jdk 1 6 时 一旦过滤器运行 然后处理下一个请求httpr