CÔNG NGHỆ THÔNG TIN >> BÀI VIẾT CHỌN LỌC

[Java Web] Thêm-Xóa-Sửa dữ liệu trong SQL Server sử dụng JDBC và JSP Servlet

Đăng lúc: 04:20 PM - 19/02/2024 bởi Charles Chung - 1744

Trong trước chúng ta đã tìm hiểu về cách đọc dữ liệu sử dụng JDBC và JSP Servlet, bài này tôi sẽ tiếp tục hướng dẫn các bạn các thao tác thêm, xóa, sửa dữ liệu.

CRUD là gì?

CRUD là viết tắt của 4 từ tiếng Anh: Create, Read, Update, Delete. CRUD là 4 tính năng quan trọng nhất để làm việc với Database của một Website.

  • CREATE – Tạo Mới Bài Viết, Tạo Mới Người Dùng
  • READ – Đọc Nội Dung Bài Viết, Đọc Thông Tin Người Dùng, Đọc Thông Tin Đơn Hàng, Xem Sản Phẩm
  • UPDATE – Chỉnh Sửa Bài Viết, Cập Nhật Giá Sản Phẩm, Người Dùng Đổi Mật Khẩu
  • DELETE – Xóa Bài Viết, Xóa Bình Luận, Xóa Đơn Hàng Lỗi

Thực hiện CRUD với bảng Flowers trong SQL Server sử dụng JDBC, JSP Servlet

Chúng ta sẽ tiếp tục ví dụ của bài trước nhé, các bạn tải source code bài trước tại đây Tiếp theo chúng ta mở nó trong Eclipse rồi tạo thêm 2 trang add.jsp và edit.jsp theo cấu trúc dưới

Tiếp theo chúng ta sẽ bổ sung source code cho các trang và các lớp, servlet.

  • Trang add.jsp: trang này chúng ta sẽ thiết kế Form HTML để nhập dữ liệu Flower
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<h3>Thêm mới hoa</h3>
<form action="FlowerServlet?action=insert" method="post">
	<table>
		<tr>
			<td>Mã hoa</td>
			<td><input type="text" name="flowerid" /></td>
		</tr>
		<tr>
			<td>Tên hoa</td>
			<td><input type="text" name="flowername" /></td>
		</tr>
		<tr>
			<td>Đơn vị tính</td>
			<td><input type="text" name="unit" /></td>
		</tr>
		<tr>
			<td>Giá</td>
			<td><input type="text" name="price" value="0" /></td>
		</tr>
		<tr>
			<td>Giá cũ</td>
			<td><input type="text" name="priceold" value="0" /></td>
		</tr>
		<tr>
			<td>Mô tả ngắn</td>
			<td><textarea name="brief"></textarea></td>
		</tr>
		<tr>
			<td>Mô tả đầy đủ</td>
			<td><textarea name="description"></textarea></td>
		</tr>
		<tr>
			<td>Ảnh</td>
			<td><input type="text" name="picture" /></td>
		</tr>
		<tr>
			<td>Tình trạng</td>
			<td><input type="checkbox" name="active" checked="checked" />Còn
				hàng</td>
		</tr>
		<tr>
			<td colspan="2"><button>Lưu</button></td>
		</tr>
	</table>
</form>
  • Trang edit.jsp: trang này chúng ta sẽ thiết kế Form HTML và hiển thị thông tin của Flower cần sửa, giúp người dùng có thể sửa dễ dàng
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<h3>Sửa hoa</h3>
<form action="FlowerServlet?action=update" method="post">
	<table>
		<tr>
			<td>Mã hoa</td>
			<td><input type="text" name="flowerid"
				value="${flower.flowerId}" readonly="readonly" /></td>
		</tr>
		<tr>
			<td>Tên hoa</td>
			<td><input type="text" name="flowername"
				value="${flower.flowerName}" /></td>
		</tr>
		<tr>
			<td>Đơn vị tính</td>
			<td><input type="text" name="unit" value="${flower.unit}" /></td>
		</tr>
		<tr>
			<td>Giá</td>
			<td><input type="text" name="price" value="${flower.price}" /></td>
		</tr>
		<tr>
			<td>Giá cũ</td>
			<td><input type="text" name="priceold"
				value="${flower.priceOld}" /></td>
		</tr>
		<tr>
			<td>Mô tả ngắn</td>
			<td><textarea name="brief">${flower.brief}  </textarea></td>
		</tr>
		<tr>
			<td>Mô tả đầy đủ</td>
			<td><textarea name="description">${flower.description}  </textarea></td>
		</tr>
		<tr>
			<td>Ảnh</td>
			<td><input type="text" name="picture" value="${flower.picture}" /></td>
		</tr>
		<tr>
			<td>Tình trạng</td>
			<td><c:if test="${flower.isActive()==true}">
					<input type="checkbox" name="active" checked="checked" />
				</c:if> <c:if test="${flower.isActive()==false}">
					<input type="checkbox" name="active" />
				</c:if> Còn hàng</td>
		</tr>
		<tr>
			<td colspan="2"><button>Lưu</button></td>
		</tr>
	</table>
</form>
  • Giao diện com.bkap.dao/FlowerDao.java: Khai báo thêm 3 phương thức theo code dưới đây
 1
 2
 3
	public boolean insert(Flower f);
	public boolean update(Flower f);
	public boolean delete(String flowerid);
  • Lớp com.bkap.dao/FlowerImpl.java: Bổ sung thêm code 3 phương thức trên như sau
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
        @Override        
        public boolean insert(Flower f) {
		try {
			PreparedStatement pst = con.prepareStatement("insert into flowers values(?,?,?,?,?,?,?,?,?,?)");
			pst.setString(1, f.getFlowerId());
			pst.setString(2, f.getFlowerName());
			pst.setString(3, f.getUnit());
			pst.setFloat(4, f.getPrice());
			pst.setFloat(5, f.getPriceOld());
			pst.setString(6,f.getBrief());
			pst.setString(7, f.getDescription());
			pst.setString(8, f.getPicture());
			pst.setDate(9, f.getCreateDate());
			pst.setBoolean(10, f.isActive());
			return pst.executeUpdate()>0;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return false;
	}

	@Override
	public boolean update(Flower f) {
		try {
			PreparedStatement pst = con.prepareStatement("update flowers set flowername=?,unit=?,price=?,priceold=?,brief=?,description=?,picture=?,createdate=?,active=? where flowerid=?");
			pst.setString(10, f.getFlowerId());
			pst.setString(1, f.getFlowerName());
			pst.setString(2, f.getUnit());
			pst.setFloat(3, f.getPrice());
			pst.setFloat(4, f.getPriceOld());
			pst.setString(5,f.getBrief());
			pst.setString(6, f.getDescription());
			pst.setString(7, f.getPicture());
			pst.setDate(8, f.getCreateDate());
			pst.setBoolean(9, f.isActive());
			return pst.executeUpdate()>0;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return false;
	}

	@Override
	public boolean delete(String flowerid) {
		try {
			PreparedStatement pst = con.prepareStatement("delete from flowers where flowerid=?");
			pst.setString(1, flowerid);
			return pst.executeUpdate()>0;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return false;
	}

Lớp com.bkap.servlets/FlowerServlet.java: Bổ sung code xử lý logic cho servlet theo gợi ý sau

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF8");
		FlowerDao flowerDao=new FlowerImpl();
		String action=request.getParameter("action");
		if(action==null) {
			request.setAttribute("flowers", flowerDao.getAll());
			request.getRequestDispatcher("index.jsp?page=flowertables").forward(request, response);
		}else if(action.equals("flowers"))
		{
			request.setAttribute("flowers", flowerDao.getAll());
			request.getRequestDispatcher("index.jsp?page=flowercells").forward(request, response);
		}else if(action.equals("detail") || action.equals("edit")) {
			String flowerid=request.getParameter("flowerid");
			request.setAttribute("flower", flowerDao.getById(flowerid));
			if(action.equals("detail"))
				request.getRequestDispatcher("index.jsp?page=flowerdetails").forward(request, response);
			else
				request.getRequestDispatcher("index.jsp?page=edit").forward(request, response);
		}else if(action.equals("delete"))
		{
			String flowerid=request.getParameter("flowerid");
			if(flowerDao.delete(flowerid))
				request.setAttribute("msg", "Xóa thành công");
			else
				request.setAttribute("msg", "Xóa không thành công");
			request.setAttribute("flowers", flowerDao.getAll());
			request.getRequestDispatcher("index.jsp?page=flowertables").forward(request, response);
		}else if(action.equals("insert") || action.equals("update"))
		{
			String flowerid=request.getParameter("flowerid");
			String flowername=request.getParameter("flowername");
			String unit=request.getParameter("unit");
			Float price=Float.parseFloat(request.getParameter("price"));
			Float priceold=Float.parseFloat(request.getParameter("priceold"));
			String brief=request.getParameter("brief");
			String description=request.getParameter("description");
			String picture=request.getParameter("picture");
			boolean active=request.getParameter("active")!=null?true:false;
			Date createdate=Date.valueOf(LocalDate.now());
			Flower f=new Flower(flowerid, flowername, unit, price, priceold, brief, description, picture, createdate, active);
			if(action.equals("insert")) {
				if(flowerDao.insert(f))
					request.setAttribute("msg", "Thêm thành công");
				else
					request.setAttribute("msg", "Thêm không thành công");
			}else
			{
				if(flowerDao.update(f))
					request.setAttribute("msg", "Sửa thành công");
				else
					request.setAttribute("msg", "Sửa không thành công");
			}
			request.setAttribute("flowers", flowerDao.getAll());
			request.getRequestDispatcher("index.jsp?page=flowertables").forward(request, response);
		}
	}

Cuối cùng các bạn chạy ứng dụng và xem kết quả nhé

  • Màn hình thêm

  • Màn hình sửa

  • Màn hình xóa

Link tải source code

Video demo

thay lời cảm ơn!

QUẢNG CÁO - TIẾP THỊ