Mysql、Servlet、jsp实现简单的作业系统(极简版)
项目目标
老师:发布作业,添加学生,查看作业
学生:查看作业,提交作业
一、数据库设计
学生提交作业表
sname 学生姓名
tname 作业名称
swork 作业内容
stime 提交时间
老师布置作业表
tname 作业名称
ttime 发布时间
学生信息表
sname 学生姓名
建表语句
二、数据库连接
参考第一次作业中数据库连接部分:https://blog.csdn.net/weixin_43612202/article/details/104661611
三、Servlet部分
分插入与查询两种
以task为例
taskSuccess中有插入和查询两个sql
//查询所有
public List<task> getAllTask() throws Exception {
List<task> list = new ArrayList<>();
Connection conn = DBConn.getConnection();
String sql ="select * from task";
try {
PreparedStatement pst = conn.prepareStatement(sql);
ResultSet rs = pst.executeQuery();
while(rs.next())
{
task task = new task();
task.setTname(rs.getString("tname"));
task.setTtime(rs.getString("ttime"));
list.add(task);
}
rs.close();
pst.close();
}catch (Exception e)
{
e.printStackTrace();
}
System.out.println("list");
for(int i = 0;i < list.size();i++){
System.out.println(list.get(i));
}
return list;
}
//添加作业
public boolean addTask(task task) throws Exception {
String sql = "insert into task(tname,ttime) values (?,default)";
Connection connection = DBConn.getConnection();
try{
PreparedStatement pst = connection.prepareStatement(sql);
pst.setString(1,task.getTname());
int count = pst.executeUpdate();
pst.close();
return count>0?true:false;
}catch (Exception e){
e.printStackTrace();
}
return false;
}
taskAddServlet中为插入
public class taskAddServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String tname = req.getParameter("tname");
task task = new task();
task.setTname(new String(tname.getBytes("ISO-8859-1"),"UTF-8"));
taskSuccess taskSuccess = new taskSuccess();
try {
taskSuccess.addTask(task);
} catch (Exception e) {
e.printStackTrace();
}
req.getRequestDispatcher("taskAllServlet").forward(req,resp);//内部重定向
}
}
taskAllServlet为查询所有
public class taskAllServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
taskSuccess taskSuccess = new taskSuccess();
List<task> tlist = null;
try {
tlist = taskSuccess.getAllTask();
} catch (Exception e) {
e.printStackTrace();
}
req.setAttribute("tlist", tlist);
req.getRequestDispatcher("listTask.jsp").forward(req, resp);
}
}
四、实体
我们需要创建实体
以task为例
public class task implements Serializable {
private static final long serialVersinID = 1L;
private String tname;
private String ttime;
public static long getSerialVersinID() {
return serialVersinID;
}
public String getTname() {
return tname;
}
public void setTname(String tname) {
this.tname = tname;
}
public String getTtime() {
return ttime;
}
public void setTtime(String ttime) {
this.ttime = ttime;
}
}
五、jsp部分
本版本旨在实现基本功能,所以无页面样式。
注意:一定要在WEB_INF下加入lib并将mysql-connector-java的jar包放入
以listTask为例
Add Task | |
Add Task Name | |
Task Name | Time |
${item.tname} | ${item.ttime} |
上半部分为发布作业
下半部分为已发布的作业列表
注: <c:forEach items="${requestScope.tlist}" var=“item”</c:forEach>部分还存在无法正常显示的问题,博主正在以秃头的代价努力研究!!
最后
下一步将进行页面样式优化、功能完善与容错处理。
最后附上目前阶段项目代码链接:
https://gitee.com/believerjt/JavaEEHomeworkSys