Skip to content

13 Servlet+jsp模型练习

13.1 数据结构

sql
/*==============================================================*/
/* DBMS name:      MySQL 5.0                                    */
/* Created on:     2020/12/15 9:51:45                           */
/*==============================================================*/


drop table if exists dise_category;

drop table if exists disease;

/*==============================================================*/
/* Table: dise_category                                         */
/*==============================================================*/
create table dise_category
(
   id                   int not null auto_increment comment '主键',
   dica_code            varchar(100) comment '分类编码',
   dica_name            varchar(100) comment '分类名称',
   sequence_no          varchar(100) comment '显示顺序号',
   createtime           datetime default CURRENT_TIMESTAMP comment '创建时间',
   valid                varchar(5) default '1' comment '是否有效,默认1 有效,0无效',
   primary key (id)
);

alter table dise_category comment '疾病分类';

/*==============================================================*/
/* Table: disease                                               */
/*==============================================================*/
create table disease
(
   id                  int not null auto_increment comment '主键',
   disease_code         varchar(100) not null comment '疾病助记编码',
   disease_name         varchar(100) comment '疾病名称',
   disease_icd          varchar(100) comment '国际ICD编码',
   cate_id              int comment '主键',
   createtime           datetime default CURRENT_TIMESTAMP comment '创建时间',
   valid                varchar(5) default '1' comment '是否有效,默认1 有效,0无效',
   primary key (id)
);

alter table disease comment '疾病信息';

alter table disease add constraint FK_Reference_1 foreign key (cate_id)
      references dise_category (id) on delete restrict on update restrict;

13.2 创建项目

g: com.neuedu

a: his1215

v: 1.0

13.2.1 添加依赖

  • Servlet-API 类库
  • jsp-API jsp类库
  • junit 单元测试
  • com.neuedu.jdbcutil 连接数据库的工具
  • lombok 在便器帮助生成setter、getter、toString 构造函数...
  • jstl Apache 标准标签库
  • commons-lang3 语言包,比如工具StringUtils
xml
<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.0.1</version>
      <!--作用域  provided  参与编译,运行时抛弃 -->
      <scope>provided</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/jsp-api -->
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.1</version>
      <scope>provided</scope>
    </dependency>


    <dependency>
      <groupId>com.neuedu</groupId>
      <artifactId>jdbcutil</artifactId>
      <version>1.0</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.12</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>


    <!--Apache开发的工具类-->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.11</version>
    </dependency>

  </dependencies>

13.3 实体类

13.3.1 DiseCategory

java
package com.neuedu.his.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

/**
 * 项目:      his1215
 * 类名:       Disease
 * 创建时间:  2020/12/15  10:05
 * 描述 :     Disease  疾病信息
 * 作者 :     张金山
 * QQ :     314649444
 * Site:      https://jshand.gitee.io
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class DiseCategory  {

    private Integer id;

    @Column("dica_code")
    private String dicaCode;

    @Column("dica_name")
    private String dicaName;

    @Column("sequence_no")
    private String sequenceNo;

    private Date createtime;
    private String valid;

}

13.3.2 Disease

java
package com.neuedu.his.entity;

import com.neuedu.util.Column;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

/**
 * 项目:      his1215
 * 类名:       Disease
 * 创建时间:  2020/12/15  10:05
 * 描述 :     Disease  疾病信息
 * 作者 :     张金山
 * QQ :     314649444
 * Site:      https://jshand.gitee.io
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Disease {

    private Integer id;


    @Column("disease_code")
    private String diseaseCode;

    @Column("disease_came")
    private String diseaseName;

    @Column("disease_icd")
    private String diseaseIcd;
    
    private Integer cateId;
    private Date createtime;
    private String valid;


}

13.4 Dao类

13.4.1 IDiseCategoryDao接口

java
package com.neuedu.his.dao;

import com.neuedu.his.entity.DiseCategory;

import java.util.ArrayList;
import java.util.List;

/**
 * 项目:      his1215
 * 类名:       DiseCategoryDao
 * 创建时间:  2020/12/15  10:34
 * 描述 :     DiseCategoryDao数据访问对象
 * 作者 :     张金山
 * QQ :     314649444
 * Site:      https://jshand.gitee.io
 */
public interface IDiseCategoryDao {


    /**
     * 1 查询集合
     */
    public List<DiseCategory> selectList(String sql, Object... args);

    /**
     *  2 根据主键查询
     */
    public DiseCategory selectById(Integer id);


    /**
     * 3 根据主键更新
     */
    public boolean update(DiseCategory diseCategory);

    /**
     * 4 根据主键删除
     */
    public boolean deleteById(Integer id);

    /**
     * 5 添加
     */
    public boolean insert(DiseCategory diseCategory);

    /**
     * 6 查询条数
     */
    public long selectCout(String sql, Object... args);


}

13.4.2 DiseCategoryDaoImpl

java
package com.neuedu.his.dao.impl;

import com.neuedu.his.dao.IDiseCategoryDao;
import com.neuedu.his.entity.DiseCategory;
import com.neuedu.util.JDBCUtil;

import java.util.List;

/**
 * 项目:      his1215
 * 类名:       DiseCategoryDaoImpl
 * 创建时间:  2020/12/15  10:41
 * 描述 :     DiseCategoryDaoImpl 实现
 * 作者 :     张金山
 * QQ :     314649444
 * Site:      https://jshand.gitee.io
 */
public class DiseCategoryDaoImpl implements IDiseCategoryDao {
    @Override
    public List<DiseCategory> selectList(String sql, Object... args) {
        return JDBCUtil.executeQuery(sql, DiseCategory.class, args);
    }

    @Override
    public DiseCategory selectById(Integer id) {
        String sql = " select * from dise_category where id = ?";
        return JDBCUtil.getOne(sql, DiseCategory.class, id);
    }

    @Override
    public boolean update(DiseCategory diseCategory) {
        String sql = " UPDATE   dise_category SET dica_code = ? ,   dica_name = ?  ,   sequence_no = ? ,   valid = ?       WHERE id = ?  ";
        return JDBCUtil.executeUpdate(sql,
                diseCategory.getDicaCode(),
                diseCategory.getDicaName(),
                diseCategory.getSequenceNo(),
                diseCategory.getValid(),
                diseCategory.getId()
        );
    }

    @Override
    public boolean deleteById(Integer id) {
        String sql = " delete from dise_category where id = ?";
        return JDBCUtil.executeUpdate(sql,id);
    }

    @Override
    public boolean insert(DiseCategory diseCategory) {
        String sql = " INSERT INTO dise_category(  dica_code, dica_name,  sequence_no)  values  (?,?,?) ";
        return JDBCUtil.executeUpdate(sql,
                diseCategory.getDicaCode(),
                diseCategory.getDicaName(),
                diseCategory.getSequenceNo()
        );
    }

    @Override
    public long selectCount(String sql, Object... args) {
        return JDBCUtil.executeQueryCount(sql,args);
    }
}

13.4.3 单元测试 DiseCategoryDaoImplTest

使用junit4作为测试框架

java
package com.neuedu.his.dao.impl;

import com.neuedu.his.dao.IDiseCategoryDao;
import com.neuedu.his.entity.DiseCategory;
import org.junit.Assert;
import org.junit.Test;

import java.util.List;

import static org.junit.Assert.*;

/**
 * 项目:      his1215
 * 类名:       DiseCategoryDaoImplTest
 * 创建时间:  2020/12/15  10:43
 * 描述 :
 * 作者 :     张金山
 * QQ :     314649444
 * Site:      https://jshand.gitee.io
 */
public class DiseCategoryDaoImplTest {

    private IDiseCategoryDao diseCategoryDao = new DiseCategoryDaoImpl();


    @Test
    public void selectList() {
        String sql = "select * from  dise_category";
        List<DiseCategory> list = diseCategoryDao.selectList(sql);

        for (DiseCategory diseCategory : list) {
            System.out.println(diseCategory);
        }
    }

    @Test
    public void selectById() {
        Integer id = 1;
        DiseCategory ob = diseCategoryDao.selectById(id);
        System.out.println(ob);
    }

    @Test
    public void update() {

        Integer id = 1;
        DiseCategory diseCategory = diseCategoryDao.selectById(id);
        System.out.println("update before: "+diseCategory);

        diseCategory.setDicaName(diseCategory.getDicaName()+"--up");
        boolean success = diseCategoryDao.update(diseCategory);


        diseCategory = diseCategoryDao.selectById(id);
        System.out.println("update afger: "+diseCategory);
    }

    @Test
    public void deleteById() {

        Integer id = 2;
        boolean success = diseCategoryDao.deleteById(id);
        System.out.println("success: "+success);


        this.selectList();
    }

    @Test
    public void insert() {
        DiseCategory category = new DiseCategory();
        category.setDicaCode("AMBB21212");
        category.setDicaName("阿米巴病1212");
        category.setSequenceNo("1");

        boolean  success = diseCategoryDao.insert(category);

        System.out.println("success:"+success);

        //断言
        Assert.assertEquals(success,true);

    }

    @Test
    public void selectCout() {
        String sql = "select * from  dise_category";
        long count =  diseCategoryDao.selectCount(sql);
        System.out.println(count);
        Assert.assertNotEquals(count,0);
    }
}

13.4.4 IDiseaseDao接口

java
package com.neuedu.his.dao;

import com.neuedu.his.entity.Disease;

import java.util.List;

/**
 * 项目:      his1215
 * 类名:       DiseaseDao
 * 创建时间:  2020/12/15  10:34
 * 描述 :     DiseaseDao数据访问对象
 * 作者 :     张金山
 * QQ :     314649444
 * Site:      https://jshand.gitee.io
 */
public interface IDiseaseDao {


    /**
     * 1 查询集合
     */
    public List<Disease> selectList(String sql, Object... args);

    /**
     *  2 根据主键查询
     */
    public Disease selectById(Integer id);


    /**
     * 3 根据主键更新
     */
    public boolean update(Disease Disease);

    /**
     * 4 根据主键删除
     */
    public boolean deleteById(Integer id);

    /**
     * 5 添加
     */
    public boolean insert(Disease Disease);

    /**
     * 6 查询条数
     */
    public long selectCount(String sql, Object... args);


}

13.4.5 DiseaseDaoImpl实现类

java
package com.neuedu.his.dao.impl;

import com.neuedu.his.dao.IDiseaseDao;
import com.neuedu.his.dao.IDiseaseDao;
import com.neuedu.his.entity.Disease;
import com.neuedu.util.JDBCUtil;

import java.util.List;

/**
 * 项目:      his1215
 * 类名:       DiseaseDaoImpl
 * 创建时间:  2020/12/15  10:41
 * 描述 :     DiseaseDaoImpl 实现
 * 作者 :     张金山
 * QQ :     314649444
 * Site:      https://jshand.gitee.io
 */
public class DiseaseDaoImpl implements IDiseaseDao {
    @Override
    public List<Disease> selectList(String sql, Object... args) {
        return JDBCUtil.executeQuery(sql, Disease.class, args);
    }

    @Override
    public Disease selectById(Integer id) {
        String sql = " select * from disease where id = ?";
        return JDBCUtil.getOne(sql, Disease.class, id);
    }

    @Override
    public boolean update(Disease disease) {
        String sql = " UPDATE   disease SET disease_code = ? ,   disease_name = ?  ,   disease_icd = ? ,   cate_id = ?  ,   valid = ?     WHERE id = ?  ";
        return JDBCUtil.executeUpdate(sql,
                disease.getDiseaseCode(),
                disease.getDiseaseName(),
                disease.getDiseaseIcd(),
                disease.getCateId(),
                disease.getValid(),
                disease.getId()
        );
    }

    @Override
    public boolean deleteById(Integer id) {
        String sql = " delete from disease where id = ?";
        return JDBCUtil.executeUpdate(sql,id);
    }

    @Override
    public boolean insert(Disease disease) {
        String sql = " INSERT INTO disease(  disease_code, disease_name,  disease_icd , cate_id)  values  (?,?,?,?) ";
        return JDBCUtil.executeUpdate(sql,
                disease.getDiseaseCode(),
                disease.getDiseaseName(),
                disease.getDiseaseIcd(),
                disease.getCateId()
        );
    }

    @Override
    public long selectCount(String sql, Object... args) {
        return JDBCUtil.executeQueryCount(sql,args);
    }
}

13.4.5 DiseaseDaoImplTest单元测试类

java
package com.neuedu.his.dao.impl;

import com.neuedu.his.dao.IDiseaseDao;
import com.neuedu.his.entity.Disease;
import org.junit.Test;

import java.util.List;

import static org.junit.Assert.*;

/**
 * 项目:      his1215
 * 类名:       DiseaseDaoImplTest
 * 创建时间:  2020/12/15  13:46
 * 描述 :
 * 作者 :     张金山
 * QQ :     314649444
 * Site:      https://jshand.gitee.io
 */
public class DiseaseDaoImplTest {
    private IDiseaseDao diseaseDao =  new DiseaseDaoImpl();

    @Test
    public void selectList() {

        String sql = " select * from disease ";
        List<Disease> list =  diseaseDao.selectList(sql);

        for (Disease disease : list) {
            System.out.println(disease);
        }
        
    }

    @Test
    public void selectById() {
        Integer id = 1;
        System.out.println(diseaseDao.selectById(id));
    }

    @Test
    public void update() {
        Integer id = 1;
        Disease disease= diseaseDao.selectById(id);
        System.out.println(disease);


        disease.setDiseaseName(disease.getDiseaseName()+"-update");
        diseaseDao.update(disease);


        //更新之后再次查询
        disease= diseaseDao.selectById(id);
        System.out.println(disease);
    }

    @Test
    public void deleteById() {
        this.selectList();//查询总条数


        Integer id = 2;
        diseaseDao.deleteById(id);


        this.selectList();//查询总条数

    }

    @Test
    public void insert() {

        Disease disease = new Disease();
        disease.setDiseaseCode("GDXHL");
        disease.setDiseaseName("古典型霍乱");
        disease.setDiseaseIcd("A00.051");
        disease.setCateId(1);
        boolean success = diseaseDao.insert(disease);
    }

    @Test
    public void selectCount() {
        String sql = " select * from disease ";
        long count = diseaseDao.selectCount(sql);
        System.out.println("总条数:"+count);
    }
}

13.5 Service类

13.5.1 IDiseaseService接口

java
package com.neuedu.his.service;

import com.neuedu.his.entity.Disease;

import java.util.List;

/**
 * 项目:      his1215
 * 类名:       IDiseaseService
 * 创建时间:  2020/12/15  14:25
 * 描述 :     业务逻辑层
 * 作者 :     张金山
 * QQ :     314649444
 * Site:      https://jshand.gitee.io
 */
public interface IDiseaseService {


    /**
     * 1 查询集合
     */
    public List<Disease> queryList();


    public List<Disease> queryListByPage(Integer pageNo,Integer pageCount);


    /**
     *  2 根据主键查询
     */
    public Disease queryById(Integer id);


    /**
     * 3 根据主键更新
     */
    public boolean edit(Disease disease);

    /**
     * 4 根据主键删除
     */
    public boolean deleteById(Integer id);

    /**
     * 5 添加
     */
    public boolean save(Disease disease);

}

13.5.2 DiseaseServiceImpl实现类

java
package com.neuedu.his.service.impl;

import com.neuedu.his.dao.IDiseaseDao;
import com.neuedu.his.dao.impl.DiseaseDaoImpl;
import com.neuedu.his.entity.Disease;
import com.neuedu.his.service.IDiseaseService;

import java.util.List;

/**
 * 项目:      his1215
 * 类名:       DiseaseServiceImpl
 * 创建时间:  2020/12/15  14:27
 * 描述 :     查询
 * 作者 :     张金山
 * QQ :     314649444
 * Site:      https://jshand.gitee.io
 */
public class DiseaseServiceImpl implements IDiseaseService {

    private IDiseaseDao diseaseDao = new DiseaseDaoImpl();

    /**
     * 查询集合,不分页
     * @return
     */
    @Override
    public List<Disease> queryList() {
        String sql = " select * from disease ";
        List<Disease> list =  diseaseDao.selectList(sql);
        return list;
    }

    /**
     * 查询集合,分页
     * @return
     */
    @Override
    public List<Disease> queryListByPage(Integer pageNo,Integer pageCount) {

        String sql = " select * from disease  limit ?  , ?  ";

        int start = (pageNo-1) * pageCount ;
        List<Disease> list =  diseaseDao.selectList(sql,start,pageCount);


        return list;

    }

    @Override
    public Disease queryById(Integer id) {
        return diseaseDao.selectById(id);
    }

    @Override
    public boolean edit(Disease disease) {
        return diseaseDao.update(disease);
    }

    @Override
    public boolean deleteById(Integer id) {
        return diseaseDao.deleteById(id);
    }

    @Override
    public boolean save(Disease disease) {
        return diseaseDao.insert(disease);
    }
}

13.6 控制器

13.6.1 DiseaseController

java
package com.neuedu.his.controller;

import com.neuedu.his.entity.Disease;
import com.neuedu.his.service.IDiseaseService;
import com.neuedu.his.service.impl.DiseaseServiceImpl;

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 java.io.IOException;
import java.util.List;

/**
 * 项目:      his1215
 * 类名:       DiseaseController
 * 创建时间:  2020/12/15  14:35
 * 描述 :
 * 作者 :     张金山
 * QQ :     314649444
 * Site:      https://jshand.gitee.io
 * <p>
 * http://127.0.0.1:8080/web/disease
 */
@WebServlet(name = "DiseaseController", urlPatterns = "/disease")
public class DiseaseController extends HttpServlet {

    private IDiseaseService diseaseService = new DiseaseServiceImpl();


    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8"); //post


        String type = req.getParameter("type");
        if (type == null || "list".equals(type)) {
            this.queryList(req, resp);
        } else if ("toAdd".equals(type)) {
            //web-INF下的目录不能直接url请求
            req.getRequestDispatcher("/WEB-INF/disease/disease_add.jsp").forward(req, resp);
        } else if ("add".equals(type)) {
            this.save(req, resp);
        }else if("toEdit".equals(type)){
            this.toEdit(req,resp);
        }else if("edit".equals(type)){
            this.edit(req,resp);
        }else if("del".equals(type)){
            this.del(req,resp);
        }


    }

    private void del(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        String id = req.getParameter("id");
        boolean success = diseaseService.deleteById(Integer.parseInt(id));
        resp.sendRedirect(req.getContextPath() + "/disease?type=list");
    }

    private void edit(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        String id = req.getParameter("id");
        String diseaseCode = req.getParameter("diseaseCode");
        String diseaseName = req.getParameter("diseaseName");
        String diseaseIcd = req.getParameter("diseaseIcd");
        String cateId = req.getParameter("cateId");
        String valid = req.getParameter("valid");

        Disease disease = new Disease();

        disease.setId(Integer.parseInt(id));
        disease.setDiseaseCode(diseaseCode);
        disease.setDiseaseName(diseaseName);
        disease.setDiseaseIcd(diseaseIcd);
        disease.setCateId(Integer.parseInt(cateId));
        disease.setValid(valid);

        boolean success = diseaseService.edit(disease);

        resp.sendRedirect(req.getContextPath() + "/disease?type=list");
    }

    private void toEdit(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String id =req.getParameter("id");
        Disease  disease = diseaseService.queryById(Integer.parseInt(id));

        req.setAttribute("disease",disease);
        req.getRequestDispatcher("/WEB-INF/disease/disease_edit.jsp").forward(req, resp);
    }

    private void save(HttpServletRequest req, HttpServletResponse resp) throws IOException {

        //
        String diseaseCode = req.getParameter("diseaseCode");
        String diseaseName = req.getParameter("diseaseName");
        String diseaseIcd = req.getParameter("diseaseIcd");
        String cateId = req.getParameter("cateId");

        Disease disease = new Disease();
        disease.setDiseaseCode(diseaseCode);
        disease.setDiseaseName(diseaseName);
        disease.setDiseaseIcd(diseaseIcd);
        disease.setCateId(Integer.parseInt(cateId));

        boolean success = diseaseService.save(disease);

        resp.sendRedirect(req.getContextPath() + "/disease?type=list");

    }

    private void queryList(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        List list = diseaseService.queryList();

        req.setAttribute("list", list);
        req.getRequestDispatcher("/WEB-INF/disease/disease_list.jsp").forward(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req, resp);
    }
}

13.7 页面

13.7.1 disease疾病相关页面

disease_list.jsp

html
<%--
  Created by IntelliJ IDEA.
  User: root
  Date: 2020/12/13
  Time: 11:22
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>


<html>
<head>
    <title>Title</title>
</head>
<body>

<a href='${pageContext.request.contextPath}/disease?type=toAdd'>添加</a>
<table border='1' width='100%' cellpadding='0' cellspacing='0'>
    <tr>
        <td>序号</td>
        <td>diseaseCode</td>
        <td>diseaseName</td>
        <td>diseaseIcd</td>
        <td>cateId</td>
        <td>createtime</td>
        <td>valid</td>
        <td>操作</td>
    </tr>


    <c:forEach var="disease" items="${list}" varStatus="stat"  >
        <tr>
            <td>${stat.count}</td>
            <td>${disease.diseaseCode}</td>
            <td>${disease.diseaseName}</td>
            <td>${disease.diseaseIcd}</td>
            <td>${disease.cateId}</td>
            <td>${disease.createtime}</td>
            <td>${disease.valid}</td>

            <td><a href='disease?type=toEdit&id=${disease.id}'>编辑</a> <a href='disease?type=del&id=${disease.id}'>删除</a></td>
        </tr>
    </c:forEach>

</table>

</body>
</html>

disease_add.jsp

html
<%--
  Created by IntelliJ IDEA.
  User: root
  Date: 2020/12/13
  Time: 11:54
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<form method='post' action='<%=request.getContextPath()%>/disease?type=add'>
    <h3>药品添加</h3>
    <table width='100%' border='1'>
        <tr>
            <td>疾病助记编码</td>
            <td><input type='text' name='diseaseCode'></td>
        </tr>
        <tr>
            <td>疾病名称</td>
            <td><input type='text' name='diseaseName'></td>
        </tr>
        <tr>
            <td>国际ICD编码</td>
            <td><input type='text' name='diseaseIcd'></td>
        </tr>
        <tr>
            <td>疾病所属分类</td>
            <td><input type='text' name='cateId'></td>
        </tr>

        <tr>
            <td colspan='2'><input type='submit'></td>
        </tr>

    </table>


</form>

</body>
</html>

disease_edit.jsp

html
<%--
  Created by IntelliJ IDEA.
  User: root
  Date: 2020/12/13
  Time: 11:54
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<form method='post' action='<%=request.getContextPath()%>/disease?type=edit'>

    <input type='hidden' name='id' value="${disease.id}" />
    <input type='hidden' name='valid' value="${disease.valid}" />

    <h3>药品添加</h3>
    <table width='100%' border='1'>

        <tr>
            <td>疾病助记编码</td>
            <td><input type='text' name='diseaseCode'  value="${disease.diseaseCode}"></td>
        </tr>
        <tr>
            <td>疾病名称</td>
            <td><input type='text' name='diseaseName' value="${disease.diseaseName}"></td>
        </tr>
        <tr>
            <td>国际ICD编码</td>
            <td><input type='text' name='diseaseIcd' value="${disease.diseaseIcd}"></td>
        </tr>
        <tr>
            <td>疾病所属分类</td>
            <td><input type='text' name='cateId'  value="${disease.cateId}"></td>
        </tr>

        <tr>
            <td colspan='2'><input type='submit'></td>
        </tr>

    </table>


</form>

</body>
</html>

13.8 使用ajax批量删除

13.8.1 列表页面

html
<%--
  Created by IntelliJ IDEA.
  User: root
  Date: 2020/12/13
  Time: 11:22
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>


<html>
<head>
    <title>Title</title>
    <script src="http://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script>
    <script>
        // window.onload =


        $(function(){
            //1 判断是否有选中的 checkbox  ,如果没有选中,提示

            $("#batchdel").click(function(){
               if( $("[name='ids']:checked").length<=0){
                   alert('请选择删除的疾病信息');
                   return;
               }

                //2 判断是否删除成功  成功: 刷新页面, 否则 提示失败的原因

                var ids = [];
                $("[name='ids']:checked").each(function(){
                    ids.push($(this).val());
                })

                alert(ids.join("~"))

                var url = '${pageContext.request.contextPath}/disease';
                $.ajax(url,{
                    type:'post',
                    traditional:true,
                    data:{
                        type:'batchdel',
                        ids:ids
                    },
                    dataType:'json',
                    success:function(data){
                        if(data){
                            alert("删除成功");
                            window.location.href =  window.location.href
                        }else{
                            alert("删除失败")
                        }
                    }
                })

            })

        });

    </script>
</head>
<body>

<a href='${pageContext.request.contextPath}/disease?type=toAdd'>添加</a>
<a href='javascript:void(0)' id="batchdel">批量删除</a>
<table border='1' width='100%' cellpadding='0' cellspacing='0'>
    <tr>
        <td><input type="checkbox" /></td>
        <td>序号</td>
        <td>diseaseCode</td>
        <td>diseaseName</td>
        <td>diseaseIcd</td>
        <td>cateId</td>
        <td>createtime</td>
        <td>valid</td>
        <td>操作</td>
    </tr>


    <c:forEach var="disease" items="${list}" varStatus="stat"  >
        <tr>
            <td><input type="checkbox" name="ids" value="${disease.id}" /></td>
            <td>${stat.count}</td>
            <td>${disease.diseaseCode}</td>
            <td>${disease.diseaseName}</td>
            <td>${disease.diseaseIcd}</td>
            <td>${disease.cateId}</td>
            <td>${disease.createtime}</td>
            <td>${disease.valid}</td>

            <td><a href='disease?type=toEdit&id=${disease.id}'>编辑</a> <a href='disease?type=del&id=${disease.id}'>删除</a></td>
        </tr>
    </c:forEach>

</table>

</body>
</html>

13.8.2 Controller

java
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    req.setCharacterEncoding("utf-8"); //post


    String type = req.getParameter("type");
    if (type == null || "list".equals(type)) {
        this.queryList(req, resp);
    } else if ("toAdd".equals(type)) {
        //web-INF下的目录不能直接url请求
        req.getRequestDispatcher("/WEB-INF/disease/disease_add.jsp").forward(req, resp);
    } else if ("add".equals(type)) {
        this.save(req, resp);
    }else if("toEdit".equals(type)){
        this.toEdit(req,resp);
    }else if("edit".equals(type)){
        this.edit(req,resp);
    }else if("del".equals(type)){
        this.del(req,resp);
    }else if("batchdel".equals(type)){ //批量删除
        try {
            this.batchdel(req,resp);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}





private void batchdel(HttpServletRequest req, HttpServletResponse resp) throws Exception {

    String[] ids = req.getParameterValues("ids");


    boolean success = diseaseService.batchdel(ids);
    PrintWriter out = resp.getWriter();

    out.write(String.valueOf(success));
    out.flush();
    out.close();

}

13.8.3 Service

接口中添加方法:

boolean batchdel(String[] ids) throws Exception;

DiseaseServiceImpl实现类中实现

java
@Override
public boolean batchdel(String[] ids) throws Exception {

    //物理删除 , delete  from  disease where id i ???????


    if(ids == null){
        throw new Exception("批量删除 id 不能为空");
    }
    StringBuffer sql = new StringBuffer(" delete  from  disease where id in (  ");

    for (String id : ids) {
        sql.append("?,");
    }

    //移除最后的 ,
    sql.deleteCharAt(sql.length()-1);

    sql.append(" ) ");
    //逻辑删除  update disease set valid = 0 where id  = ?????

    System.out.println("sql: "+sql.toString());

    return diseaseDao.batchDel(sql.toString(),ids);

}

13.8.4 Dao层代码

IDiseaseDao接口中添加如下方法:

 /**
     * 批量删除
     */
    public boolean batchDel(String sql ,Object... parm);

DiseaseDaoImpl实现类中实现批量删除方法

java
 @Override
    public boolean batchDel(String sql, Object... parm) {
        return JDBCUtil.executeUpdate(sql,parm );
    }

Released under the MIT License.