我可以在web.xml中关闭HttpSession吗?

les2:

我想完全消除HttpSession-我可以在web.xml中这样做吗?我敢肯定,有一些特定于容器的方法可以做到这一点(当我进行Google搜索时,这会挤满搜索结果)。

PS这是个坏主意吗?在我真正需要它们之前,我宁愿完全禁用它们。

BalusC:

我想彻底消除HttpSession

您不能完全禁用它。您需要做的就是不要在Web应用程序的代码中任何地方request.getSession()request.getSession(true)任何地方获取它的句柄,并确保您的JSP不会通过设置隐式地执行此操作<%@page session="false"%>

如果您主要关心的是实际上禁用在幕后使用的cookie HttpSession,那么您只能在Java EE 5 / Servlet 2.5中在特定于服务器的webapp配置中这样做。例如,在Tomcat中,您可以将cookies属性设置falsein <Context>元素。

<Context cookies="false">

另请参阅此Tomcat特定文档这样,只有在您出于某种原因从请求中获取会话时,该会话才不会保留在后续的请求中,这些请求不会进行URL重写。毕竟,如果您不需要它,只是不要抓住它,那么它将根本不会被创建/保留。

或者,如果您已经在使用Java EE 6 / Servlet 3.0或更高版本,并且确实想要通过进行操作web.xml,则可以按如下所示使用new <cookie-config>元素web.xml将最大使用期限归零:

<session-config>
    <session-timeout>1</session-timeout>
    <cookie-config>
        <max-age>0</max-age>
    </cookie-config>
</session-config>

如果您想在您的Web应用程序中进行硬编码,以使其getSession()从不返回HttpSession(或“空” HttpSession),那么您将需要创建一个过滤器,url-pattern/*其中监听的过滤器将替换为在所有方法上都返回HttpServletRequestHttpServletRequestWrapper实现或伪定制什么都不做甚至抛出的实现getSession()nullHttpSessionUnsupportedOperationException

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    chain.doFilter(new HttpServletRequestWrapper((HttpServletRequest) request) {
        @Override
        public HttpSession getSession() {
            return null;
        }
        @Override
        public HttpSession getSession(boolean create) {
            return null;
        }
    }, response);
}

PS这是个坏主意吗?在我真正需要它们之前,我宁愿完全禁用它们。

如果您不需要它们,那就不要使用它们。就这样。真的:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我可以正确关闭此功能吗?

我可以在XML中绘制矩形吗?

我可以在git中默认关闭快速转发吗?

我可以在web.config中为maxJsonLength设置无限长度吗?

我可以从服务器端的承载令牌-Web API 2中检索userinfo吗?

我可以预加载Safari View Controller的Web内容吗?

我可以使用Web API依赖CallContext吗?

我可以在XSLT输出中添加XML声明吗?

我可以选择要关闭的文件吗?

我们可以在logcat中关闭“聊天”吗?

在我的Web服务器中可以使用符号链接吗?

我可以使用Jetty部署没有web.xml的项目吗?

在Tizen Web应用程序中,我可以使用javascript Web Worker在关闭的应用程序上运行后台代码吗?

我可以在Webstorm中调试Web应用程序的Javascript吗?

我可以关闭Powershell 2.0吗

在Web Worker中调整图像大小并压缩。我可以用帆布吗?

我们可以使用WebView在UWP应用中显示远程Web内容吗?

我可以关闭Windows搜索服务吗?

我可以在组件上使用@Profile标记而不在Spring Boot或Web.xml中创建@Configuration类吗?

我们可以关闭MouseEvents吗?

我可以以编程方式连接到Web服务中的其他WCF端点吗?

我可以在RESTful Web服务中使用wait()吗?

我可以跟踪访问者在 Web 应用程序中拨打的电话吗?

我可以禁用 Minio Web GUI 吗?

我可以在 android apk 中动态下载 Web 应用程序客户端并启动吗?

我可以在 Web 程序集中使用 DataGrid 吗?

我可以在 azure 中查看我的 Web 应用程序的控制台日志吗?

我们可以将 Web 层中的 EC2 实例设为私有吗?

我们可以在 Web 中运行 JavaFX sesktop 应用程序吗?