完整代码已上传于Github中:https://github.com/Shadow1300/JavaEE
文末也将列出来。
一、首先了解一下作业要求
我们首先要对需求进行分析:
1)用户:老师、学生
2)功能:添加作业、添加学生、查询学生作业、作业提交
3)功能扩展完善:
①登录:由于存在添加学生这个功能,那我认为应该有一个登录功能,没有被授权的学生不能进入提交界面,否则添加学生的功能就失去了意义;
②查询作业要求:由于学生需要进行作业的提交,则应该有一个途径可以查看作业要求;
③查看学生:由于老师可以添加学生,那么也应该可以查看学生表以知已经添加了哪些学生了。
二、建表分析
不难分析出,此系统需要三个表:
1、学生表;
①学生id(主属性)
②学生姓名
③自增id序号(主属性)
2、作业要求表;
①自增id序号(主属性)
②作业序号(主属性)
③作业要求内容
④作业截止时间
3、提交作业情况表;
①自增id序号(主属性)
②学生i((主属性)(外键引用student表中的student_id)
③作业id(主属性)(外键引用homework表中的homework_id)
④作业标题
⑤作业内容
⑥提交时间
⑦作业截止时间(此属性为供老师参考学生是否晚交,扣分参考)
分析好需求和设计好表之后,我们先别着急着写代码,要对整个项目进行整体设计。除此之外还应该了解一下JavaEE中web是如何运作的,前后端如何传参。这部分我花了一大半的时间去了解,没有打好基础的话写起代码来简直是一头雾水。
三、系统设计与基础知识掌握
1、系统设计
此系统的设计应该由四部分组成:
①实体类:用于实体属性值的get与set
②JDBC**:专门用于与数据库信息交互
③Servlet:用于前后端的信息交互
④JSP:前端界面设计(我了解到虽然.JSP中也可以写逻辑、写数据处理,但我个人认为还是尽量前后端分离,前后端分离也是现在项目合作的主要方式,所以在这次项目中.jps文件我仅用作前端设计了)
2、基础知识掌握
首先得了解运作模式:
1、想要查询的时候:应该前端向后端数据库请求数据,后端向前端发送数据,前端接收到数据后显示到页面中。在这个场景中显示数据清晰明了的一种方式是用表格。
2、发布信息、添加信息:应该是前端将页面中所填信息主动向后端发送,后端接收到前端信息后,进行数据处理,从而对数据库增删改。
3、容错提示:由于前端并不知道后端的数据库情况,所以可能会传入错误数据到后端,这是后端应该进行数据分析,做好容错准备。
而Servlet和jsp文件就是这个交流中的重头戏!
3、什么是Servlet?
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。
其架构为:
Servlet 执行以下主要任务:
1、读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单,或者也可以是来自 applet 或自定义的 HTTP 客户端程序的表单。
2、读取客户端(浏览器)发送的隐式的 HTTP 请求数据。这包括 cookies、媒体类型和浏览器能理解的压缩格式等等。
3、处理数据并生成结果。这个过程可能需要访问数据库,执行 RMI 或 CORBA 调用,调用 Web 服务,或者直接计算得出对应的响应。
4、发送显式的数据(即文档)到客户端(浏览器)。该文档的格式可以是多种多样的,包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel 等。
5、发送隐式的 HTTP 响应到客户端(浏览器)。这包括告诉浏览器或其他客户端被返回的文档类型(例如 HTML),设置 cookies 和缓存参数,以及其他类似的任务。
4、什么是jsp?
其全称为:Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。
JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。
JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。
JSP标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。
四、开始写代码
1、首先要在数据库中建好三张表,注意约束关系
2、实体类
如Student:
package com.java.code.model;
public class Student {
private int id;
private String student_id;
private String student_name;
public String getStudent_name() {
return student_name;
}
public void setStudent_name(String student_name) {
this.student_name = student_name;
}
public String getStudent_id() {
return student_id;
}
public void setStudent_id(String student_id) {
this.student_id = student_id;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
3、JDBC:执行各个对数据库的操作
如添加学生的方法
//添加学生
public static void addStudent(Student student) throws SQLException, ClassNotFoundException{
String url="jdbc:mysql://localhost:3306/zy?useSSL=false&allowPublicKeyRetrieval=true";
String driverName="com.mysql.jdbc.Driver";
//数据库执行语句
String sqlString="insert into zy.student(student_id,student_name) values (\""+student.getStudent_id()+"\",\""+student.getStudent_name()+"\")";
//加载驱动
Class.forName(driverName);
//创造链接
Connection connection= DriverManager.getConnection(url,"root","zhangying");
//通过链接获取statement
Statement statement=connection.createStatement();
//statement做一些 增删改查
int resultSet=statement.executeUpdate(sqlString);
}
4、查询的Servlet:即调用JDBC中的查询方法,将所得值赋值给实体类,再将实体类传给前端,再跳转到展示查询结果的页面
try {
//调用查询方法
List<Student> list= StudentHomeworkJdbc.selectStudent();
//将结果寄在属性上,前端则根据属性名取得实体类的值
req.setAttribute("list",list);
//传值给界面并跳转到这个.jsp的界面中
req.getRequestDispatcher("selectStudent.jsp").forward(req,resp);
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
5、前端接收:首先接收到实体类,使用表格的方式将各值取出来放到表格中,则达到了查询目的
<body>
<%
List<Student> list=(List <Student>)request.getAttribute("list");
if(null==list||list.size()<=0){
out.println("No data");
}else {
%>
<table align="center" width="960" border="0.5" bgcolor="black" cellspacing="1">
<tr align="center" height="40" bgcolor="#b3ffc2">
<td>序号</td>
<td>学生ID</td>
<td>学生姓名</td>
</tr>
<%
for(Student student:list){
%>
<tr align="center" bgcolor="white">
<td><%=student.getId()%></td>
<td><%=student.getStudent_id()%></td>
<td><%=student.getStudent_name()%></td>
</tr>
<%
}
}
%>
</table>
</body>
6、对数据库进行增加的Servlet:首先是在前段界面填写好表单之后,将数据submit给了后端,从而进行数据库的增加。
首先是前端设计一个表单:注意action代表的是submit后数据传给何方Servlet
<body>
<form action="addhomework" id="form">
<h2>发布作业</h2>
作业ID:<input type="text" name="homework_id"><br>
作业要求:<input type="text" name="homework_requirement"><br>
作业截止日期:<input type="datetime-local" name="homework_endtime"><br>
<input type="submit" id="submit" value="提交"><input type="reset" value="重置">
</form>
</body>
7、后端接收:前端与之对应的servlet则需要进行@WebServlet操作,命名好之后,前后端才能互相找到。
并且通过以下操作接收数据
Homework homework=new Homework();
homework.setHomework_id(req.getParameter("homework_id"));
homework.setHomework_requirement(req.getParameter("homework_requirement"));
然后调用JDBC对应的操作函数,对数据进行判断是否添加成功,不成功则跳转到容错页面。
//开始传
try {
StudentHomeworkJdbc.addHomework(homework);
resp.sendRedirect("addHomeworkSuccess.jsp");
} catch (SQLException e) {
resp.sendRedirect("addHomeworkFault.jsp");
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
8.容错页面:无需太复杂
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>发布作业失败</title>
</head>
<body>
<%
out.println("该作业序号已存在,不能重复发布");
%>
</body>
</html>
9、为了方便,我单独写了一个目录界面
<table border="1">
<tr>
<td>请选择操作项</td>
</tr>
<tr>
<td><a href="<%=request.getContextPath() %>/addStudent.jsp" target="_blank">添加学生</a></td>
</tr>
<tr>
<td><a href="<%=request.getContextPath() %>/selectstudent" target="_blank">查看学生</a></td>
</tr>
<tr>
<td><a href="<%=request.getContextPath() %>/addHomework.jsp" target="_blank">发布作业</a></td>
</tr>
<tr>
<td><a href="<%=request.getContextPath() %>/selectsubmit" target="_blank">查看作业提交情况</a></td>
</tr>
<tr>
<td><a href="<%=request.getContextPath() %>/selecthomework" target="_blank">查看作业要求</a></td>
</tr>
<tr>
<td><a href="<%=request.getContextPath() %>/submitHomework.jsp" target="_blank">提交作业</a></td>
</tr>
</table>
五、部分效果图展示
(对于界面的布置还不是很熟悉,所以有点丑)
六、完整代码
完整代码已上传于Github中:https://github.com/Shadow1300/JavaEE
1、StudentHomeworkJdbc.java
package com.java.code.jdbc;
import com.java.code.model.Homework;
import com.java.code.model.Student;
import com.java.code.model.SubmitHomework;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
public class StudentHomeworkJdbc {
//看账号姓名是否对应
public static String selectStudent(Student student) throws SQLException, ClassNotFoundException {
String url="jdbc:mysql://localhost:3306/zy?useSSL=false&allowPublicKeyRetrieval=true";
String driverName="com.mysql.jdbc.Driver";
//数据库执行语句
String sqlString="select * from student"+" where student_id =\""+student.getStudent_id()+"\" and student_name=\""+student.getStudent_name()+"\"";
System.out.println("aaa:"+sqlString);
//加载驱动
Class.forName(driverName);
List<Student> list=new ArrayList<>();
//创造链接
Connection connection= DriverManager.getConnection(url,"root","zhangying");
//通过链接获取statement
Statement statement=connection.createStatement();
//statement做一些 增删改查
ResultSet resultSet=statement.executeQuery(sqlString);
//获取执行结果
if(resultSet.next()){
//进入页面
String check="success";
System.out.println(1111);
return check;
}
else {
String check="wrong";
System.out.println("2222");
return check;
}
}
//添加学生
public static void addStudent(Student student) throws SQLException, ClassNotFoundException{
String url="jdbc:mysql://localhost:3306/zy?useSSL=false&allowPublicKeyRetrieval=true";
String driverName="com.mysql.jdbc.Driver";
//数据库执行语句
String sqlString="insert into zy.student(student_id,student_name) values (\""+student.getStudent_id()+"\",\""+student.getStudent_name()+"\")";
//加载驱动
Class.forName(driverName);
//创造链接
Connection connection= DriverManager.getConnection(url,"root","zhangying");
//通过链接获取statement
Statement statement=connection.createStatement();
//statement做一些 增删改查
int resultSet=statement.executeUpdate(sqlString);
}
//发布作业
public static void addHomework(Homework homework) throws SQLException, ClassNotFoundException{
String url="jdbc:mysql://localhost:3306/zy?useSSL=false&allowPublicKeyRetrieval=true";
String driverName="com.mysql.jdbc.Driver";
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
String endtime=df.format(homework.getHomework_endtime());
//数据库执行语句
String sqlString="insert into zy.homework(homework_id,homework_requirement,homework_endtime) values (\""+homework.getHomework_id()+"\",\""+homework.getHomework_requirement()+"\",\""+endtime+"\")";
System.out.println(sqlString);
//加载驱动
Class.forName(driverName);
//创造链接
Connection connection= DriverManager.getConnection(url,"root","zhangying");
//通过链接获取statement
Statement statement=connection.createStatement();
//statement做一些 增删改查
int resultSet=statement.executeUpdate(sqlString);
}
//提交作业
public static void submitHomework(SubmitHomework submitHomework) throws SQLException, ClassNotFoundException{
String url="jdbc:mysql://localhost:3306/zy?useSSL=false&allowPublicKeyRetrieval=true";
String driverName="com.mysql.jdbc.Driver";
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
String submit_time=df.format(submitHomework.getSubmit_time());
//数据库执行语句
String sqlString="insert into zy.submit_homework(student_id,homework_id,homework_title,homework_content,submit_time,homework_endtime) values (\""+submitHomework.getStudent_id()+"\",\""+submitHomework.getHomework_id()+"\",\""+submitHomework.getHomework_title()+"\",\""+submitHomework.getHomework_content()+"\",\""+submit_time+"\",\""+StudentHomeworkJdbc.selectEndtime(submitHomework.getHomework_id())+"\")";
System.out.println(sqlString);
//加载驱动
Class.forName(driverName);
//创造链接
Connection connection= DriverManager.getConnection(url,"root","zhangying");
//通过链接获取statement
Statement statement=connection.createStatement();
//statement做一些 增删改查
int resultSet=statement.executeUpdate(sqlString);
}
//查询截止时间
public static String selectEndtime(String homework_id) throws SQLException, ClassNotFoundException{
String url="jdbc:mysql://localhost:3306/zy?useSSL=false&allowPublicKeyRetrieval=true";
String driverName="com.mysql.jdbc.Driver";
//数据库执行语句
String sqlString="select homework_endtime from zy.homework where homework_id=\""+homework_id+"\"";
//加载驱动
Class.forName(driverName);
//创造链接
Connection connection= DriverManager.getConnection(url,"root","zhangying");
//通过链接获取statement
Statement statement=connection.createStatement();
//statement做一些 增删改查
ResultSet resultSet=statement.executeQuery(sqlString);
String out="";
//获取执行结果
while(resultSet.next()){
out=resultSet.getString("homework_endtime");
}
return out;
}
//查询作业提交情况
public static List<SubmitHomework> selectSubmit() throws SQLException, ClassNotFoundException {
String url="jdbc:mysql://localhost:3306/zy?useSSL=false&allowPublicKeyRetrieval=true";
String driverName="com.mysql.jdbc.Driver";
//数据库执行语句
String sqlString="select * from submit_homework";
//加载驱动
Class.forName(driverName);
List<SubmitHomework> list=new ArrayList<>();
//创造链接
Connection connection= DriverManager.getConnection(url,"root","zhangying");
//通过链接获取statement
Statement statement=connection.createStatement();
//statement做一些 增删改查
ResultSet resultSet=statement.executeQuery(sqlString);
//获取执行结果
while(resultSet.next()){
SubmitHomework submitHomework=new SubmitHomework();
submitHomework.setId(resultSet.getInt("id"));
submitHomework.setStudent_id(resultSet.getString("student_id"));
submitHomework.setHomework_id(resultSet.getString("homework_id"));
submitHomework.setHomework_title(resultSet.getString("homework_title"));
submitHomework.setHomework_content(resultSet.getString("homework_content"));
submitHomework.setSubmit_time(resultSet.getTimestamp("submit_time"));
submitHomework.setHomework_endtime(resultSet.getTimestamp("homework_endtime"));
list.add(submitHomework);
}
return list;
}
//查看学生
public static List<Student> selectStudent() throws SQLException, ClassNotFoundException {
String url="jdbc:mysql://localhost:3306/zy?useSSL=false&allowPublicKeyRetrieval=true";
String driverName="com.mysql.jdbc.Driver";
//数据库执行语句
String sqlString="select * from student";
//加载驱动
Class.forName(driverName);
List<Student> list=new ArrayList<>();
//创造链接
Connection connection= DriverManager.getConnection(url,"root","zhangying");
//通过链接获取statement
Statement statement=connection.createStatement();
//statement做一些 增删改查
ResultSet resultSet=statement.executeQuery(sqlString);
//获取执行结果
while(resultSet.next()){
Student student=new Student();
student.setId(resultSet.getInt("id"));
student.setStudent_id(resultSet.getString("student_id"));
student.setStudent_name(resultSet.getString("student_name"));
list.add(student);
}
return list;
}
//查看作业要求
public static List<Homework> selectHomework() throws SQLException, ClassNotFoundException {
String url="jdbc:mysql://localhost:3306/zy?useSSL=false&allowPublicKeyRetrieval=true";
String driverName="com.mysql.jdbc.Driver";
//数据库执行语句
String sqlString="select * from Homework";
//加载驱动
Class.forName(driverName);
List<Homework> list=new ArrayList<>();
//创造链接
Connection connection= DriverManager.getConnection(url,"root","zhangying");
//通过链接获取statement
Statement statement=connection.createStatement();
//statement做一些 增删改查
ResultSet resultSet=statement.executeQuery(sqlString);
//获取执行结果
while(resultSet.next()){
Homework homework=new Homework();
homework.setId(resultSet.getInt("id"));
homework.setHomework_id(resultSet.getString("homework_id"));
homework.setHomework_requirement(resultSet.getString("homework_requirement"));
homework.setHomework_endtime(resultSet.getTimestamp("homework_endtime"));
list.add(homework);
}
return list;
}
}
2、Homework.java 实体类
package com.java.code.model;
import java.util.Date;
public class Homework {
private int id;
private String homework_id;
private String homework_requirement;
private Date homework_endtime;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getHomework_id() {
return homework_id;
}
public void setHomework_id(String homework_id) {
this.homework_id = homework_id;
}
public String getHomework_requirement() {
return homework_requirement;
}
public void setHomework_requirement(String homework_requirement) {
this.homework_requirement = homework_requirement;
}
public Date getHomework_endtime() {
return homework_endtime;
}
public void setHomework_endtime(Date homework_endtime) {
this.homework_endtime = homework_endtime;
}
}
3、Student.java 实体类
package com.java.code.model;
public class Student {
private int id;
private String student_id;
private String student_name;
public String getStudent_name() {
return student_name;
}
public void setStudent_name(String student_name) {
this.student_name = student_name;
}
public String getStudent_id() {
return student_id;
}
public void setStudent_id(String student_id) {
this.student_id = student_id;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
4、SubmitHomework.java 实体类
package com.java.code.model;
import java.util.Date;
public class SubmitHomework {
private int id;
private String student_id;
private String homework_id;
private String homework_title;
private String homework_content;
private Date submit_time;
private Date homework_endtime;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getStudent_id() {
return student_id;
}
public void setStudent_id(String student_id) {
this.student_id = student_id;
}
public String getHomework_id() {
return homework_id;
}
public void setHomework_id(String homework_id) {
this.homework_id = homework_id;
}
public String getHomework_title() {
return homework_title;
}
public void setHomework_title(String homework_title) {
this.homework_title = homework_title;
}
public String getHomework_content() {
return homework_content;
}
public void setHomework_content(String homework_content) {
this.homework_content = homework_content;
}
public Date getSubmit_time() {
return submit_time;
}
public void setSubmit_time(Date submit_time) {
this.submit_time = submit_time;
}
public Date getHomework_endtime() {
return homework_endtime;
}
public void setHomework_endtime(Date homework_endtime) {
this.homework_endtime = homework_endtime;
}
}
5、AddHomeworkServlet.java
package com.java.code.servlet;
import com.java.code.jdbc.StudentHomeworkJdbc;
import com.java.code.model.Homework;
import com.java.code.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.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
@WebServlet("/addhomework")
public class AddHomeworkServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");//设置统一字符编码
Homework homework=new Homework();
homework.setHomework_id(req.getParameter("homework_id"));
homework.setHomework_requirement(req.getParameter("homework_requirement"));
//不能为空
if(req.getParameter("homework_id").equals("")||req.getParameter("homework_requirement").equals("")||req.getParameter("homework_endtime").equals("")){
resp.sendRedirect("check.jsp");
}
else {
//将String转为date形式
String nowtime=req.getParameter("homework_endtime")+":00";
nowtime=nowtime.substring(0,10)+" "+nowtime.substring(11);
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d2 = null;
try {
d2 = sdf2.parse(nowtime);
} catch (ParseException e) {
e.printStackTrace();
}
homework.setHomework_endtime(d2);
//开始传
try {
StudentHomeworkJdbc.addHomework(homework);
resp.sendRedirect("addHomeworkSuccess.jsp");
} catch (SQLException e) {
resp.sendRedirect("addHomeworkFault.jsp");
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
}
6、AddStudentServlet.java
package com.java.code.servlet;
import com.java.code.jdbc.StudentHomeworkJdbc;
import com.java.code.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.sql.SQLException;
import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;
@WebServlet("/addStudentServlet")
public class AddStudentServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");//设置统一字符编码
Student student=new Student();
student.setStudent_id(req.getParameter("student_id"));
student.setStudent_name(req.getParameter("student_name"));
//不能为空
if(req.getParameter("student_id").equals("")||req.getParameter("student_name").equals("")){
resp.sendRedirect("check.jsp");
}
else {
try {
StudentHomeworkJdbc.addStudent(student);
resp.sendRedirect("AddStudentSuccess.jsp");
} catch (SQLException e) {
resp.sendRedirect("AddStudentFault.jsp");
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
}
7、LoadServlet.java
package com.java.code.servlet;
import com.java.code.jdbc.StudentHomeworkJdbc;
import com.java.code.model.Student;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;
public class LoadServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");//设置统一字符编码
Student student=new Student();
student.setStudent_id(req.getParameter("student_id"));
student.setStudent_name(req.getParameter("student_name"));
//不能为空
if(req.getParameter("student_id").equals("")||req.getParameter("student_name").equals("")){
resp.sendRedirect("check.jsp");
}
else{
try {
String answer= StudentHomeworkJdbc.selectStudent(student);
if(answer.equals("success")){
resp.sendRedirect("Main.jsp");
}
else {
resp.sendRedirect("checkwrong.jsp");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
8、SelectHomework.java
package com.java.code.servlet;
import com.java.code.jdbc.StudentHomeworkJdbc;
import com.java.code.model.Homework;
import com.java.code.model.Student;
import com.java.code.model.SubmitHomework;
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.sql.SQLException;
import java.util.List;
@WebServlet("/selecthomework")
public class SelectHomework extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
try {
List<Homework> list= StudentHomeworkJdbc.selectHomework();
req.setAttribute("list",list);
req.getRequestDispatcher("selectHomework.jsp").forward(req,resp);
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
9、SelectStudent.java
package com.java.code.servlet;
import com.java.code.jdbc.StudentHomeworkJdbc;
import com.java.code.model.Homework;
import com.java.code.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.sql.SQLException;
import java.util.List;
@WebServlet("/selectstudent")
public class SelectStudent extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
try {
List<Student> list= StudentHomeworkJdbc.selectStudent();
req.setAttribute("list",list);
req.getRequestDispatcher("selectStudent.jsp").forward(req,resp);
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
10、SelectSubmitHomeworkServlet.java
package com.java.code.servlet;
import com.java.code.jdbc.StudentHomeworkJdbc;
import com.java.code.model.SubmitHomework;
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.sql.SQLException;
import java.util.List;
@WebServlet("/selectsubmit")
public class SelectSubmitHomeworkServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
try {
List<SubmitHomework> list= StudentHomeworkJdbc.selectSubmit();
req.setAttribute("list",list);
req.getRequestDispatcher("selectSubmit.jsp").forward(req,resp);
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
11、SubmitHomeworkServlet.java
package com.java.code.servlet;
import com.java.code.jdbc.StudentHomeworkJdbc;
import com.java.code.model.SubmitHomework;
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.sql.SQLException;
import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;
@WebServlet("/submit")
public class SubmitHomeworkServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");//设置统一字符编码
SubmitHomework submitHomework=new SubmitHomework();
//获取当前时间
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
String nowtime=df.format(new Date());
submitHomework.setStudent_id(req.getParameter("student_id"));
submitHomework.setHomework_id(req.getParameter("homework_id"));
submitHomework.setHomework_title(req.getParameter("homework_title"));
submitHomework.setHomework_content(req.getParameter("homework_content"));
//给定模式(这里给定的模式须与给定日期字符串格式匹配),将String转为Date
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d2 = null;
try {
d2 = sdf2.parse(nowtime);
} catch (ParseException e) {
e.printStackTrace();
}
//赋值时间
submitHomework.setSubmit_time(d2);
//不能为空
if(req.getParameter("student_id").equals("")||req.getParameter("homework_id").equals("")){
resp.sendRedirect("check.jsp");
}
else {
try {
StudentHomeworkJdbc.submitHomework(submitHomework);
resp.sendRedirect("submitHomeworkSuccess.jsp");
} catch (SQLException e) {
resp.sendRedirect("submitHomeworkFault.jsp");
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
}
12、web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>load</servlet-name>
<servlet-class>com.java.code.servlet.LoadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>load</servlet-name>
<url-pattern>/load</url-pattern>
</servlet-mapping>
</web-app>
13、addHomework.jsp
<%--
Created by IntelliJ IDEA.
User: 张影
Date: 2020/3/11
Time: 14:23
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>发布新作业</title>
</head>
<body>
<form action="addhomework" id="form">
<h2>发布作业</h2>
作业ID:<input type="text" name="homework_id"><br>
作业要求:<input type="text" name="homework_requirement"><br>
作业截止日期:<input type="datetime-local" name="homework_endtime"><br>
<input type="submit" id="submit" value="提交" onclick="a()"><input type="reset" value="重置">
</form>
</body>
</html>
14、addHomeworkFault.jsp
<%--
Created by IntelliJ IDEA.
User: 张影
Date: 2020/3/11
Time: 19:49
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>发布作业失败</title>
</head>
<body>
<%
out.println("该作业序号已存在,不能重复发布");
%>
</body>
</html>
15、addHomeworkSuccess.jsp
<%--
Created by IntelliJ IDEA.
User: 张影
Date: 2020/3/11
Time: 19:49
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>发布成功</title>
</head>
<body>
<%
out.println("作业发布成功!");
%>
</body>
</html>
16、addStudent.jsp
<%--
Created by IntelliJ IDEA.
User: 张影
Date: 2020/3/11
Time: 13:30
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>添加学生</title>
</head>
<body>
<form action="addStudentServlet" id="form" method="post">
<h2>添加学生</h2>
学生ID:<input type="text" name="student_id"><br>
学生姓名:<input type="text" name="student_name"><br>
<input type="submit" id="submit" value="提交" onclick="a()"><input type="reset" value="重置">
</form>
</body>
</html>
17、AddStudentFault.jsp
<%--
Created by IntelliJ IDEA.
User: 张影
Date: 2020/3/11
Time: 18:07
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>学生添加失败</title>
</head>
<body>
<%
out.println("该学号已存在,不能重复添加");
%>
</body>
</html>
18、AddStudentSuccess.jsp
<%--
Created by IntelliJ IDEA.
User: 张影
Date: 2020/3/11
Time: 17:57
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>添加学生成功</title>
</head>
<body>
<%
out.println("添加学生成功!");
%>
</body>
</html>
19、check.jsp
<%--
Created by IntelliJ IDEA.
User: 张影
Date: 2020/3/10
Time: 22:39
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>提醒</title>
</head>
<body>
<%
out.println("请填写完整,不能为空");
%>
</body>
</html>
20、checksuccess.jsp
<%--
Created by IntelliJ IDEA.
User: 张影
Date: 2020/3/11
Time: 11:33
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录成功</title>
</head>
<body>
<%
out.println("登录成功");
%>
</body>
</html>
21、checkwrong.jsp
<%--
Created by IntelliJ IDEA.
User: 张影
Date: 2020/3/11
Time: 11:33
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录失败</title>
</head>
<body>
<%
out.println("学号与姓名不对应或该学生不存在,登录失败");
%>
</body>
</html>
22、index.jsp
<%--
Created by IntelliJ IDEA.
User: 张影
Date: 2020/3/10
Time: 21:25
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>学生作业管理系统登录</title>
<STYLE type="text/css">
body{
background-repeat: repeat;
}
body{
background-image: url(images/timg.jpg);
}
#form{
width:250px;
height:160px;
position:relative;
left:50%;
top:50%;
margin-left:-150px;
margin-top:-80px;
}
</STYLE>
</head>
<body>
<form action="load" id="form" margin="100px" action="check.jsp" >
学生学号: <input type="text" name="student_id" value="" align="center"><br>
学生姓名: <input type="text" name="student_name" align="center"><br>
<br>
<input type="submit" id="submit" value="登录" onclick="a()" align="center"> <input type="reset" value="重置">
<p align="center"></p>
</form>
</body>
</html>
23、Main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<table border="1">
<tr>
<td>请选择操作项</td>
</tr>
<tr>
<td><a href="<%=request.getContextPath() %>/addStudent.jsp" target="_blank">添加学生</a></td>
</tr>
<tr>
<td><a href="<%=request.getContextPath() %>/selectstudent" target="_blank">查看学生</a></td>
</tr>
<tr>
<td><a href="<%=request.getContextPath() %>/addHomework.jsp" target="_blank">发布作业</a></td>
</tr>
<tr>
<td><a href="<%=request.getContextPath() %>/selectsubmit" target="_blank">查看作业提交情况</a></td>
</tr>
<tr>
<td><a href="<%=request.getContextPath() %>/selecthomework" target="_blank">查看作业要求</a></td>
</tr>
<tr>
<td><a href="<%=request.getContextPath() %>/submitHomework.jsp" target="_blank">提交作业</a></td>
</tr>
</table>
</body>
</html>
24、selectHomework.jsp
<%@ page import="com.java.code.model.Homework" %>
<%@ page import="java.util.List" %><%--
Created by IntelliJ IDEA.
User: 张影
Date: 2020/3/11
Time: 17:48
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>查询作业发布情况</title>
</head>
<body>
<%
List<Homework> list=(List <Homework>)request.getAttribute("list");
if(null==list||list.size()<=0){
out.println("No data");
}else {
%>
<table align="center" width="960" border="0.5" bgcolor="black" cellspacing="1">
<tr align="center" height="40" bgcolor="#b3ffc2">
<td>序号</td>
<td>作业ID</td>
<td>作业要求</td>
<td>作业截止时间</td>
</tr>
<%
for(Homework homework:list){
%>
<tr align="center" bgcolor="white">
<td><%=homework.getId()%></td>
<td><%=homework.getHomework_id()%></td>
<td><%=homework.getHomework_requirement()%></td>
<td><%=homework.getHomework_endtime()%></td>
</tr>
<%
}
}
%>
</table>
</body>
</html>
25、selectStudent.jsp
<%@ page import="com.java.code.model.Student" %>
<%@ page import="java.util.List" %><%--
Created by IntelliJ IDEA.
User: 张影
Date: 2020/3/11
Time: 17:44
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>查看学生</title>
</head>
<body>
<%
List<Student> list=(List <Student>)request.getAttribute("list");
if(null==list||list.size()<=0){
out.println("No data");
}else {
%>
<table align="center" width="960" border="0.5" bgcolor="black" cellspacing="1">
<tr align="center" height="40" bgcolor="#b3ffc2">
<td>序号</td>
<td>学生ID</td>
<td>学生姓名</td>
</tr>
<%
for(Student student:list){
%>
<tr align="center" bgcolor="white">
<td><%=student.getId()%></td>
<td><%=student.getStudent_id()%></td>
<td><%=student.getStudent_name()%></td>
</tr>
<%
}
}
%>
</table>
</body>
</html>
26、selectSubmit.jsp
<%@ page import="com.java.code.model.SubmitHomework" %>
<%@ page import="java.util.List" %><%--
Created by IntelliJ IDEA.
User: 张影
Date: 2020/3/11
Time: 16:05
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>查看作业提交情况</title>
</head>
<body>
<%
List<SubmitHomework> list=(List <SubmitHomework>)request.getAttribute("list");
if(null==list||list.size()<=0){
out.println("No data");
}else {
%>
<table align="center" width="960" border="0.5" bgcolor="black" cellspacing="1">
<tr align="center" height="40" bgcolor="#b3ffc2">
<td>序号</td>
<td>学生学号</td>
<td>作业编号</td>
<td>作业标题</td>
<td>作业内容</td>
<td>提交时间</td>
<td>截止时间</td>
</tr>
<%
for(SubmitHomework submitHomework:list){
%>
<tr align="center" bgcolor="white">
<td><%=submitHomework.getId()%></td>
<td><%=submitHomework.getStudent_id()%></td>
<td><%=submitHomework.getHomework_id()%></td>
<td><%=submitHomework.getHomework_title()%></td>
<td><%=submitHomework.getHomework_content()%></td>
<td><%=submitHomework.getSubmit_time()%></td>
<td><%=submitHomework.getHomework_endtime()%></td>
</tr>
<%
}
}
%>
</table>
</body>
</html>
27、submitHomework.jsp
<%--
Created by IntelliJ IDEA.
User: 张影
Date: 2020/3/11
Time: 14:50
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>作业提交</title>
</head>
<body>
<form action="submit" id="form" method="post">
<h2>提交作业</h2>
学生ID:<input type="text" name="student_id" value="" id="123"><br>
作业ID:<input type="text" name="homework_id"><br>
作业标题:<input type="text" name="homework_title"><br>
作业内容:<input type="text" name="homework_content"><br>
<input type="submit" id="submit" value="提交" onclick="a()"><input type="reset" value="重置">
</form>
</body>
</html>
28、submitHomeworkFault.jsp
<%--
Created by IntelliJ IDEA.
User: 张影
Date: 2020/3/11
Time: 20:11
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>作业提交失败</title>
</head>
<body>
<%
out.println("作业提交失败,学号不存在或作业号不存在");
%>
</body>
</html>
29、submitHomeworkSuccess.jsp
<%--
Created by IntelliJ IDEA.
User: 张影
Date: 2020/3/11
Time: 20:18
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>作业提交成功</title>
</head>
<body>
<%
out.print("作业提交成功!");
%>
</body>
</html>