zoukankan      html  css  js  c++  java
  • 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,使得页面可以正常从第一页显示!

  • 相关阅读:
    【学习笔记】《Java编程思想》 第1~7章
    CodeForces
    第十六届浙江大学宁波理工学院程序设计大赛 E 雷顿女士与平衡树(并查集)
    第十六届浙江大学宁波理工学院程序设计大赛 D 雷顿女士与分队hard version(dp)
    CodeForces 862B(思维+二分图染色)
    CodeForces
    CodeForces
    CodeForces
    CodeForces
    CodeForces
  • 原文地址:https://www.cnblogs.com/whwjava/p/9048025.html
Copyright © 2011-2022 走看看