By GokiSoft.com|
19:16 12/10/2020|
Spring MVC
[Share Code] Hướng dẫn chữa bài tập quản lý sinh viên - Lập trình Spring MVC
[Share Code] Hướng dẫn chữa bài tập quản lý sinh viên - Lập trình Spring MVC
- Quan ly sinh vien
1) tao 1 page => add sinh vien
2) hien thi danh sach sinh vien
3) Xoa
=> BT: Sua thong tin sinh vien.
====================================
Database
create table student (
rollno varchar(20) primary key,
fullname varchar(50) not null,
address varchar(200)
)
Phat trien du an:
- Controller: StudentController
@student/list -> GET
- showStudentList()
@student/add -> GET
- view add
@student/save -> POST
- save student
@student/delete -> POST
- delete sinh vien
- View:
- studentList.jsp
- viewStudent.jsp
#studentList.jsp
<%--
Document : studentList
Created on : Oct 12, 2020, 6:52:37 PM
Author : student
--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Registation Form * Form Tutorial</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"/>
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<!-- Popper JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<div class="panel panel-primary">
<div class="panel-heading">
<h2 class="text-center">Quan Ly Danh Sach Sinh Vien</h2>
</div>
<div class="panel-body">
<table class="table table-bordered">
<thead>
<tr>
<th>STT</th>
<th>Ho & Ten</th>
<th>RollNo</th>
<th>Dia Chi</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<c:forEach var="item" items="${studentList}" varStatus="loop">
<tr>
<td>${loop.index + 1}</td>
<td>${item.fullname}</td>
<td>${item.rollno}</td>
<td>${item.address}</td>
<td>
<button class="btn btn-warning">Sua</button>
</td>
<td>
<button class="btn btn-danger" onclick="deleteStudent('${item.rollno}')">Xoa</button>
</td>
</tr>
</c:forEach>
</tbody>
</table>
<a href="add.html"><button class="btn btn-success">Them Sinh Vien Moi</button></a>
</div>
</div>
</div>
<script>
function deleteStudent(rollno) {
option = confirm('Ban co chac chan muon xoa sinh vien nay khong?')
if(!option) return;
$.post('delete.html', {
rollno: rollno
}, function() {
location.reload()
})
}
</script>
</body>
</html>
#viewStudent.jsp
<%--
Document : addStudent
Created on : Oct 12, 2020, 7:10:53 PM
Author : student
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Add/Update Student</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"/>
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<!-- Popper JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<div class="panel panel-primary">
<div class="panel-heading">
<h2 class="text-center">Add/Update Student</h2>
</div>
<div class="panel-body">
<form method="post" action="save.html">
<div class="form-group">
<label for="usr">Name:</label>
<input required="true" type="text" class="form-control" id="usr" name="fullname">
</div>
<div class="form-group">
<label for="usr">RollNo:</label>
<input required="true" type="text" class="form-control" id="usr" name="rollno">
</div>
<div class="form-group">
<label for="usr">Address:</label>
<input required="true" type="text" class="form-control" id="usr" name="address">
</div>
<button class="btn btn-success">Register</button>
</form>
</div>
</div>
</div>
</body>
</html>
#persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="SpringExample01PU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>aptech.entity.Student</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/quanlysinhvien?serverTimezone=UTC"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.password" value=""/>
</properties>
</persistence-unit>
</persistence>
#Student.java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package aptech.entity;
import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
/**
*
* @author student
*/
@Entity
@Table(name = "student")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Student.findAll", query = "SELECT s FROM Student s")
, @NamedQuery(name = "Student.findByRollno", query = "SELECT s FROM Student s WHERE s.rollno = :rollno")
, @NamedQuery(name = "Student.findByFullname", query = "SELECT s FROM Student s WHERE s.fullname = :fullname")
, @NamedQuery(name = "Student.findByAddress", query = "SELECT s FROM Student s WHERE s.address = :address")})
public class Student implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 20)
@Column(name = "rollno")
private String rollno;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 50)
@Column(name = "fullname")
private String fullname;
@Size(max = 200)
@Column(name = "address")
private String address;
public Student() {
}
public Student(String rollno) {
this.rollno = rollno;
}
public Student(String rollno, String fullname) {
this.rollno = rollno;
this.fullname = fullname;
}
public String getRollno() {
return rollno;
}
public void setRollno(String rollno) {
this.rollno = rollno;
}
public String getFullname() {
return fullname;
}
public void setFullname(String fullname) {
this.fullname = fullname;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public int hashCode() {
int hash = 0;
hash += (rollno != null ? rollno.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Student)) {
return false;
}
Student other = (Student) object;
if ((this.rollno == null && other.rollno != null) || (this.rollno != null && !this.rollno.equals(other.rollno))) {
return false;
}
return true;
}
@Override
public String toString() {
return "aptech.entity.Student[ rollno=" + rollno + " ]";
}
}
#StudentController.java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package aptech.controller;
import aptech.entity.Student;
import java.util.HashMap;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
/**
*
* @author student
*/
@Controller
@RequestMapping(value = "/student")
public class StudentController {
@RequestMapping(value = "/list", method = RequestMethod.GET)
public String showStudentList(ModelMap modelMap) {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("SpringExample01PU");
EntityManager em = factory.createEntityManager();
Query q = em.createNamedQuery("Student.findAll", Student.class);
List<Student> studentList = q.getResultList();
modelMap.put("studentList", studentList);
return "studentList";
}
@RequestMapping(value = "/add", method = RequestMethod.GET)
public String viewAdd(ModelMap modelMap) {
return "viewStudent";
}
@RequestMapping(value = "/save", method = RequestMethod.POST)
public String saveStudent(@RequestParam HashMap<String, String> form, ModelMap modelMap) {
String fullname = form.get("fullname");
String rollno = form.get("rollno");
String address = form.get("address");
Student std = new Student();
std.setAddress(address);
std.setFullname(fullname);
std.setRollno(rollno);
EntityManagerFactory factory = Persistence.createEntityManagerFactory("SpringExample01PU");
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();
em.persist(std);
em.getTransaction().commit();
return "redirect:list.html";
}
@RequestMapping(value = "/delete", method = RequestMethod.POST)
public String deleteStudent(@RequestParam HashMap<String, String> form, ModelMap modelMap) {
String rollno = form.get("rollno");
EntityManagerFactory factory = Persistence.createEntityManagerFactory("SpringExample01PU");
EntityManager em = factory.createEntityManager();
Student std = em.find(Student.class, rollno);
if(std != null) {
em.getTransaction().begin();
em.remove(std);
em.getTransaction().commit();
}
return "redirect:list.html";
}
}
Tags:
Phản hồi từ học viên
5
(Dựa trên đánh giá ngày hôm nay)