日期:2014-05-16  浏览次数:20397 次

jsp查询条件的保留

本文适合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>

?