Ken*_*Ken 2 java search jsp servlets
我有一个jsp搜索页面(Search.jsp)和一个结果页面(Result.jsp),它们都可以选择搜索条件.然后将参数传递给java控制器文件(Controller.java)以构建查询字符串并执行查询搜索.查询字符串和搜索结果将传递给Result.jsp进行显示.
目前,我使用servletContext来记住已处理的查询字符串,如果用户使用Result.jsp选择搜索条件,Controller.java会将此类条件附加到现有查询字符串.如果我使用Result.jsp进行一些搜索.例如,查询字符串将显示((Query1) AND Query2) AND Query3
在Result.jsp页面上.然后使用浏览器的后退按钮返回上一个显示页面.对于同一示例,将显示查询字符串(Query1) AND Query2
.然后,如果我再次搜索.(((Query1) AND Query2) AND Query3) AND Query4
将使用查询字符串.我知道这是我当前的实现所期望的,因为Result.jsp不会对已处理的查询字符串进行任何修改.
但是,我想当用户使用浏览器后退按钮,例如,查询字符串显示在页面上(Query1) AND Query2
,并执行搜索时,查询字符串应该((Query1) AND Query2) AND Query4
是根据结果上当前显示的查询字符串构建查询字符串的.jsp页面加上当前选择.我怎样才能做到这一点?这听起来很简单,但我已经尝试了几种使用Result.jsp来更新查询字符串的方法,但仍然无法正确使用它.因此,我想知道我的使用方法可能<c:set>
是错误的.我想听听你的建议.提前致谢.
目前我使用servletContext来记住处理过的查询字符串
您是否意识到正在访问您的Web应用程序的所有用户/会话ServletContext
之间共享?一旦访问者X修改了它,就会反映所有其他访问者的更改.您是否宁愿将其存储在保持数据访问者特定的位置?HttpSession
我想出于某种原因使用后退按钮
我真的很难理解你的功能需求(某些原因部分).但至少,既然你想让后退按钮正常工作,你想在这里使用幂等请求.因此,在适用的情况下,用GET替换POST.
无论何时您想在服务器上重新发送真实的HTTP请求而不是从浏览器的缓存中加载页面,您都希望通过向响应中添加以下标头来指示浏览器不缓存页面:
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0); // Proxies.
Run Code Online (Sandbox Code Playgroud)
你可以在你的控制器或一些Filter
覆盖url-pattern
的兴趣.
归档时间: |
|
查看次数: |
6962 次 |
最近记录: |