Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java struts2创建会话对象的原因和时间?_Java_Jsp_Struts2_Apache Cayenne_Xwork - Fatal编程技术网

Java struts2创建会话对象的原因和时间?

Java struts2创建会话对象的原因和时间?,java,jsp,struts2,apache-cayenne,xwork,Java,Jsp,Struts2,Apache Cayenne,Xwork,我只想在我的web应用程序中成功验证用户时创建会话。但由于某些原因,struts2创建会话对象,即使我们只是访问登录页面 我仔细阅读了struts2的一些文档,发现使用struts.custom.i18n.resources可能会创建会话。所以我从struts.xml文件中删除了它。但即使会话是在我的web应用程序中创建的 在此方面的任何帮助/想法都非常感谢 更新的问题 我的web.xml中有以下几行代码用于处理Cayenne数据上下文 <filter> <filter

我只想在我的web应用程序中成功验证用户时创建会话。但由于某些原因,struts2创建会话对象,即使我们只是访问登录页面

我仔细阅读了struts2的一些文档,发现使用struts.custom.i18n.resources可能会创建会话。所以我从struts.xml文件中删除了它。但即使会话是在我的web应用程序中创建的

在此方面的任何帮助/想法都非常感谢

更新的问题

我的web.xml中有以下几行代码用于处理Cayenne数据上下文

<filter>
    <filter-name>CayenneFilter</filter-name>
    <filter-class>org.apache.cayenne.conf.WebApplicationContextFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>CayenneFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

卡耶恩滤波器
org.apache.cayenne.conf.WebApplicationContextFilter
卡耶恩滤波器
/*
这是否导致在我的web应用程序中创建会话


-Narendra

JSP页面会自动创建会话,除非您特别包含一条指令,告诉它们不要这样做


IMO试图阻止创建会话是浪费时间。相反,将会话中的某些内容放在有效登录上,并在注销时使会话无效。其他任何事情都太麻烦了。

JSP页面会自动创建会话,除非您特别包含一条指令,告诉它们不要这样做


IMO试图阻止创建会话是浪费时间。相反,将会话中的某些内容放在有效登录上,并在注销时使会话无效。其他任何事情都太麻烦了。

以下是从Cayenne的角度给出的答案。默认情况下,WebApplicationContextFilter为筛选器匹配的每个请求惰性地创建会话绑定的ObjectContext。这当然会创建一个HttpSession

因此,一种解决方案是将过滤器映射从“/*”减少到与经过身份验证的页面相对应的更具体的URL。这样,匿名用户将不会调用Cayenne filter


如果无法做到这一点,请创建自己版本的WebApplicationContextFilter(毕竟WebApplicationContextFilter只是一个示例,说明如何在应用程序中引导Cayenne,因此请检查其来源,并为自己创建类似的内容)。您自己的过滤器可以实现一些逻辑,从而跳过匿名的ObjectContext(和会话)创建。

以下是从Cayenne的角度给出的答案。默认情况下,WebApplicationContextFilter为筛选器匹配的每个请求惰性地创建会话绑定的ObjectContext。这当然会创建一个HttpSession

因此,一种解决方案是将过滤器映射从“/*”减少到与经过身份验证的页面相对应的更具体的URL。这样,匿名用户将不会调用Cayenne filter


如果无法做到这一点,请创建自己版本的WebApplicationContextFilter(毕竟WebApplicationContextFilter只是一个示例,说明如何在应用程序中引导Cayenne,因此请检查其来源,并为自己创建类似的内容)。您自己的筛选器可以实现一些逻辑,跳过匿名对象的ObjectContext(和会话)创建。

请重新表述创建会话对象的原因和时间。有帮助的应用服务器负责创建和管理会话,而不是struts 2。试图禁用此功能没有任何意义,请参见Davids的答案。请重新表述以下问题:创建会话对象的原因和时间。有帮助的应用服务器负责创建和管理会话,而不是struts 2。没有必要尝试禁用此功能,请参阅Davids的答案。我已经在jsp页面中使用以下指令来阻止创建会话@纳伦德拉说真的,没有理由这么麻烦。为什么您关心是否有未使用的会话?我已经在jsp页面中使用以下指令来防止创建会话@纳伦德拉说真的,没有理由这么麻烦。为什么你会在意是否有未使用的会话?谢谢你的详细回答。谢谢你的详细回答。