2012-11-30 128 views
0

我被告知要使用一些由servlet和taglib组成的第三方软件。 servlet生成搜索结果,taglib根据servlet呈现结果和其他交互元素。避免与tomcat/servlet中的遗留代码进行HTTP会话

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

我想摆脱会议,因为这不会与多个选项卡一起工作,并有其他几个缺点。但是servlet和taglib是按原样提供的,如果我需要不同的东西,我必须从头开始自己实现它。

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

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

当然我知道,最好的办法是按照我的要求进行正确的会议。但照常营业,我们尽量避免花费太多的时间..

由于提前,有一个美好的夜晚 米歇尔

+0

有什么理由不能直接转发到JSP而不是整个“重定向和加载会话”废话? –

+0

@MattBrock我只想转发,但愚蠢的servlet做了重定向。如果我要实现它,它将是一个转发或ServletFilter,而不是会话内容的重定向。 – mkraemerx

回答

0

我知道这是不是最好的解决办法,但创建一个了javax.servlet.Filter包装HttpServletRequestHttpServletResponse与自定义的。 覆盖request.getSession()response.sendRedirect()定制包装器中的方法。

并通过的web.xml文件定义属性格式<过滤器映射>适用您的过滤器来搜索的servlet和JSP。

+0

我不确定,但可能会包装HttpServletRequest,HttpServletResponse并重新实现HttpSession比重新实现所有代码更多的工作。 –