JavaEE 笔记01: 基于Tomcat, Servlet, JSP的简单作业管理系统

基于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架构

Servlet架构


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()

Servlet生命周期

Servlet执行流程


在使用时,我们可以继承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的生命周期:

  1. 编译阶段:servlet容器编译servlet源文件,生成servlet类
  2. 初始化阶段:加载与JSP对应的servlet类,创建其实例,并调用它的初始化方法
  3. 执行阶段:调用与JSP对应的servlet实例的服务方法
  4. 销毁阶段:调用与JSP对应的servlet实例的销毁方法,然后销毁servlet实例
    JSP生命周期
    JSP生命周期


Servlet与JSP有什么区别

Sevlet与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
    在这里插入图片描述
web包结构

数据库设计

在这里插入图片描述

数据库结构

交互结构

在这里插入图片描述

交互设计

功能展示

系统首页

在这里插入图片描述

老师

老师首页

在这里插入图片描述

查看所有学生

在这里插入图片描述

添加学生

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

布置作业

在这里插入图片描述

在这里插入图片描述

老师查看所有作业

在这里插入图片描述

老师查看某一作业提交情况

在这里插入图片描述

学生

学生首页

在这里插入图片描述

学生查看所有作业

在这里插入图片描述

提交作业

在这里插入图片描述

在这里插入图片描述

代码仓库

GitHub: https://github.com/Yi1275432232/Homework-Management-System

猜你喜欢

转载自blog.csdn.net/Yiang0/article/details/104846402