JavaWeb-23 (AJAX实现分页)

这是一个JavaWeb MVC架构的后台商品管理页面,主要展示了如何通过JSP和Servlet实现商品列表的展示、搜索功能以及分页操作。页面使用JSTL标签库,并通过Ajax进行异步加载数据。Servlet部分处理请求,获取搜索关键字,计算页码和总页数,从数据库中查询商品并返回JSON数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.adminIndex.jsp后台首页

<%@page import="java.util.Date"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
   <%@ taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core"%> 
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>后台商品管理页面</title>
<script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
<script type="text/javascript">
 
      //获取当前项目的绝对路径
      let path="${pageContext.request.servletContext.contextPath}"

      //初始化一个页码
      let pageIndex=1;
      let pageMax=0;

      $(function () {
        myLoad();
        
        //搜索的点击事件
        $("#searchBtn").click(function() {
            //得到输入框的值
            let searchName = $("#searchName").val();
            if(!searchName){
                alert("请输入关键词在搜索");
                return;
            }
            alert(searchName);
            alert(searchName);
        });
        
    });
      
      function myLoad(searchName) {
          $.post(path+"/adminGoodList.do",{"pageIndex":pageIndex,"searchName":searchName},function(msg){
              //alert(msg);
              //$("#content").html(msg);
              
              let map=$.parseJSON(msg);
              
              //将获取最大页码矿大作用域
              pageMax=map.pageMax;
              
              //转义
              //let list=$.parseJSON(map.adminGoodList);
              let str="";
              str+="<table border = '1' width='100%'>";
              str+="<tr>";
              str+="<th>商品编号</th>";
              str+="<th>商品名称</th>";
              str+="<th>商品价格</th>";
              str+="<th>操作</th>";
              str+="</tr>";
              
              //遍历
              $.each(list,function(index,object){
                  //console.log(index,object,object.gname);
                  //$("#content").html(object.gname);
                  //str+=object.gname"<br>";
                  str+="<tr>";
                  str+="<td>"+object.gid+"</td>";
                  str+="<td>"+object.gname+"</td>";
                  str+="<td>"+object.gprice+"</td>";
                  str+="<td><button>删除</button><button>修改</button></td>";
                  str+="</tr>";
              
              });
              str+="</table>";
               $("#content").html(str);
               $("#start").html(pageIndex);
               $("#end").html(pageMax);
          });
    }
      
      //下一页方法
      function nextBtn() {
          if(pageIndex >= pageMax){
              pageIndex=pageMax;
              return;
          }else{
              pageIndex++;
          }
        pageIndex++;
        //alert(pageIndex);
        var searchName = $("searchName").val();
        myLoad(searchName);
    }
      
</script>
</head>
<body>
     
     <%-- <c:if test="${empty adminGoodList }">
      <jsp:forward page="/adminGoodList.do"></jsp:forward>
     </c:if>
     
     ${adminGoodList } --%>
     
     <%=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) %>
     <h5>商品管理</h5>
        <div style="text-align: center;">
        <input id="searchName" type="text">
        <button id="searchBtn">搜索</button>
        </div>
     <div id="content">
     
     </div>
     <div style="background: gray;text-align: center;" >
         [<span id = "start"></span>/<span id = "end"></span>]
         <a>首页</a>
         <a>上一页</a>
         <a href="javascript:nextBtn();">下一页</a>
         <a>尾页</a>
     </div>
     
</body>
</html>

二.AdminGoodsListServlet

package javaWeb_MVC_Cart.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.javaWeb_MVC_Cart.biz.IGoodBiz;

import javaWeb_MVC_Cart.biz.impl.GoodBizImpl;
import javaWeb_MVC_Cart.entity.Good;
import javaWeb_MVC_Cart.utils.BaseDao;

public class AdminGoodsListServlet extends HttpServlet {
    
    private IGoodBiz igb=new GoodBizImpl();
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       doPost(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       
        //设置编码
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        
        Integer pageIndex=1;
        Integer pageSize=3;
        
        //如果说 用户点击了下一页 必定会传入一个pageIndex过来
        String pIndex=request.getParameter("pageIndex");
        if(pIndex != null) {
            pageIndex = Integer.valueOf(pIndex);
        }
        
        String searchName = request.getParameter("searchName");
        if(searchName == null) {
            searchName = "";
        }
        
        //获取总记录数
        Integer pageCount = new BaseDao().getTableCount1("MVC_Cart_Good", "gname", searchName);
        //求最大页数
        Integer pageMax=pageCount/pageSize;
        if(pageCount % pageSize != 0) {
            pageMax++;
        }
        
        
        
        //调用biz层中查询所有的方法
        List<Good> adminGoodList=igb.queryGoodsAll(pageIndex, pageSize, "");
        
        PrintWriter out = response.getWriter();
        
        //实例化Map集合
        Map<String,Object> maps=new HashMap<String,Object>();
        maps.put("adminGoodList", adminGoodList);
        maps.put("pageIndex", pageIndex);
        maps.put("pageMax", pageMax);
        
        //实例化jackJSON工具
        ObjectMapper mapper=new ObjectMapper();
        String writeValueAsString = mapper.writeValueAsString(adminGoodList);
        
        out.write(writeValueAsString);
        
        out.flush();
        out.close();
        
        
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值