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 BT1993

[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:

Liên kết rút gọn:

https://gokisoft.com/1993

Bình luận