Spring自带的JPetStore分析(三)

Search和分页
Search工具界面包含在includetop.jsp中,<form action="<c:url value="/shop/searchProducts.do"/>" method="post">
在struts-config.xml中配置如下:
<action path="/shop/searchProducts" type="org.springframework.samples.jpetstore.web.struts.SearchProductsAction"
  name="emptyForm" scope="session"
  validate="false">
  <forward name="success" path="/WEB-INF/jsp/struts/SearchProducts.jsp"/>
</action>
SearchProductsAction通过判断Parameter是search或是page来区分是查询还是显示后几页,如果是search表单来提交则包含search。因为<input type="hidden" name="search" value="true"/>,如果是显示不同的页,则url包含page,url:……/shop/searchProducts.do?page=previous,如果没有参数则只是刷新了一下。
这里通过spring的一个功能来实现分页,org.springframework.beans.support.PagedListHolder.PagedListHolder(List arg0)。这个类提供了nextPage和previousPage两个方法。其实这个分页的功能要求将所有数据取出,然后每次显示一部分。如果数据量大了,这种方式是不合适的。
Action中将查询结果也就是PagedListHolder对象放入session中,在jsp页面访问该对象来显示内容。
这里没有对直接输入地址的情况进行处理,比如在没有查询的情况下直接输入http://localhost:8080/jpetstore/shop/searchProducts.do?page=previous就会出错,只要加入一个判断session中是否有这个对象就可以解决这个问题。

==============================
显示商品目录(分类显示)
<action path="/shop/viewCategory" type="org.springframework.samples.jpetstore.web.struts.ViewCategoryAction"
  name="emptyForm" scope="session"
  validate="true" input="/WEB-INF/jsp/struts/index.jsp">
  <forward name="success" path="/WEB-INF/jsp/struts/Category.jsp"/>
</action>
在ViewCategoryAction中,处理显示商品种类和分页显示,结构和查找分页类似,不过这里对直接访问http://localhost:8080/jpetstore/shop/viewCategory.do进行了处理,如果之前没有查询任何商品,即session中没有ViewProductAction_category,抛出一个错误。

显示商品(同id的产品)
<action path="/shop/viewProduct" type="org.springframework.samples.jpetstore.web.struts.ViewProductAction"
  name="emptyForm" scope="session"
  validate="true" input="/WEB-INF/jsp/struts/index.jsp">
  <forward name="success" path="/WEB-INF/jsp/struts/Product.jsp"/>
</action>
这个的结构和查找分页也类似,也没有对直接访问这个Action没有参数这种情况处理。也采用spring的PagedListHolder来处理分页。

显示商品详细信息
<action path="/shop/viewItem" type="org.springframework.samples.jpetstore.web.struts.ViewItemAction"
  name="emptyForm" scope="session"
  validate="true" input="/WEB-INF/jsp/struts/Product.jsp">
  <forward name="success" path="/WEB-INF/jsp/struts/Item.jsp"/>
</action>
这个不用分页,直接利用bo的方法来获取数据,存入session中,jsp页面来显示。这个也没有处理没找到数据的情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值