Servlet13 - 实现删除和添加

3. 点击删除按钮从数据库中删除数据

  • 点击按钮调用 js 中的 delFruit(fid) 方法,需要传入 fid

    • 调用 js 中的方法以及传入参数的 thymeleaf 语法

    • <!-- 方法1 字符串拼接 易错不推荐使用 -->
      th:onclick="'delFruit('+${fruit.fid}+')'"/>
      
      <!-- 方法2 字符串两侧加| = 识别字符串中的 thymeleaf 语法 ${...} -->
      th:onclick="|delFruit(${fruit.fid})|"/>
      
    • 在 js 的 delFruit 方法中向 del.do 映射的 DelServlet 发送请求,默认为 get 请求,同时传入 fid

    • function delFruit(fid){
          if(confirm('是否确认删除?')){
              window.location.href='del.do?fid='+fid;
          }
      }
      
  • 在 DelServlet 中重写 doGet 处理请求,调用 FruitDAOImpl 中实现的 delFruit 方法

    • private FruitDAO fruitDAO = new FruitDAOImpl();
      
      @Override
      public void doGet(HttpServletRequest request , HttpServletResponse response)throws IOException, ServletException {
          String fidStr = request.getParameter("fid");
          if(StringUtil.isNotEmpty(fidStr)){
              int fid = Integer.parseInt(fidStr);
              Fruit fruit = fruitDAO.getFruitByFid(fid);
              request.setAttribute("fruit",fruit);
              super.processTemplate("edit",request,response);
          }
      }
      
    • 在 FruitDAOImpl 实现的 delFruit 方法中,也只需调用父类 BaseDAO 中封装好的 executeUpdate 方法将 SQL 语句结构和参数传入即可

    • public void delFruit(Integer fid) {
      	super.executeUpdate("delete from t_fruit where fid = ? " , fid) ;
      }
      

4. 添加新记录

  • 首页 index.html 增加跳转至添加记录页面 add.html 的超链接

    • <a th:href="@{/add.html}" style="border:0px solid blue;margin-bottom:4px;">添加新库存记录</a>
      
  • add.html 提交一个填写各种信息的表单,发送请求到 add.do 映射到 AddServlet

    • <form action="add.do" method="post">
          ...
      </form>
      
  • AddServlet 中重写 doPost方法

    • 根据 request 传入的值,创建 Fruit 对象

    • 将 Fruit 对象作为参数传入调用的 fruitDAO 类的 .addFruit(fruit) 方法

    • private FruitDAO fruitDAO = new FruitDAOImpl();
      
      @Override
      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
          request.setCharacterEncoding("UTF-8");
      
          String fname = request.getParameter("fname");
          Integer price = Integer.parseInt(request.getParameter("price")) ;
          Integer fcount = Integer.parseInt(request.getParameter("fcount"));
          String remark = request.getParameter("remark");
      
          Fruit fruit = new Fruit(0,fname , price , fcount , remark ) ;
      
          fruitDAO.addFruit(fruit);
      
          response.sendRedirect("index");
      
      }
      
    • 最后客户端重定向,添加完成后自动跳转到首页

  • fruitDAO 中的 addFruit() 方法通过调用父类 BaseDAO 的方法实现

    • 将SQL语句结构和占位符对应值作为参数传入父类 BaseDAO 封装好的 executeUpdate 方法即可完成数据库操作

    • @Override
      public void addFruit(Fruit fruit) {
          String sql = "insert into t_fruit values(0,?,?,?,?)";
          super.executeUpdate(sql,fruit.getFname(),fruit.getPrice(),fruit.getFcount(),fruit.getRemark());
      }
      
posted @   LaViez  阅读(85)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示