IGeekShop案例8-站内搜索功能

- 日理万妓 2024-04-17 14:09 193阅读 0赞

IGeekShop案例8-站内搜索功能

1 header.jsp

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html>
  4. <!-- 登录 注册 购物车... -->
  5. <div class="container-fluid">
  6. <div class="col-md-4">
  7. <img src="img/logo2.png" />
  8. </div>
  9. <div class="col-md-5">
  10. <img src="img/header.png" />
  11. </div>
  12. <div class="col-md-3" style="padding-top:20px">
  13. <ol class="list-inline">
  14. <li><a href="login.jsp">登录</a></li>
  15. <li><a href="register.jsp">注册</a></li>
  16. <li><a href="cart.jsp">购物车</a></li>
  17. <li><a href="order_list.jsp">我的订单</a></li>
  18. </ol>
  19. </div>
  20. </div>
  21. <!-- 导航条 -->
  22. <div class="container-fluid">
  23. <nav class="navbar navbar-inverse">
  24. <div class="container-fluid">
  25. <!-- Brand and toggle get grouped for better mobile display -->
  26. <div class="navbar-header">
  27. <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
  28. <span class="sr-only">Toggle navigation</span>
  29. <span class="icon-bar"></span>
  30. <span class="icon-bar"></span>
  31. <span class="icon-bar"></span>
  32. </button>
  33. <a class="navbar-brand" href="#">首页</a>
  34. </div>
  35. <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
  36. <ul class="nav navbar-nav">
  37. <li class="active"><a href="product_list.htm">手机数码<span class="sr-only">(current)</span></a></li>
  38. <li><a href="#">电脑办公</a></li>
  39. <li><a href="#">电脑办公</a></li>
  40. <li><a href="#">电脑办公</a></li>
  41. </ul>
  42. <form class="navbar-form navbar-right" role="search">
  43. <div class="form-group" style="position:relative">
  44. <input id="search" type="text" class="form-control" placeholder="Search" onkeyup="searchWord(this)">
  45. <div id="showDiv" style="display:none; position:absolute;z-index:1000;background:#fff; width:179px;border:1px solid #ccc;">
  46. </div>
  47. </div>
  48. <button type="submit" class="btn btn-default">Submit</button>
  49. </form>
  50. <!-- 完成异步搜索 -->
  51. <script type="text/javascript">
  52. function overFn(obj){
  53. $(obj).css("background","#DBEAF9");
  54. }
  55. function outFn(obj){
  56. $(obj).css("background","#fff");
  57. }
  58. function clickFn(obj){
  59. $("#search").val($(obj).html());
  60. $("#showDiv").css("display","none");
  61. }
  62. function searchWord(obj){
  63. //1、获得输入框的输入的内容
  64. var word = $(obj).val();
  65. //2、根据输入框的内容去数据库中模糊查询---List<Product>
  66. var content = "";
  67. $.post(
  68. "${pageContext.request.contextPath}/searchWord",
  69. {"word":word},
  70. function(data){
  71. //3、将返回的商品的名称 现在showDiv中
  72. //[{"pid":"1","pname":"小米 4c 官方版","market_price":8999.0,"shop_price":8999.0,"pimage":"products/1/c_0033.jpg","pdate":"2016-08-14","is_hot":1,"pdesc":"小米 4c 标准版 全网通 白色 移动联通电信4G手机 双卡双待 官方好好","pflag":0,"cid":"1"}]
  73. if(data.length>0){
  74. for(var i=0;i<data.length;i++){
  75. content+="<div style='padding:5px;cursor:pointer' onclick='clickFn(this)' onmouseover='overFn(this)' onmouseout='outFn(this)'>"+data[i]+"</div>";
  76. }
  77. $("#showDiv").html(content);
  78. $("#showDiv").css("display","block");
  79. }
  80. },
  81. "json"
  82. );
  83. }
  84. </script>
  85. </div>
  86. </div>
  87. </nav>
  88. </div>

2 web层

  1. package www.test.web;
  2. import java.io.IOException;
  3. import java.sql.SQLException;
  4. import java.util.List;
  5. import javax.servlet.ServletException;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. import com.google.gson.Gson;
  10. import net.sf.json.JSONArray;
  11. import sun.org.mozilla.javascript.internal.json.JsonParser;
  12. import www.test.domain.Product;
  13. import www.test.service.ProductService;
  14. public class SearchWordServlet extends HttpServlet {
  15. protected void doGet(HttpServletRequest request, HttpServletResponse response)
  16. throws ServletException, IOException {
  17. //获得关键字
  18. String word = request.getParameter("word");
  19. //查询该关键字的所有商品
  20. ProductService service = new ProductService();
  21. List<Object> productList = null;
  22. try {
  23. productList = service.findProductByWord(word);
  24. } catch (SQLException e) {
  25. e.printStackTrace();
  26. }
  27. //["xiaomi","huawei",""...]
  28. //使用json的转换工具将对象或集合转成json格式的字符串
  29. /*JSONArray fromObject = JSONArray.fromObject(productList);
  30. String string = fromObject.toString();
  31. System.out.println(string);*/
  32. Gson gson = new Gson();
  33. String json = gson.toJson(productList);
  34. System.out.println(json);
  35. response.setContentType("text/html;charset=UTF-8");
  36. response.getWriter().write(json);
  37. }
  38. protected void doPost(HttpServletRequest request, HttpServletResponse response)
  39. throws ServletException, IOException {
  40. doGet(request, response);
  41. }
  42. }

3 service层

  1. //根据关键字查询商品
  2. public List<Object> findProductByWord(String word) throws SQLException {
  3. ProductDao dao = new ProductDao();
  4. return dao.findProductByWord(word);
  5. }

4 dao层

  1. public List<Object> findProductByWord(String word) throws SQLException {
  2. QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
  3. String sql = "select * from product where pname like ? limit 0,8";
  4. List<Object> query = runner.query(sql, new ColumnListHandler("pname"), "%"+word+"%");//模糊查询
  5. return query;
  6. }

发表评论

表情:
评论列表 (有 0 条评论,193人围观)

还没有评论,来说两句吧...

相关阅读