Java EE——基于Mysql、Servlet、JSP的作业管理系统(2)功能实现
一,再阅读一遍作业要求
1、开发基于Mysql、Servlet、JSP的作业管理系统;
2、老师:添加作业,添加学生。查询学生作业;
3、学生:根据老师添加的作业,进行作业提交;
4、作业提交以Blog形式,设计、源码简单介绍;
5、源码提供git地址:github或者gitee。
备注:
1、钉钉作业提交时带上学号
2、不要求CSS样式,功能优先,不涉及权限
3、有问题及时反馈
二,我的初步想法
1)交互方式,页面的设计
因为分两种不同的角色,且暂时不涉及权限,所以我们在初始页面设计两个按钮——学生/老师。
这两个按钮对应着使用者的不同身份。
A.进入老师界面后,可以行使老师的功能
1.查看作业 页面(显示数据库中所有的作业信息)
2.添加作业页面 简单的html
读取用户输入,再通过servlet接收信息,并利用JDBC来添加新的数值
3.查看学生 页面
4.添加学生 页面 简单的html
读取用户输入,再通过servlet接收信息,并利用JDBC来添加新的数值
点击提交后自动进入学生目录,产看添加情况。
5.查看作业完成情况
这时还没弄出作业编号和作业标题的一致性,和学生学号必须在学生列表里
B.进入学生界面,可以选择学生的功能
1.查看作业
和老师能查看到的页面一样
2.提交作业
因为有要求说根据老师留的作业来提交作业,所以有一个下拉条,从数据库读取作业列表,让学生根据老师留的作业来提交作业。
项目中的类
本次用到JDBC接口的函数,都写在了studentHomeworkJDBC中
主要函数有
1. public static List<StudentHomework>
selectAll()
找到student数据库 s_student_homework 表中所有数据(用于查看作业完成情况)
并返回一个StudentHomework类的列表list<StudentHomework>
2.public static List<Student>
selectAllStudent()
找到student数据库 s_student 表中所有数据(用于查看学生目录)
并返回一个Student类的列表list<Student>
3.public static List<Homework>
selectAllHomework()
找到student数据库 s_homework 表中所有数据(用于查看作业目录)
并返回一个Homework类的列表list<Homework>
4.public static void addHomework(Homework homework)
根据传入的Homework对象,向student数据库 s_homework 表中添加一个元素(老师:添加作业)
5.public static void addStudent(Student student)
根据传入的Student对象,向student数据库 s_student 表中添加一个元素(老师:添加学生)
6.public static void addStudentHomework(StudentHomework sh)
根据传入的StudentHomework对象,向student数据库 s_student_homework 表中添加一个元素(学生:提交作业)
@WebServlet("/addStudentHomeworkServlet")
public class addStudentHomeworkServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
if(req == null){
System.out.println("none data"); //判断是否为空
}else{
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
String id = req.getParameter("sh_id");
String student_id = req.getParameter("student_id"); //根据传入的req来获取学生id
String homework_id = req.getParameter("homework_id"); //根据传入的req来获取作业id
String homework_title =req.getParameter("homework_title"); //获取作业标题
String homework_content =req.getParameter("homework_content"); //获取学生写的作业内容
//转变数据类型,方便存入对象中
long id_long = Long.valueOf(id);
long homework_id_long = Long.valueOf(homework_id);
long student_id_long = Long.valueOf(student_id);
//实例化一个对象,等一下将对象存入数据库中
StudentHomework sh = new StudentHomework(id_long,student_id_long,homework_id_long,homework_title,homework_content);
//将对象存入数据库
studentHomeworkJDBC.addStudentHomework(sh);
//跳转到学生操作页面
req.getRequestDispatcher("studentOperation.jsp").forward(req,resp);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
这些Servlet用来相应用户的操作。
他们都extends HTTPServlet。
说明
1.两个OperationServlet 纯属是选择的时候用的,但后来发现直接通过<hrep>
属性传到.jsp就可以,不用非得弄一个servlet。 一开始依葫芦画瓢闹的笑话
2.和test 相关的,都是对于这次作业无用的。
3.AddStudentHomeworkPageServlet。作用是,在选择要提交作业的时候,通过它来传给.jsp一个包含所有作业的list,好让学生选择作业。
4.show开头的,作用都是传给.jsp一个list让他的数据都显示出来
5.add开头的,都是用户在.jsp输入完数据之后,传入这个servlet,然后在其中,调用JDBC,给数据库加一条数据。
这是所有.jsp文件的汇总,他们主要是显示。
我想说一下下拉条
提交的作业标题
<select name="homework_title" >
<%
List<Homework> list = (List<Homework>) request.getAttribute("list"); //得到传入的list表
if( list == null || list.size() <= 0 ){ //判断是否为空
out.println("none Data");
}else{
for(Homework homework : list){ //不为空则遍历所有的homework对象
%> //读出Title,作为下拉框的值
<option value="volvo"><%=homework.getHomeworkTitle()%></option>
<%
}
}
%>
</select>
这就是.jsp文件,读取数据库元素,形成下拉条的操作。依照了老师上课讲的用.jsp列出所有元素的例子。