日期:2014-05-16 浏览次数:20397 次
本文适合java web开发初学者参考。
?
统计系统或者通常的web项目中经常会有这样的需求:
用户通过下拉框(select)选择需要的条件,或者在文本框(input)中填写关键字,然后提交查询,得到符合条件的数据,到这里没有什么稀奇的。但是数据量大的情况下,一般要分为多页来显示,用户继续查看后续的数据,这时有个问题:用户查看后续的页面时,一抬头,哇塞,我的查询条件怎么不见了?
相信这是一个常见的场景,下面就在使用struts的情况下,简单分析下该如何实现这个小功能。
?
查询过程:
1.jsp页面中的查询条件一般在form表单中,查询首先由jsp页面发起,将查询条件保存到actionform中,然后到达action中。
2.action调用其他的接口,查询数据库中符合查询条件的数据。
3.action将查询得到的数据封装到dto中,转发到指定的页面。
4.显示结果数据的jsp页面从request或者session中取得结果数据,显示之。
?
其实这里我们只需要关心查询条件的传递:
查询条件->actionform->action->jsp
?
查询条件通过actionform传递到action,我们知道actionform可以有两种生命周期:request或者session,可以根据自己的需要指定。用户提交查询到显示结果数据这个过程,就是一个request的过程,其中保存着actionform,我们的查询条件就在这个actionform中,取出来就可以了。
示例代码:
<% String lotteryIDParam = null; OrderForm orderForm = (OrderForm)request.getAttribute("orderStatForm");//从request中取出actionform if(orderForm != null){ lotteryIDParam = orderForm.getLotteryId();//从actionform中取出你的查询条件 } %> <SELECT id=lotteryId name=lotteryId> <% if(lotteryIDParam != null){ String lotteryName = LotteryInfoUtil.getLotteryName(lotteryIDParam);//显示在下拉列表中,这句因需求而异 if(lotteryName.equals("请选择彩种")){ %> <OPTION value="0">请选择彩种</OPTION> <%}else{%> <OPTION value="<%=lotteryIDParam%>" selected><%=lotteryName%></OPTION> <OPTION value="0">请选择彩种</OPTION> <%}%> <%}else{%> <OPTION value="0" selected>请选择彩种</OPTION> <%}%> <OPTION value=38>排三直选</OPTION> <OPTION value=10>排三组选</OPTION> <OPTION value=22>七星彩</OPTION> <OPTION value=59>大乐透</OPTION> <OPTION value=19>足彩胜负</OPTION> <OPTION value=39>任选9场</OPTION> </SELECT>
?