模糊查询
在首页添加支持模糊查询的输入框
模糊查询的表单提交请求使用的是 post 方法,因为需要传给服务器查询关键字
查询结果跳转页面还是首页,只需要在 IndexServlet 中重写 doPost 方法,根据 request 中的关键字查询即可
-
首页的查询框
-
<form th:action="@{/index}" method="post" style="float:left;width:60%;margin-left:20%;"> 请输入关键字:<input type="text" name="keyword" th:value="${session.keyword}"/> <input type="submit" value="查询" class="btn"/> </form>
-
-
IndexServlet 中重写的 doPost 方法与之前重写的 doGet 方法,因此直接在 doPost 中调用 doGet,通过表单提交一个隐藏域信息来区分是 post 还是 get 方法
-
<input type="hidden" name="oper" value="search"/>
-
IndexServlet 在 doPost 中直接调用 doGet
-
@Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req,resp); }
-
doGet 中通过判断传入的 oper 是否为空来区分
-
String oper = request.getParameter("oper"); //如果oper!=null 说明 通过模糊查询按钮点击过来的 //如果oper是空的,说明 不是通过模糊查询按钮点击过来的
-
-
如果是从模糊查询按钮提交的,则将关键字存入 session 保存域中,如果不是模糊查询按钮提交的请求,则将关键字设置为空字符串,等于全部数据查询
-
String keyword = null ; if(StringUtil.isNotEmpty(oper) && "search".equals(oper)){ //说明是点击表单查询发送过来的请求 //此时,pageNo应该还原为1 , keyword应该从请求参数中获取 pageNo = 1 ; keyword = request.getParameter("keyword"); if(StringUtil.isEmpty(keyword)){ keyword = "" ; } session.setAttribute("keyword",keyword); }else{ //说明此处不是点击表单查询发送过来的请求(比如点击下面的上一页下一页或者直接在地址栏输入网址) //此时keyword应该从session作用域获取 String pageNoStr = request.getParameter("pageNo"); if(StringUtil.isNotEmpty(pageNoStr)){ pageNo = Integer.parseInt(pageNoStr); } Object keywordObj = session.getAttribute("keyword"); if(keywordObj!=null){ keyword = (String)keywordObj ; }else{ keyword = "" ; } }
-
修改查询语句,添加关键字查询,关键字为空字符串时正常查询
-
@Override public List<Fruit> getFruitList(String keyword , Integer pageNo) { return super.executeQuery("select * from t_fruit where fname like ? or remark like ? limit ? , 5" ,"%"+keyword+"%","%"+keyword+"%", (pageNo-1)*5); }
-