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 );
}
