一、数据库设计
这里设计三张数据表分别来存储学生信息,作业信息,以及学生提交作业的新信息。



二、代码展示
controller,servlet方法
package com.controller;
import com.dao.AssignmentInfoDao;
import com.model.AssignmentInfo;
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.Date;
@WebServlet(name = "AddAssignmentServlet")
public class AddAssignmentServlet extends HttpServlet {
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
AssignmentInfo ass = new AssignmentInfo();
ass.setId(Long.parseLong(req.getParameter("id")));
ass.setQuestion(req.getParameter("question"));
Date date = new Date();
ass.setReleaseTime(date);
boolean res = AssignmentInfoDao.addAssignmentInfo(ass);
req.setAttribute("isOK",res);
req.setAttribute("type","addAssignment");
req.getRequestDispatcher("result.jsp").forward(req,resp);
}
}
package com.controller;
import com.dao.StudentInfoDao;
import com.model.StudentInfo;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class AddStudentServlet extends javax.servlet.http.HttpServlet {
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
StudentInfo stu = new StudentInfo();
stu.setSno(Long.parseLong(req.getParameter("sno")));
stu.setSname(req.getParameter("sname"));
boolean res = StudentInfoDao.addStudentInfo(stu);
req.setAttribute("isOK",res);
req.setAttribute("type","addStudent");
req.getRequestDispatcher("result.jsp").forward(req,resp);
}
}
package com.controller;
import com.dao.SubmissionInfoDao;
import com.model.SubmissionInfo;
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.Date;
@WebServlet(name = "SubmisssionServlet")
public class SubmisssionServlet extends HttpServlet {
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
SubmissionInfo sub = new SubmissionInfo();
sub.setSno(Long.parseLong(req.getParameter("sno")));
sub.setId((Long.parseLong(req.getParameter("id"))));
sub.setAnswer(req.getParameter("answer"));
Date date = new Date();
sub.setSubTime(date);
boolean res = SubmissionInfoDao.subAssignment(sub);
req.setAttribute("isOK",res);
req.setAttribute("type","Submission");
req.getRequestDispatcher("result.jsp").forward(req,resp);
}
}
dao层,数据连接方法
package com.dao;
import com.model.AssignmentInfo;
import com.util.JDBCAMS;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class AssignmentInfoDao {
public static boolean addAssignmentInfo(AssignmentInfo aInfo){
int row = 0;
String sql = "insert into assignment (id,question,releaseTime," +
"deadline) values (?,?,?,?)";
try(Connection conn = JDBCAMS.getConnection();){
try(PreparedStatement pst = conn.prepareStatement(sql)){
pst.setLong(1,aInfo.getId());
pst.setString(2,aInfo.getQuestion());
pst.setTimestamp(3,new Timestamp(aInfo.getReleaseTime().getTime()));
row = pst.executeUpdate();
}
} catch (SQLException e) {
e.printStackTrace();
}
return row>0;
}
public List<AssignmentInfo> findAll() {
String sql = "SELECT * FROM recond";
List<AssignmentInfo> list = new ArrayList<>();
try(Connection conn = JDBCAMS.getConnection()){
try(Statement st = conn.createStatement()){
try(ResultSet rSet = st.executeQuery(sql)){
while(rSet.next()){
AssignmentInfo aInfo = new AssignmentInfo();
aInfo.setId(rSet.getLong("id"));
aInfo.setQuestion(rSet.getString("question"));
aInfo.setReleaseTime(rSet.getTimestamp("releaseTime"));
list.add(aInfo);
}
}
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
}
package com.dao;
import com.model.StudentInfo;
import com.util.JDBCAMS;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class StudentInfoDao {
public static boolean addStudentInfo(StudentInfo sInfo){
int row = 0;
String sql = "insert into student (sno,sname) values (?,?)";
try(Connection conn = JDBCAMS.getConnection()){
try(PreparedStatement pst = conn.prepareStatement(sql)){
pst.setLong(1,sInfo.getSno());
pst.setString(2,sInfo.getSname());
row = pst.executeUpdate();
}
}catch(SQLException e){
e.printStackTrace();
}
return row>0;
}
}
package com.dao;
import com.model.SubmissionInfo;
import com.util.JDBCAMS;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Timestamp;
public class SubmissionInfoDao {
public static boolean subAssignment(SubmissionInfo sInfo){
int row = 0;
String sql = "insert into recond (sno,id,answer,subTime) " +
"values (?.?.?.?)";
try(Connection conn = JDBCAMS.getConnection()){
try(PreparedStatement pst = conn.prepareStatement(sql)){
pst.setLong(1,sInfo.getSno());
pst.setLong(2,sInfo.getId());
pst.setString(3,sInfo.getAnswer());
pst.setTimestamp(4,new Timestamp(sInfo.getSubTime().getTime()));
row = pst.executeUpdate();
}
} catch (SQLException e) {
e.printStackTrace();
}
return row>0;
}
}
model层位各种get(),set()方法再次不再多余赘述,
util层,数据库加载方法
package com.util;
import java.sql.*;
public class JDBCAMS {
static String driver = "com.mysql.cj.jdbc.Driver";
static String url = "jdbc:mysql://localhost:3306/assignmentms?useSSL=false&serverTIMEzone=UTC";
static String user = "yjx";
static String pwd = "yjx123";
static {
//加载数据库驱动
try{
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection(){
Connection conn = null;
//获取数据库连接
try {
conn = DriverManager.getConnection(url,user,pwd);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void release(Connection conn, Statement stmt,ResultSet rs){
if(conn != null){
try{
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(stmt != null){
try{
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(rs != null){
try{
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
三、成果展示
操作选择界面
添加学生

发布作业

查看作业提交情况

本文介绍了一个使用MySQL数据库,结合Servlet和JSP技术实现的简单作业管理系统。内容包括数据库设计,涉及学生、作业和提交信息的三张表;代码结构包括Controller、DAO层、Model层和Util层的详细说明;最后展示了系统的操作界面,如添加学生、发布作业和查看作业提交情况的功能。

432

被折叠的 条评论
为什么被折叠?



