2.6系统实现
2.6.1JavaEE 实现 —— MVC 模式
DBCP.java——数据库连接池
实现代码如下:
package com.javaEE.code.class12;
import org.apache.commons.dbcp.BasicDataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
// Database Connection Pool
public class DBCP {
// 数据库连接池
private static BasicDataSource dbcp;
//为不同线程管理连接
private static ThreadLocal<Connection> tl;
//通过配置文件来获取数据库参数
static {
try {
Properties properties = new Properties();
InputStream inputStream = DBCP.class.getClassLoader().getResourceAsStream("com/javaEE/code/class12/Application.properties");
properties.load(inputStream);
inputStream.close();
// 初始化连接池
dbcp = new BasicDataSource();
// 数据库驱动 (Class.forName())
dbcp.setDriverClassName(properties.getProperty("driverName"));
// 数据库url
dbcp.setUrl(properties.getProperty("dbUrl"));
// 数据库用户名
dbcp.setUsername(properties.getProperty("userName"));
// 数据库密码
dbcp.setPassword(properties.getProperty("password"));
// 初始化连接数量
dbcp.setInitialSize(Integer.parseInt(properties.getProperty("initSize")));
// 连接池允许的最大连接数
dbcp.setMaxActive(Integer.parseInt(properties.getProperty("maxActive")));
// 最大等待时间
dbcp.setMaxWait(Integer.parseInt(properties.getProperty("maxWait")));
// 最小空闲数
dbcp.setMinIdle(Integer.parseInt(properties.getProperty("minIdle")) );
// 最大空闲数
dbcp.setMaxIdle(Integer.parseInt(properties.getProperty("maxIdle")));
// 初始化线程本地
tl = new ThreadLocal<Connection>();
} catch (Exception e) {
e.printStackTrace();
}
}
// 通过连接池获取一个连接
public static Connection getConnection() throws SQLException {
Connection conn = dbcp.getConnection();
tl.set(conn);
return conn;
}
// 归还连接,未关闭
public static void closeConnection() {
try {
Connection conn = tl.get();
if (conn != null) {
conn.close();
tl.remove();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
2.6.2Model 层——实体类的实现
Homework.java
实现代码如下:
package com.javaEE.code.class12.model;
import java.util.Date;
public class Homework {
private Long id;
private String homeworkTittle;
private String homeworkContent;
private Date createTime;
private Date updateTime;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getHomeworkTittle() {
return homeworkTittle;
}
public void setHomeworkTittle(String homeworkTittle) {
this.homeworkTittle = homeworkTittle;
}
public String getHomeworkContent() {
return homeworkContent;
}
public void setHomeworkContent(String homeworkContent) {
this.homeworkContent = homeworkContent;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
@Override
public String toString() {
return "Homework{" +
"id=" + id +
", homeworkTittle='" + homeworkTittle + '\'' +
", homeworkContent='" + homeworkContent + '\'' +
", createTime=" + createTime +
", updateTime=" + updateTime +
'}';
}
}
Student.java
package com.javaEE.code.class12.model;
import java.util.Date;
public class Student {
private Long id;
private String name;
private Date createTime;
private Date updateTime;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", createTime=" + createTime +
", updateTime=" + updateTime +
'}';
}
}
StudentHomework.java
package com.javaEE.code.class12.model;
import java.util.Date;
public class StudentHomework {
private Long id;
private Long studentId;
private Long homeworkId;
private String homeworkTitle;
private String homeworkContent;
private Date createTime;
private Date updateTime;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getStudentId() {
return studentId;
}
public void setStudentId(Long studentId) {
this.studentId = studentId;
}
public Long getHomeworkId() {
return homeworkId;
}
public void setHomeworkId(Long homeworkId) {
this.homeworkId = homeworkId;
}
public String getHomeworkTitle() {
return homeworkTitle;
}
public void setHomeworkTitle(String homeworkTitle) {
this.homeworkTitle = homeworkTitle;
}
public String getHomeworkContent() {
return homeworkContent;
}
public void setHomeworkContent(String homeworkContent) {
this.homeworkContent = homeworkContent;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
@Override
public String toString() {
return "StudentHomework{" +
"id=" + id +
", studentId=" + studentId +
", homeworkId=" + homeworkId +
", homeworkTitle='" + homeworkTitle + '\'' +
", homeworkContent='" + homeworkContent + '\'' +
", createTime=" + createTime +
", updateTime=" + updateTime +
'}';
}
}
Controller 层 ——对数据的操作
JDBC 类对数据进行直接操作
Servlet 类接收 Http 请求,对数据库进行相应操作,并返回结果集给 Viewer 层
StudentJDBC.java
package com.javaEE.code.class12.jdbc;
import com.javaEE.code.class12.DBCP;
import com.javaEE.code.class12.model.Student;
import java.sql.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class StudentJDBC {
// 数据库连接
private Connection connection = null;
// 执行对象
private PreparedStatement pstmt = null;
// 查找所有记录
public List<Student> selectAll() {
// 定义 SQL 语句
String sql = "SELECT * FROM s_student";
System.out.println(sql);
// 一条结果
Student s = null;
// 存储结果集
List<Student> resultList = new ArrayList<>();
try {
// 获取连接
connection = DBCP.getConnection();
pstmt = connection.prepareStatement(sql);
ResultSet resultSet = pstmt.executeQuery(sql);
// 输出结果集
while (resultSet.next()) {
// 初始化一条结果
s = new Student();
s.setId(resultSet.getLong("id"));
s.setName(resultSet.getString("name"));
s.setCreateTime(resultSet.getTimestamp("create_time"));
s.setUpdateTime(resultSet.getTimestamp("update_time"));
resultList.add(s);
}
// 归还连接
DBCP.closeConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return resultList;
}
// 添加一条记录
public void addStudent(Student s) {
// 定义 SQL 语句
// PreparedStatement
String sql = "INSERT INTO s_student(id, name) VALUES (?, ?)";
// 执行 SQL
try {
// 获取连接
connection = DBCP.getConnection();
pstmt = connection.prepareStatement(sql);
pstmt.setLong(1, s.getId());
pstmt.setString(2, s.getName());
System.out.println(sql);
pstmt.execute();
// 归还连接
DBCP.closeConnection();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 删除一条记录
public void deleteStudent(Student s) {
// 定义 SQL 语句
// PreparedStatement
String sql = "DELETE FROM s_student WHERE id=?";
// 执行 SQL
try {
// 获取连接
connection = DBCP.getConnection();
pstmt = connection.prepareStatement(sql);
pstmt.setLong(1, s.getId());
System.out.println(sql);
pstmt.execute();
DBCP.closeConnection();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 更新一条记录
public void updateStudent(Student s) {
// 定义 SQL 语句
// PreparedStatement
String sql = "UPDATE s_student SET name=?, update_time=? WHERE id=?";
//
try {
connection = DBCP.getConnection();
pstmt = connection.prepareStatement(sql);
pstmt.setString(1, s.getName());
pstmt.setTimestamp(2, new Timestamp(new Date().getTime()));
pstmt.setLong(3, s.getId());
System.out.println(sql);
pstmt.execute();
DBCP.closeConnection();
} catch (SQLException e) {
e.printStackTrace();
}
}
// public static void main(String[] args) {
// StudentJDBC sJDBC = new StudentJDBC();
// Student s = new Student();
// To test addStudent(Student s)
// s.setId(100L);
// s.setName("ddd");
// sJDBC.addStudent(s);
// To test selectAll()
// List<Student> list = sJDBC.selectAll();
// for(Student student : list)
// System.out.println(student.getName());
// To test deleteStudent(Student s)
// s.setId(100L);
// s.setName("ddd");
// sJDBC.deleteStudent(s);
// To test updateStudent(Student s)
// s.setId(100L);
// s.setName("dd");
// sJDBC.updateStudent(s);
// sJDBC.closeAll();
// }
}
HomeworkJDBC.java
package com.javaEE.code.class12.jdbc;
import com.javaEE.code.class12.DBCP;
import com.javaEE.code.class12.model.Homework;
import java.sql.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class HomeworkJDBC {
// 数据库连接
private Connection connection = null;
// 执行对象
private PreparedStatement pstmt = null;
// 查找所有记录
public List<Homework> selectAll() {
// 定义 SQL 语句
String sql = "SELECT * FROM s_homework";
System.out.println(sql);
// 一条结果
Homework h = null;
// 存储结果集
List<Homework> resultList = new ArrayList<>();
try {
// 获取连接
connection = DBCP.getConnection();
pstmt = connection.prepareStatement(sql);
ResultSet resultSet = pstmt.executeQuery(sql);
// 输出结果集
while (resultSet.next()) {
// 初始化一条结果
h = new Homework();
h.setId(resultSet.getLong("id"));
h.setHomeworkTittle(resultSet.getString("title"));
h.setHomeworkContent(resultSet.getString("content"));
h.setCreateTime(resultSet.getTimestamp("create_time"));
h.setUpdateTime(resultSet.getTimestamp("update_time"));
resultList.add(h);
}
// 归还连接
DBCP.closeConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return resultList;
}
// 添加一条记录
public void addHomework(Homework h) {
// 定义 SQL 语句
// PreparedStatement
String sql = "INSERT INTO s_homework(title, content) VALUES (?, ?)";
// 执行 SQL
try {
// 获取连接
connection = DBCP.getConnection();
pstmt = connection.prepareStatement(sql);
pstmt.setString(1, h.getHomeworkTittle());
pstmt.setString(2, h.getHomeworkContent());
System.out.println(sql);
pstmt.execute();
DBCP.closeConnection();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 删除一条记录
public void deleteHomework(Homework h) {
// 定义 SQL 语句
// PreparedStatement
String sql = "DELETE FROM s_homework WHERE id=?";
// 执行 SQL
try {
// 获取连接
connection = DBCP.getConnection();
pstmt = connection.prepareStatement(sql);
pstmt.setLong(1, h.getId());
System.out.println(sql);
pstmt.execute();
// 归还连接
DBCP.closeConnection();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 更新一条记录
public void updateHomework(Homework h) {
// 定义 SQL 语句
// PreparedStatement
String sql = "UPDATE s_homework SET title=?, content=?, update_time=? WHERE id=?";
//
try {
// 获取连接
connection = DBCP.getConnection();
PreparedStatement pstmt = connection.prepareStatement(sql);
pstmt.setString(1, h.getHomeworkTittle());
pstmt.setString(2, h.getHomeworkContent());
pstmt.setTimestamp(3, new Timestamp(new Date().getTime()));
pstmt.setLong(4, h.getId());
System.out.println(sql);
pstmt.execute();
// 归还连接
DBCP.closeConnection();
} catch (SQLException e) {
e.printStackTrace();
}
}
// public static void main(String[] args) {
// HomeworkJDBC hJDBC = new HomeworkJDBC();
// Homework h = new Homework();
// To test addHomework(Homework h)
// h.setId(100L);
// h.setHomeworkTittle("作业");
// h.setHomeworkContent("www.github.com");
// hJDBC.addHomework(h);
// To test selectAll()
// List<Homework> list = hJDBC.selectAll();
// for (Homework homework : list)
// System.out.println(homework.getHomeworkContent());
// To test updateHomework(Homework h)
// h.setId(100L);
// h.setHomeworkTittle("测试作业");
// h.setHomeworkContent("bjtu.edu.cn");
// hJDBC.updateHomework(h);
// To test deleteHomework(Homework h)
// h.setId(100L);
// hJDBC.deleteHomework(h);
//
// hJDBC.closeAll();
// }
}
StudentHomeworkJDBC.java
package com.javaEE.code.class12.jdbc;
import com.javaEE.code.class12.DBCP;
import com.javaEE.code.class12.model.StudentHomework;
import java.sql.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class StudentHomeworkJDBC {
// 数据库连接
private Connection connection = null;
// 执行对象
private PreparedStatement pstmt = null;
// 查找所有记录
public List<StudentHomework> selectAll() {
// 定义 SQL 语句
String sql = "SELECT * FROM s_student_homework";
System.out.println(sql);
// 一条结果
StudentHomework sh = null;
// 存储结果集
List<StudentHomework> resultList = new ArrayList<>();
try {
// 获取连接
connection = DBCP.getConnection();
pstmt = connection.prepareStatement(sql);
// 获取结果集
ResultSet resultSet = pstmt.executeQuery(sql);
// 输出结果集
while (resultSet.next()) {
// 初始化一条结果
sh = new StudentHomework();
sh.setId(resultSet.getLong("id"));
sh.setStudentId(resultSet.getLong("student_id"));
sh.setHomeworkId(resultSet.getLong("homework_id"));
sh.setHomeworkTitle(resultSet.getString("homework_title"));
sh.setHomeworkContent(resultSet.getString("homework_content"));
sh.setCreateTime(resultSet.getTimestamp("create_time"));
sh.setUpdateTime(resultSet.getTimestamp("update_time"));
resultList.add(sh);
}
// 归还连接
DBCP.closeConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return resultList;
}
// 添加一条记录
public void addStudentHomework(StudentHomework sh) {
// 定义 SQL 语句
// PreparedStatement
String sql = "INSERT INTO s_student_homework(student_id, homework_id, homework_title, homework_content) VALUES (?, ?, ?, ?)";
// 执行 SQL
try {
// 获取连接
connection = DBCP.getConnection();
pstmt = connection.prepareStatement(sql);
pstmt.setLong(1, sh.getStudentId());
pstmt.setLong(2, sh.getHomeworkId());
pstmt.setString(3, sh.getHomeworkTitle());
pstmt.setString(4, sh.getHomeworkContent());
System.out.println(sql);
pstmt.execute();
// 归还连接
DBCP.closeConnection();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 删除一条记录
public void deleteStudentHomework(StudentHomework sh) {
// 定义 SQL 语句
// PreparedStatement
String sql = "DELETE FROM s_student_homework WHERE id=?";
// 执行 SQL
try {
// 获取连接
connection = DBCP.getConnection();
pstmt = connection.prepareStatement(sql);
pstmt.setLong(1, sh.getId());
System.out.println(sql);
pstmt.execute();
// 归还连接
DBCP.closeConnection();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 更新一条记录
public void updateStudentHomework(StudentHomework sh) {
// 定义 SQL 语句
// PreparedStatement
String sql = "UPDATE s_student_homework SET student_id=?, homework_id=?, homework_title=?, homework_content=?, update_time=? WHERE id=?";
//
try {
// 获取连接
connection = DBCP.getConnection();
PreparedStatement pstmt = connection.prepareStatement(sql);
pstmt.setLong(1, sh.getStudentId());
pstmt.setLong(2, sh.getHomeworkId());
pstmt.setString(3, sh.getHomeworkTitle());
pstmt.setString(4, sh.getHomeworkContent());
pstmt.setTimestamp(5, new Timestamp(new Date().getTime()));
pstmt.setLong(6, sh.getId());
System.out.println(sql);
pstmt.execute();
// 归还连接
DBCP.closeConnection();
} catch (SQLException e) {
e.printStackTrace();
}
}
// public static void main(String[] args) {
// StudentHomeworkJDBC shJDBC = new StudentHomeworkJDBC();
// StudentHomework sh = new StudentHomework();
// To test selectAll()
// List<StudentHomework> list = shJDBC.selectAll();
// for (StudentHomework sh : list)
// System.out.println(sh.getHomeworkContent());
// To test addStudentHomework(StudentHomework sh)
// sh.setStudentId(104L);
// sh.setHomeworkId(104L);
// sh.setHomeworkTitle("作业");
// sh.setHomeworkContent("www.google.com");
// shJDBC.addStudentHomework(sh);
// To test deleteStudentHomework(StudentHomework sh)
// sh.setId(4L);
// shJDBC.deleteStudentHomework(sh);
// To test updateStudentHomework(StudentHomework sh)
// sh.setId(11L);
// sh.setHomeworkId(105L);
// sh.setStudentId(105L);
// sh.setHomeworkTitle("作业");
// sh.setHomeworkContent("bjtu.edu.cn");
// shJDBC.updateStudentHomework(sh);
// shJDBC.closeAll();
// }
}
HomeworkStudentServlet.java 学生看到的作业列表,仅可提交作业
package com.javaEE.code.class12.servlet;
import com.javaEE.code.class12.jdbc.HomeworkJDBC;
import com.javaEE.code.class12.model.Homework;
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;
// 学生看到的作业列表,仅可提交作业
@WebServlet(name = "HomeworkStudentServlet", urlPatterns = "/HomeworkStudent")
public class HomeworkStudentServlet extends HttpServlet {
private HomeworkJDBC homeworkJDBC = new HomeworkJDBC();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
List<Homework> list = homeworkJDBC.selectAll();
req.setAttribute("list",list);
req.getRequestDispatcher("/jsp/homework-student.jsp").forward(req, resp);
}
}
StudentServlet.java 学生列表
package com.javaEE.code.class12.servlet;
import com.javaEE.code.class12.jdbc.StudentJDBC;
import com.javaEE.code.class12.model.Student;
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.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.List;
// 教师看到学生列表
@WebServlet(name = "StudentServlet", urlPatterns = "/Student")
public class 锕 extends HttpServlet {
private StudentJDBC studentJDBC= new StudentJDBC();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
List<Student> studentList = studentJDBC.selectAll();
req.setAttribute("studentList", studentList);
req.getRequestDispatcher("/jsp/teacher.jsp").forward(req, resp);
}
// https://www.cnblogs.com/xiaochuan94/p/9184444.html
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
// 获取方法名
String name = req.getParameter("method");
if(name == null || name.isEmpty()){
throw new RuntimeException("method parameter does not exist");
}
// 获得当前类的Class对象
Class c = this.getClass();
Method method = null;
try {
// 使用反射机制获取在本类中声明了的方法
method = getClass().getDeclaredMethod(name, HttpServletRequest.class, HttpServletResponse.class);
// 反射调用方法
method.invoke(this, req, resp);
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
}
protected void addStudent(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
Student s = new Student();
s.setId(Long.parseLong(req.getParameter("studentId")));
s.setName(req.getParameter("studentName"));
studentJDBC.addStudent(s);
// 刷新页面
resp.sendRedirect("Student");
}
protected void updateStudent(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
Student s = new Student();
s.setId(Long.parseLong(req.getParameter("studentId")));
s.setName(req.getParameter("studentName"));
studentJDBC.updateStudent(s);
// 刷新页面
resp.sendRedirect("Student");
}
}
HomeworkTeacherServlet.java 教师看到的作业列表,可进行添加和修改操作
package com.javaEE.code.class12.servlet;
import com.javaEE.code.class12.jdbc.HomeworkJDBC;
import com.javaEE.code.class12.model.Homework;
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.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.List;
// 教师看到的作业列表,可进行添加和修改操作
@WebServlet(name = "HomeworkTeacherServlet", urlPatterns = "/HomeworkTeacher")
public class HomeworkTeacherServlet extends HttpServlet {
private HomeworkJDBC homeworkJDBC = new HomeworkJDBC();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
List<Homework> list = homeworkJDBC.selectAll();
req.setAttribute("list",list);
req.getRequestDispatcher("/jsp/homework-teacher.jsp").forward(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
// 获取方法名
String name = req.getParameter("method");
if (name == null || name.isEmpty()) {
throw new RuntimeException("method parameter does not exist");
}
// 获得当前类的Class对象
Class c = this.getClass();
Method method = null;
try {
// 使用反射机制获取在本类中声明了的方法
method = getClass().getDeclaredMethod(name, HttpServletRequest.class, HttpServletResponse.class);
// 反射调用方法
method.invoke(this, req, resp);
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
}
protected void addHomework(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
Homework h = new Homework();
h.setHomeworkTittle(req.getParameter("title"));
h.setHomeworkContent(req.getParameter("content"));
System.out.println(h.toString());
homeworkJDBC.addHomework(h);
// 刷新页面
resp.sendRedirect("HomeworkTeacher");
}
protected void updateHomework(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
Homework h = new Homework();
h.setId(Long.parseLong(req.getParameter("homeworkId")));
h.setHomeworkTittle(req.getParameter("title"));
h.setHomeworkContent(req.getParameter("content"));
homeworkJDBC.updateHomework(h);
// 刷新页面
resp.sendRedirect("HomeworkTeacher");
}
}
StudentHomeworkServlet.java 学生提交的作业列表
package com.javaEE.code.class12.servlet;
import com.javaEE.code.class12.jdbc.StudentHomeworkJDBC;
import com.javaEE.code.class12.model.StudentHomework;
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;
@WebServlet(name = "StudentHomeworkServlet", urlPatterns = "/StudentHomework")
public class StudentHomeworkServlet extends HttpServlet {
private StudentHomeworkJDBC studentHomeworkJDBC = new StudentHomeworkJDBC();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
List<StudentHomework> list = studentHomeworkJDBC.selectAll();
req.setAttribute("list",list);
req.getRequestDispatcher("/jsp/studentHomework.jsp").forward(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
StudentHomework sh = new StudentHomework();
sh.setStudentId(Long.parseLong(req.getParameter("studentId")));
sh.setHomeworkId(Long.parseLong(req.getParameter("homeworkId")));
sh.setHomeworkTitle(req.getParameter("title"));
sh.setHomeworkContent(req.getParameter("content"));
System.out.println(sh.toString());
studentHomeworkJDBC.addStudentHomework(sh);
// 刷新页面
// doGet(req, resp);
resp.sendRedirect("HomeworkStudent");
}
}
Viewer 层——界面
index.jsp 首页
<%@ page import="com.javaEE.code.class12.model.StudentHomework" %>
<%@ page import="java.util.List" %>
<%@ page import="com.javaEE.code.class12.jdbc.StudentHomeworkJDBC" %>
<%--
Created by IntelliJ IDEA.
User:
Date: 2020/2/27
Time: 15:04
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>JavaEE-01</title>
<style>
#div1 {
height: 100%;
width: 50%;
/*float: none;*/
/*border: black;*/
margin: 0 auto;
text-align: center;
}
</style>
</head>
<body>
<h2 align="center">基于 Java + Servlet + MySQL 的简易学生作业管理系统</h2>
<div id="div1" align="center">
<fieldset>
<legend align="left">学生作业管理系统</legend>
<button οnclick="location.href='HomeworkStudent'" type="button">学生登录</button>
<button οnclick="location.href='Student'" type="button">教师登录</button>
</fieldset>
</div>
</button>
</body>
</html>
homework-student.jsp 学生查看作业列表,提交作业
<%@ page import="com.javaEE.code.class12.model.StudentHomework" %>
<%@ page import="java.util.List" %>
<%@ page import="com.javaEE.code.class12.jdbc.StudentHomeworkJDBC" %>
<%@ page import="com.javaEE.code.class12.model.Homework" %>
<%--
Created by IntelliJ IDEA.
User:
Date: 2020/3/8
Time: 20:20
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>student</title>
</head>
<body>
<h2 align="center">学生作业管理系统——学生端</h2>
<hr color="black">
<h3 align="center">作业列表</h3>
<div>
<table align="center" width="960" border="1" cellpadding="1" cellspacing="1">
<tr align="center" height="50" bgcolor="gray">
<td>作业ID</td>
<td>作业标题</td>
<td>作业内容</td>
<td>创建时间</td>
<td>更新时间</td>
</tr>
<%
// 通过网络请求获取结果
List<Homework> list = (List<Homework>) request.getAttribute("list");
// 通过HomeworkJDBC对象获取结果
// HomeworkJDBC shJDBC = new HomeworkJDBC();
// List<Homework> list = hJDBC.selectAll();
for (Homework h : list) {
%>
<tr align="center" bgcolor="white" height="30">
<td><%=h.getId()%>
</td>
<td><%=h.getHomeworkTittle()%>
</td>
<td><%=h.getHomeworkContent()%>
</td>
<td><%=h.getCreateTime()%>
</td>
<td><%=h.getUpdateTime()%>
</td>
</tr>
<%
}
%>
</table>
</div>
<h3 align="center">提交作业</h3>
<div align="center">
<form action="StudentHomework" method="post" οnsubmit="location.reload()">
<table>
<tr>
<td align="right">作业ID:  </td>
<td><input type="text" name="homeworkId"></td>
</tr>
<tr>
<td align="right">学号:  </td>
<td><input type="text" name="studentId"></td>
</tr>
<tr>
<td align="right">作业标题:  </td>
<td><input type="text" name="title"></td>
</tr>
<tr>
<td valign="right">作业内容:  </td>
<td><input type="text" name="content"></td>
</tr>
<tr>
<td><br></td>
<td><br></td>
</tr>
<tr>
<td><input type="button" name="Submit" οnclick="history.back();" value="返回上一页"></td>
<td>
 <button οnclick="location.href='index.jsp'" type="button">返回首页</button> 
<input type="submit" value="提交作业"/>
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
teacher.jsp 教师可查看学生列表,添加学生,修改学生信息
<%@ page import="com.javaEE.code.class12.model.StudentHomework" %>
<%@ page import="java.util.List" %>
<%@ page import="com.javaEE.code.class12.jdbc.StudentHomeworkJDBC" %>
<%@ page import="com.javaEE.code.class12.model.Student" %>
<%--
Created by IntelliJ IDEA.
User:
Date: 2020/3/8
Time: 20:20
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>teacher</title>
<style>
#div2, #div3 {
width: 50%;
float: left;
/*border: black;*/
text-align: center;
}
</style>
</head>
<body>
<h2 align="center">学生作业管理系统——教师端</h2>
<hr color="black">
<h3 align="center">学生列表</h3>
<div align="center">
<div>
<table align="center" width=70% border="1" cellpadding="1" cellspacing="1">
<tr align="center" height="50" bgcolor="gray">
<td>学生ID</td>
<td>学生姓名</td>
<td>创建时间</td>
<td>更新时间</td>
</tr>
<%
// 通过网络请求获取结果
List<Student> list = (List<Student>) request.getAttribute("studentList");
// 通过StudentHomeworkJDBC对象获取结果
// StudentHomeworkJDBC shJDBC = new StudentHomeworkJDBC();
// List<StudentHomework> list = shJDBC.selectAll();
for (Student s : list) {
%>
<tr align="center" bgcolor="white" height="30">
<td><%=s.getId()%>
</td>
<td><%=s.getName()%>
</td>
<td><%=s.getCreateTime()%>
</td>
<td><%=s.getUpdateTime()%>
</td>
</tr>
<%
}
%>
</table>
</div>
<div>
<div id="div2">
<h3>添加学生信息</h3>
<form action="Student?method=addStudent" method="post" οnsubmit="location.reload()">
<table align="center">
<tr>
<td align="right">学生ID:  </td>
<td><input type="text" name="studentId"></td>
</tr>
<tr>
<td align="right">学生姓名:  </td>
<td><input type="text" name="studentName"></td>
</tr>
<tr>
<td><br></td>
<td><br></td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" value="添加学生信息"/>
</td>
</tr>
</table>
</form>
</div>
<div id="div3">
<h3>更新学生信息</h3>
<form action="Student?method=updateStudent" method="post" οnsubmit="location.reload()">
<table align="center">
<tr>
<td align="right">学生ID:  </td>
<td><input type="text" name="studentId"></td>
</tr>
<tr>
<td align="right">学生姓名:  </td>
<td><input type="text" name="studentName"></td>
</tr>
<tr>
<td><br></td>
<td><br></td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" value="更新学生信息"/>
</td>
</tr>
</table>
</form>
</div>
</div>
<input type="button" name="Submit" οnclick="history.back();" value="返回上一页"> 
<button οnclick="location.href='index.jsp'" type="button">返回首页</button> 
<button οnclick="location.href='StudentHomework'" type="button">查看作业提交列表</button> 
<button οnclick="location.href='HomeworkTeacher'" type="button">查看作业发布列表</button> 
</div>
</body>
</html>
homework-teacher.jsp 教师可查看已发布的作业列表,发布作业和修改作业
<%@ page import="com.javaEE.code.class12.model.StudentHomework" %>
<%@ page import="java.util.List" %>
<%@ page import="com.javaEE.code.class12.jdbc.StudentHomeworkJDBC" %>
<%@ page import="com.javaEE.code.class12.model.Homework" %>
<%--
Created by IntelliJ IDEA.
User:
Date: 2020/3/8
Time: 20:20
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>student</title>
<style>
#div4, #div5 {
width: 50%;
float: left;
/*border: black;*/
text-align: center;
}
</style>
</head>
<body>
<h2 align="center">学生作业管理系统——教师端</h2>
<hr color="black">
<h3 align="center">作业列表</h3>
<div>
<table align="center" width="960" border="1" cellpadding="1" cellspacing="1">
<tr align="center" height="50" bgcolor="gray">
<td>作业ID</td>
<td>作业标题</td>
<td>作业内容</td>
<td>创建时间</td>
<td>更新时间</td>
</tr>
<%
// 通过网络请求获取结果
List<Homework> list = (List<Homework>) request.getAttribute("list");
// 通过HomeworkJDBC对象获取结果
// HomeworkJDBC shJDBC = new HomeworkJDBC();
// List<Homework> list = hJDBC.selectAll();
for (Homework h : list) {
%>
<tr align="center" bgcolor="white" height="30">
<td><%=h.getId()%>
</td>
<td><%=h.getHomeworkTittle()%>
</td>
<td><%=h.getHomeworkContent()%>
</td>
<td><%=h.getCreateTime()%>
</td>
<td><%=h.getUpdateTime()%>
</td>
</tr>
<%
}
%>
</table>
</div>
<div align="center">
<div id="div4">
<h3 align="center">添加作业</h3>
<div align="center">
<form action="HomeworkTeacher?method=addHomework" method="post" οnsubmit="location.reload()">
<table>
<tr>
<td align="right">作业标题:  </td>
<td><input type="text" name="title"></td>
</tr>
<tr>
<td valign="right">作业内容:  </td>
<td><input type="text" name="content"></td>
</tr>
<tr>
<td><br></td>
<td><br></td>
</tr>
<tr>
<td></td>
<td>
<input type="button" name="Submit" οnclick="history.back();" value="返回上一页"> 
<input type="submit" value="发布作业"/>
</td>
</tr>
</table>
</form>
</div>
</div>
<div id="div5">
<h3 align="center">修改作业</h3>
<div align="center">
<form action="HomeworkTeacher?method=updateHomework" method="post" οnsubmit="location.reload()">
<table>
<tr>
<td align="right">作业ID:  </td>
<td><input type="text" name="homeworkId"></td>
</tr>
<tr>
<td align="right">作业标题:  </td>
<td><input type="text" name="title"></td>
</tr>
<tr>
<td valign="right">作业内容:  </td>
<td><input type="text" name="content"></td>
</tr>
<tr>
<td><br></td>
<td><br></td>
</tr>
<tr>
<td></td>
<td>
<input type="button" name="Submit" οnclick="history.back();" value="返回上一页">
<input type="submit" value="修改作业"/>
</td>
</tr>
</table>
</form>
</div>
</div>
<input type="button" name="Submit" οnclick="history.back();" value="返回上一页"> 
<button οnclick="location.href='index.jsp'" type="button">返回首页</button> 
<button οnclick="location.href='StudentHomework'" type="button">查看作业提交列表</button> 
<button οnclick="location.href='Student'" type="button">查看学生列表</button> 
</div>
</body>
</html>
StudentHomework.jsp 教师查看已提交的作业
<%@ page import="com.javaEE.code.class12.model.StudentHomework" %>
<%@ page import="java.util.List" %>
<%@ page import="com.javaEE.code.class12.jdbc.StudentHomeworkJDBC" %>
<%--
Created by IntelliJ IDEA.
User: wkm
Date: 2020/2/27
Time: 09:24
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>My Homework</title>
</head>
<body>
<h2 align="center">学生作业管理系统——教师端</h2>
<hr color="black">
<h3 align="center">作业提交列表</h3>
<div align="center">
<table align="center" width="960" border="1"
bgcolor="black" cellpadding="1" cellspacing="1">
<tr align="center" bgcolor="gray" height="50">
<td>ID</td>
<td>学生学号</td>
<td>作业编号</td>
<td>作业标题</td>
<td>作业内容</td>
<td>创建时间</td>
</tr>
<%
StudentHomeworkJDBC studentHomeworkJDBC = new StudentHomeworkJDBC();
List<StudentHomework> list = studentHomeworkJDBC.selectAll();
for (StudentHomework sh : list) {
%>
<tr align="center" bgcolor="white" height="30">
<td><%=sh.getId()%>
</td>
<td><%=sh.getStudentId()%>
</td>
<td><%=sh.getHomeworkId()%>
</td>
<td><%=sh.getHomeworkTitle()%>
</td>
<td><%=sh.getHomeworkContent()%>
</td>
<td><%=sh.getCreateTime()%>
</td>
</tr>
<%
}
%>
</table>
<br>
<input type="button" name="Submit" οnclick="history.back();" value="返回上一页"> 
<button οnclick="location.href='index.jsp'" type="button">返回首页</button> 
<button οnclick="location.href='Student'" type="button">查看学生列表</button> 
<button οnclick="location.href='HomeworkTeacher'" type="button">查看作业发布列表</button> 
</div>
</body>
</html>