在tomcat / servlet中避免使用遗留代码的HTTP会话

时间:2012-11-30 20:05:56

标签: java session tomcat

我被告知要使用一些由servlet和taglib组成的第三方软件。 servlet生成搜索结果,taglib根据servlet呈现结果和其他交互元素。

问题是第三方解决方案是使用http会话实现的,意味着servlet执行搜索,将结果存储在会话中,将重定向发送到浏览器和视图页面(在完整的单独http请求中)显示会话的结果。

我想摆脱会话,因为这不适用于多个标签,还有其他一些缺点。但servlet和taglib按原样交付,如果我需要不同的东西,我必须自己实现它。

任何想法如何在一个请求中实现这一点,以便不需要会话?在最好的情况下,不需要更改代码,只需要一个包装器。它可以接受服务器创建会话,但我不希望浏览器依赖它。

我的一个想法是使用请求调度程序在一个http请求中执行servlet调用和视图,但软件仍使用会话。然后,我可以在每次请求后丢弃会话。更好的想法受到高度赞赏。

我当然知道,最好是在没有满足我的要求的情况下实施它。但照常营业,我们尽量避免花太多时间..

提前致谢,祝你有个美好的夜晚 米歇尔

1 个答案:

答案 0 :(得分:0)

我知道这不是最好的解决方案,但是创建一个 javax.servlet.Filter ,它将自定义的 HttpServletRequest HttpServletResponse 包装起来。 在自定义包装器中覆盖 request.getSession() response.sendRedirect()方法。

通过在 web.xml 文件中定义属性< filter-mapping> ,将您的过滤器应用于搜索servlet和JSP。