基于Tomcat, Servlet, JSP的简单作业管理系统
目录
前言
本文主要介绍一个超级简单的作业管理系统的实现。这是我JavaEE课程的第一次作业,因为并没有Web的基础,所以网页设计十分简陋,程序设计也存在着很多不足之处,欢迎大家讨论指正。代码地址见文章末尾。
2020年3月25日更新
目前已经改造成了Maven项目,并且使用了HikariCP数据库连接池。新版项目详情见代码仓库的2.x分支。
2020年3月26日更新
使用Spring MVC架构。新版项目详情见代码仓库的3.x分支。
2020年4月8日更新
引入Spring IoC。新版项目详情见代码仓库的4.x分支。
2020年4月16日更新
引入切面,并手动进行事务管理。详情见代码仓库的5.x分支。
2020年5月15日更新
引入MyBatis。详情见代码仓库的6.x分支。
2020年6月19日更新
经过一学期的学习,我基于Vue和SpringBoot重写了一个前后端分离的简单的作业管理系统,详情见JavaEE 笔记03:基于Vue,SpringBoot的前后端分离的简单作业管理系统
知识基础
什么是Servlet
Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
Servlet本身是一个接口,其中定义了5个方法,前3个与Servlet的生命周期相关。
void init(ServletConfig config) throws ServletException
void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException
void destory()
String getServletInfo()
ServletConfig getServletConfig()
在使用时,我们可以继承HttpServlet类覆盖doGet、doPOST方法来实现功能。可以使用@WebServlet注解,省去在web.xml
中配置映射的步骤。
// name = "HelloServlet":servlet名称,相当于web.xml中的<servlet-name>
// urlPatterns = "/hello":servlet的访问路径,相当于<url-pattern>
@WebServlet(name = "HelloServlet",urlPatterns = "/hello")
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 实现GET功能
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 实现POST功能
}
}
什么是JSP
JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。
JSP实际上是一种Java Servlet,主要用于实现Java Web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。JSP可以通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。
JSP有9个内置对象:
- request:封装客户端的请求,其中包含来自GET或POST请求的参数
- response:封装服务器对客户端的响应
- pageContext:通过该对象可以获取其他对象
- session:封装用户会话的对象
- application:封装服务器运行环境的对象
- out:输出服务器响应的输出流对象
- config:Web应用的配置对象
- page:JSP页面本身(相当于Java程序中的this)
- exception:封装页面抛出异常的对象
JSP的生命周期:
- 编译阶段:servlet容器编译servlet源文件,生成servlet类
- 初始化阶段:加载与JSP对应的servlet类,创建其实例,并调用它的初始化方法
- 执行阶段:调用与JSP对应的servlet实例的服务方法
- 销毁阶段:调用与JSP对应的servlet实例的销毁方法,然后销毁servlet实例
JSP生命周期
Servlet与JSP有什么区别
Servlet是服务器端的程序,动态生成HTML页面发送到客户端,但是这样程序里会有很多out.println(),并且Java与HTML混在一起,非常混乱,所以后来Sun公司就推出了JSP。JSP可以说是一种特殊的Sevlet,每次提供服务时,都先由JSP引擎转化为类Servlet的Java代码,然后再编译成可执行类文件执行,在执行过程中,Servlet 产生 HTML 格式的输出并将其内嵌于 HTTP Response 中上交给 Web 服务器。
Servlet与JSP的关系可以概括为以下几点:
- JSP是Servlet技术的扩展,JSP经转化后是"类Servlet"
- Servlet侧重于业务逻辑,且逻辑控制放在Java代码中,完全从表示层中的HTML里分离开来
- JSP侧重于视图,是Java和HTML组合成的扩展名为.jsp的文件
- 在MVC架构模式中,JSP适合充当视图(View)而Servlet适合充当控制器(Controller)
系统功能介绍
环境
- macOS Catalina 10.15.3
- IntelliJ IDEA Ultimate 2019.3.3
- Java SE 11.0.5 LTS
- MySQL 8.0.19
- MySQL Connector for Java 8.0.19
- Apache-Tomcat 8.5.51
相关的环境配置过程可以看我上篇文章:https://blog.csdn.net/Yiang0/article/details/104665062
系统设计
项目结构
- src
src包结构
- web
数据库设计
交互结构
功能展示
系统首页
老师
老师首页
查看所有学生
添加学生
布置作业
老师查看所有作业
老师查看某一作业提交情况
学生
学生首页
学生查看所有作业
提交作业
代码仓库
GitHub: https://github.com/Yi1275432232/Homework-Management-System