开发者学堂课程【Lucene知识精讲与实战(下):综合案例(controller层编写)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/701/detail/12347
综合案例(controller层编写)
1、写 controller,提交的表单的路径是 list,也就是在 controller 中,写查询方法。由于类上写了 controller 注解,返回 string,按照 springvc 编写方式返回的字符串是页面名,
@ controller
@RequestMapping("/list")
public class SearchController {
@RequestMapping加注解,在注解中应该写方法的路径,但由于页面中提交的路径就是list,所以可以什么都不写,默认在里面
public String query(string querystring
,
price) {
查询关键字,
name
是
querystring
}
2、在表单中提交还有两个,一个是价格,一个是配置当前页,都是隐藏域,在页面上如果选价格,触发 js 方法 filter。
0-500
500-1000/li>
price', '1000- 5000')">1000- 5000
5000-10000
<а hrеf= "jаvаѕсrірt:fіltеr('рrісе', " 10000- 50000' )">10000- 50000
<а hrеf= "jаvаѕсrірt:fіltеr(' рrісе',' 50000- 100000' )">50000- 100000
3、对price表单元素进行赋值,1000- 5000字符串。
public String query(string querystring
,string price)
4、接收当前页,第一页第二页d第三页,变量名,必须跟页面上隐藏域的name属性值保持一致,配置当前页
public String query(string querystring
,
string price
,
integer page)
5、抛日常。
/**
* 搜索
*@param queryString查询的关键字
*@param price 查询价格范围
*@param page当前页
*@return
*@throws Exception
*/
@RequestMapping
public String query(String queryString, String price, Integer page) throws Exception{
}
6、做准备目录,返回search.html文件,直接输入页面名称即可,不用输入后缀名。
return"search"
;
7、对查询的条件进行数据回显,条件传进结果后进行封装,封装完返回给页面,把条件都要带上,默认对象进行返回
public String query(String queryString, String price, Integer page, Model model) throws Exception{
8、看页面,查询条件回显时,页面上的当前页是从返回的里面取的。
//查询条件回显到页面
model. addAttribute(" queryString" , queryString);
查询关键字
model. addAttribute("price" , price);
价格
model. addAttri bute("page", page);
当前页
return" search" ;
9、处理当前页,第一次查询时当前页有可能是空的,什么都没传进来。
//处理当前页
判断是否为空
if (StringUtils. isEmpty(page)) {
page = 1;
}
当前页是负数,不合理
if (page <= 0) {
page = 1;
}
//调用service查询
关于它的接口和实现类都已写出,所以进行注入。
@Autowired
private SearchService searchService;
10、复制 public String query(String queryString, String price, Integer page, Model model) throws Exception
;
作为 service 接口,返回值不对,不应该返回页面,应该返回数据,封装实体类为resultmodel,封装完之后进行返回。
public resultmodel query(String queryString, String price, Integer page, Model model) throws Exception
;
11、封装后的数据包含查询到的结果集,商品总数,总页数,当前页。
//商品列表
private List skuList;
//商品总数
private Long recordCount ;
//总页数
private Long pageCount;
//当前页
private long curPage;
12、在实现类中,在controller中就可以进行调用。
searchService . query(queryString, price, page);
model 是关于 springac,所以在 service 中用不到,所以可以删掉
Public ResultModel query(String queryString, String price, Integer page) throws Exception{
13、返回结果集,不会报错。
ResultModel resultModel=searchService . query(queryString, price, page);
14、ResultModel 查询到结果集,查询到的结果对象返回到页面,页面进行展示。
15、文档中的数据,图片都需要 ResultModel 进行展示,把 ResultModel 放入springac 的对象中,把它传到页面中进行展示。值是 ResultModel,页面遍历数据,有 for 循环,result 中有 skulist 结果集。
model. addAttribute ( "result ", resultModel);
Controller封装完毕。