本文适合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>
分享到:
相关推荐
商品信息存储在Oracle数据库中,通过Servlet查询并返回到JSP页面进行展示。可能使用了SQL查询语句,例如SELECT,来获取商品列表,同时可能实现了分页功能,提高用户体验。 4. **购物车模块**: 购物车功能涉及到...
- **重新编译触发条件**:JSP引擎通常会在检测到JSP源文件发生变化时触发重新编译。此外,开发者也可以通过特定参数(如`jsp_precompile`)强制重新编译页面。 #### 二、多线程与持久性 JSP引擎继承了Java Servlet...
同时,当有查询条件时,这些条件需要在分页中得以保留,以便用户在不同页之间切换时仍能保持查询状态。 **2. 使用方式** 使用这个通用分页组件分为两步: **步骤一:在JSP页面引入分页组件** 在需要展示分页的地方...
如果在相同的业务逻辑下,我们使用`jsp:forward`代替`jsp:include`,那么在`calling1.jsp`中,一旦租金满足条件,就会通过`jsp:forward`动作直接跳转到`destination1.jsp`。此时,`calling1.jsp`的后续代码将不会被...
对于已经处理过的订单,也应该保留历史记录,以便于管理人员进行查询。 5.管理员的管理:主管理员可以通过该模块添加、删除和修改管理员资料。 6.管理员资料管理:管理员可以通过该模块查询、修改和删除自己的相关...
JSP可以通过request.getRequestDispatcher()进行请求转发,保留表单数据。\n\n3. 处理多值参数:\n 当表单元素为复选框或多选下拉框时,可能有多个值。request.getParameterValues()方法可以返回一个字符串数组,...
JSTL提供了一系列标签,帮助开发者处理常见的任务,如循环、条件判断、XML操作等,避免过多地使用脚本元素。 **总结** "一个简单的JSP设计报告"可能包含了上述JSP技术的基本应用,例如使用JSP元素构建一个简单的...
当有查询条件时,只保留符合条件的关联记录。 2. **内连接**(INNER JOIN):只返回两个表中存在匹配的记录,即只有当两个表的对应字段相等时,才会出现在结果集中。 3. **子查询**:子查询可以嵌套在主查询中,...
4. SQL语句的编写:包括SELECT、INSERT、UPDATE、DELETE等操作,以及条件查询、联接查询等高级技巧。 5. JavaBeans规范:理解其生命周期,以及如何使用它来封装和传递数据。 6. MyEclipse的使用:包括项目创建、部署...
8. **动态渲染**:在JSP页面上,可以使用条件语句(如`<c:if>`)和迭代标签(如`<c:forEach>`)来根据购物车内容动态生成商品列表。 9. **AJAX异步更新**:为了提供更好的用户体验,购物车可以使用AJAX技术实现异步...
例如,EL用于在HTML中嵌入JSP变量,JSTL标签库可以简化循环、条件判断等复杂逻辑。 6. `login.txt`: 这个文件可能是用来记录用户登录信息的,比如用户名和密码。在实际的购物车程序中,用户身份验证是很重要的,...
JSTL是一系列标准标签,比如`<c:if>`、`<c:forEach>`,它们简化了JSP中的循环和条件语句。 JSP和HTML的结合使得开发者可以在静态内容中嵌入动态元素,提高了网站的交互性和灵活性。在实际开发中,通常会配合Servlet...
这可能涉及到数据库查询,返回一个表示菜单层次结构的数据对象,例如JSON。 2. 在JSP页面中,使用`c:forEach`遍历菜单数据,为每个菜单项生成HTML元素。如果菜单有子项,可以通过`c:if`判断并在适当的位置插入子...
- **动态内容生成:** 根据用户的查询条件动态生成搜索结果页面,提高了用户体验。 - **与后端集成:** JSP可以方便地与Java后端进行集成,实现数据的动态获取和处理。 ##### 2. 爬虫技术: - **网页抓取:** 使用...
JSP 文件在第一次访问时会被转化为Servlet 文件并编译运行,这样做的好处在于可以利用Servlet 强大的功能,同时保留JSP 在页面展示上的优势。 #### JSP 中 EL 标签的简单使用 EL(Expression Language)表达式语言...
3. **SQL查询**:与SQL Server交互,需要使用JDBC(Java Database Connectivity)来执行SQL语句,比如插入、更新、查询购物车中的商品信息。 4. **会话管理**:为了跟踪用户购物车的状态,JSP通常会使用HTTP会话。...
3. 日记查看与删除:用户可以浏览自己的所有日记,点击日记条目查看详情,也可以选择性地删除不需保留的日记。 4. 搜索与筛选:系统支持按日期、标题等条件搜索日记,方便用户查找特定内容。 5. 数据持久化:所有...
- 和`302 Found`类似,但必须保留原来的请求方法。 ### 4xx 客户端错误类 **400 Bad Request** - 请求无效或不可识别。 - 客户端发送了一个有语法错误的请求。 **401 Unauthorized** - 客户端尝试未经授权访问受...
与`forward()`不同的是,这种方式会改变客户端浏览器的URL地址栏显示的内容,并且不保留原始请求对象的信息,这意味着无法在目标页面访问到原始请求的数据。 **代码示例**: ```java public void doPost...
- 当用户提交查询后,可以在JSP页面中通过`request.getParameter("query")`获取查询条件,然后修改SQL查询语句,例如: ```java String query = request.getParameter("query"); String sql = "SELECT * FROM ...