首页 > 其他分享 >Servlet15 - 实现模糊查询

Servlet15 - 实现模糊查询

时间:2023-01-18 17:35:02浏览次数:52  
标签:oper keyword pageNo 模糊 查询 关键字 Servlet15

模糊查询

在首页添加支持模糊查询的输入框

模糊查询的表单提交请求使用的是 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);
      }
      

标签:oper,keyword,pageNo,模糊,查询,关键字,Servlet15
From: https://www.cnblogs.com/Ashen-/p/17060276.html

相关文章