【JaveEE学习贴1】基于Mysql、Servlet、JSP书写学生作业管理系统(含登录界面)

完整代码已上传于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、容错提示:由于前端并不知道后端的数据库情况,所以可能会传入错误数据到后端,这是后端应该进行数据分析,做好容错准备。

Servletjsp文件就是这个交流中的重头戏!

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>
  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值