CRUD

CRUD是常见的页面功能,即我们常说的增删改查 
C - Creation 增加 
R - Retrieve 查询 
U - Update 修改 
D - DELETE 删除 

执行的流程为:

客户端(JSP或html)输入数据,提交至对应的Servlet,Servlet执行Service层方法,再通过DAO层查询数据,数据层层返回至Servlet,Servlet将数据发送到客户端页面(JSP),页面读取数据并显示。

根据MVC的思想,Model(模型)、View(视图)、Controller(控制器),bean也就是实体类(一般是对应数据库的每个表)属于Model层,JSP页面属于View层,Servlet则属于Controller层。

这里不对具体代码进行展示,只对流程进行详解:

分页功能:

JSP的按钮代码:

 <ul class="pager">
            <li><a href="${pageContext.request.contextPath }/listProduct?start=0">首  页</a></li>
            <li><a href="${pageContext.request.contextPath }/listProduct?start=${pre}">上一页</a></li>
            <li><a href="${pageContext.request.contextPath }/listProduct?start=${next}">下一页</a></li>
            <li><a href="${pageContext.request.contextPath }/listProduct?start=${last}">末  页</a></li>
          </ul>           

Servlet代码:

public class AdminProductListServlet extends HttpServlet {
    private AdminProductService adminProductService = new AdminProductService();
    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            int start = 0;
            int count = 10;//每页显示个数
            start = Integer.parseInt(request.getParameter("start"));//接收请求发送的start值
            int next = start+count;//下一页起始值为JSP发送的start值+每页显示个数
            int pre = start-count;//下一页起始值为JSP发送的start值-每页显示个数
            int total = adminProductService.getTotal();//获取数据总个数
            int last;//最后一页
            if(total%count==0)//如果数据总个数刚好能整除每页显示个数
                last = total-count;
            //最后一页起始值为数据总数-每页显示个数,例如数据总共50个,每页显示10个,则最后一页起始值为40
            else
                last = total - total%count;
            //如果无法整除,例如数据总数53个,则最后一页起始值为53-50%10 即53-3=50
            pre = pre<0 ?0:pre;//边界检查,如果在第一页点击前一页,start-count pre为0-10=-10 无法显示,则pre应取0,即显示第一页
            next = next>last ?last:next;
            //边界检查,如果在最后一页点击下一页,start+count 例如最后一页起始值为50 数据总数53 50+10=60 
            //此时下一页起始值为60,超过数据总数,无法显示,则next应取last的值即50,即显示最后一页
            request.setAttribute("next", next);
            request.setAttribute("pre", pre);
            request.setAttribute("last", last);
            request.setAttribute("start", start);//用于JSP页面显示数据序号
            List<Product> list = adminProductService.list(start, count);
            request.setAttribute("productlist", list);
            request.getRequestDispatcher("/admin/product/list.jsp").forward(request, response);
        } catch (Exception e) {
            e.printStackTrace();
        }
        
    }

    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

这里要注意的是,首页起始值一直是0,所以由其他页面向Servlet提交请求时,必须包含参数start=0,使得页面可以正常从第一页显示!

猜你喜欢

转载自www.cnblogs.com/whwjava/p/9048025.html