基于Servlet框架的管理系统

基于 Servlet 的管理系统 介绍 基于 Servlet 框架的管理系统 简洁版 ; 实现 登录 , 注册

本文包含相关资料包-----> 点击直达获取<-------

基于 Servlet 的管理系统

介绍

基于 Servlet 框架的管理系统 简洁版

实现 登录 注册

可继续完善增加前端、校验、其他功能等;

可作为 Servlet 项目 开发练习基础模型;

课程设计 毕业设计 开发基础;

任何复杂的框架都是简单的知识组合并延伸的,学好基础知识才是最重要的;

此项目简单,便于理解基本原理,为复杂的 Servlet、SSH、SSM 等复杂项目的开发打下基础。

环境准备

开发平台:Idea 2019

数据库:MySQL 5.0.22

服务器:Tomcat 9.0.37

注意:需要安装 IDEA 开发平台、MySQL 数据库和 Tomcat 服务器,版本不一定完全一致,做好版本适应性配置即可。

项目结构

1.数据库及 Java 代码文件

2.Jsp 等前端代码

3.Tomcat 服务器配置与运行

4.MySQL 数据库

基本原理

1. 相关概念

Servlet 是一门用于开发动态 Web 网页的技术,用于交互式地浏览和修改数据,生成动态 Web 内容。如今 Java Web 开发中已经很少单纯用到 Servlet 去开发 Web 应用,更多是整合框架开发。实际上,大多框架都是基于基础工具去封装起来的,像 Struts 就是对 servlet 与 filter 的封装,Hibernate 对 JDBC 的封装等等。所以,无论学习什么框架,首先深入理解基础知识,从而对框架中出现的问题有一个理性的认识与解决。

2. 基本原理

2.1 工作流程

  1. Web Client 向 Servlet 容器(Tomcat)发出 Http 请求
  2. Servlet 容器接收 Web Client 的请求
  3. Servlet 容器创建一个 HttpRequest 对象,将 Web Client 请求的信息封装到这个对象中。
  4. Servlet 容器创建一个 HttpResponse 对象
  5. Servlet 容器调用 HttpServlet 对象的 service 方法,把 HttpRequest 对象与 HttpResponse 对象作为参数传给 HttpServlet 对象。
  6. HttpServlet 调用 HttpRequest 对象的有关方法,获取 Http 请求信息。
  7. HttpServlet 调用 HttpResponse 对象的有关方法,生成响应数据。
  8. Servlet 容器把 HttpServlet 的响应结果传给 Web Client。

2.2 处理请求流程

  1. 用户点击一个链接,指向了一个 servlet 而不是一个静态页面。
  2. 容器“看出”这个请求是一个 Servlet,所以它创建了两个对象 HttpServletRequest 和 HttpServletResponse。
  3. 容器根据请求中的 URL 找到正确的 Servlet,为这个请求创建或分配一个线程,并把请求和响应对象传递给这个 Servlet 线程。
  4. 容器调用 Servlet 的 service()方法。根据请求的不同类型,service()方法会调用 doGet()或 doPost()方法。这里假设调用 doGet()方法。
  5. doGet()方法生成动态页面,并把这个页面“塞到”响应对象里,需要注意的是,容器还有响应对象的一个引用!
  6. 线程结束,容器把响应对象转换为一个 HTTP 响应,并把它发回给客户,然后删除请求和响应对象。
2.3 工作原理

``` 1. 首先简单解释一下Servlet接收和响应客户请求的过程,首先客户发送一个请求,Servlet是调用service()方法对请求进行响应的,通过源代码可见,service()方法中对请求的方式进行了匹配,选择调用doGet,doPost等这些方法,然后再进入对应的方法中调用逻辑层的方法,实现对客户的响应。在Servlet接口和GenericServlet中是没有doGet()、doPost()等等这些方法的,HttpServlet中定义了这些方法,但是都是返回error信息,所以,我们每次定义一个Servlet的时候,都必须实现doGet或doPost等这些方法。

  1. 每一个自定义的Servlet都必须实现Servlet的接口,Servlet接口中定义了五个方法,其中比较重要的三个方法涉及到Servlet的生命周期,分别是上文提到的init(),service(),destroy()方法。GenericServlet是一个通用的,不特定于任何协议的Servlet,它实现了Servlet接口。而HttpServlet继承于GenericServlet,因此HttpServlet也实现了Servlet接口。所以我们定义Servlet的时候只需要继承HttpServlet即可。

  2. Servlet接口和GenericServlet是不特定于任何协议的,而HttpServlet是特定于HTTP协议的类,所以HttpServlet中实现了service()方法,并将请求ServletRequest、ServletResponse 强转为HttpRequest 和 HttpResponse。 ```

2.4Servlet 生命周期

servlet 程序是由 Web 服务器调用,Web 服务器实现了对 servlet 生命周期的管理。当你的应用加载并使用一个 Servlet 时,从初始化到销毁这个 Servlet 期间会发生一系列的事件,这些事件叫做 Servlet 的生命周期事件(或方法)。

Servlet 生命周期可以归纳为:

Servlet 加载---> 实例化---> 服务---> 销毁

Servlet 生命周期定义了一个 Servlet 如何被加载、初始化,以及它怎样接收请求、响应请求,提供服务。

``` 1. 创建Servlet实例

web容器负责加载Servlet,当web容器启动时或者是在第一次使用这个Servlet时,容器会负责创建Servlet实例,但是用户必须通过部署描述符(web.xml)指定Servlet的位置,也就是Servlet所在的类名称,成功加载后,web容器会通过反射的方式对Servlet进行实例化。

  1. WEB容器调用Servlet的init()方法,对Servlet进行初始化

在Servlet实例化之后,Servlet容器会调用init()方法,来初始化该对象,主要是为了让Servlet对象在处理客户请求前可以完成一些初始化的工作,例如,建立数据库的连接,获取配置信息等。对于每一个Servlet实例,init()方法只能被调用一次。init()方法有一个类型为ServletConfig的参数,Servlet容器通过这个参数向Servlet传递配置信息。Servlet使用ServletConfig对象从Web应用程序的配置信息中获取以名-值对形式提供的初始化参数。另外,在Servlet中,还可以通过ServletConfig对象获取描述Servlet运行环境的ServletContext对象,使用该对象,Servlet可以和它的Servlet容器进行通信。无论有多少客户机访问Servlet,都不会重复执行init()。

  1. Servlet初始化之后,将一直存在于容器中,service()响应客户端请求

① 如果客户端发送GET请求,容器调用Servlet的doGet方法处理并响应请求

② 如果客户端发送POST请求,容器调用Servlet的doPost方法处理并响应请求

③ 或者统一用service()方法处理来响应用户请求

service()是Servlet的核心,负责响应客户的请求。每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。在HttpServlet中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法相应的do功能。要注意的是,在service()方法被容器调用之前,必须确保init()方法正确完成。容器会构造一个表示客户端请求信息的请求对象(类型为ServletRequest)和一个用于对客户端进行响应的响应对象(类型为ServletResponse)作为参数传递给service()方法。在service()方法中,Servlet对象通过ServletRequest对象得到客户端的相关信息和请求信息,在对请求进行处理后,调用ServletResponse对象的方法设置响应信息。

  1. WEB容器决定销毁Servlet时,先调用Servlet的destroy()方法,通常在关闭web应用之前销毁Servlet

destroy()仅执行一次,在服务器端停止且卸载Servlet时执行该方法。当容器检测到一个Servlet对象应该从服务中被移除的时候,容器会调用该对象的destroy()方法,以便让Servlet对象可以释放它所使用的资源,保存数据到持久存储设备中,例如,将内存中的数据保存到数据库中,关闭数据库的连接等。当需要释放内存或者容器关闭时,容器就会调用Servlet对象的destroy()方法。在Servlet容器调用destroy()方法前,如果还有其他的线程正在service()方法中执行,容器会等待这些线程执行完毕或等待服务器设定的超时值到达。一旦Servlet对象的destroy()方法被调用,容器不会再把其他的请求发送给该对象。如果需要该Servlet再次为客户端服务,容器将会重新产生一个Servlet对象来处理客户端的请求。在destroy()方法调用之后,容器会释放这个Servlet对象,在随后的时间内,该对象会被Java的垃圾收集器所回收。

注意

①在正常情况下,Servlet只会初始化一次,而处理服务会调用多次,销毁也只会调用一次;但是如果一个Servlet长时间不使用的话,也会被容器自动销毁,而如果需要再次使用时会重新进行初始化的操作,即在特殊情况下初始化可能会进行多次,销毁也可能进行多次。

②在servlet实例创建之后,在servlet能为客户请求提供服务之前,容器会在servlet实例上调用init()方法。如果你有初始化代码,就应该覆盖servlet类的init()方法,否则会调用GenericServlet的init()方法。而对应每个客户请求(无论是谁,无论是不是同一个人,只针对请求),容器都会创建一对新的请求和响应对象,创建一个新的线程/栈。任何servlet类都不会有多个实例,除非一种特殊情况(SingleThreadModel)。

③ servlet生命周期的4个周期总结如下: a. 实例化以及加载servlet,new的过程

b. 初始化init(ServletConfig)。

c. 处理请求,调用servlet的service,doget,dopost方法将Request和Response,作为参数传递。

d. 退出服务,调用destory方法释放资源。 ```

页面展示

1.登录页面

2.注册页面

3.主页

4.展示页面

5.新增页面

6.删除页面

7.修改页面

注意

``` 1.MySQL 版本5.0以上与8.0以上配置有些许差异,需要调整

MySQL 5.Xjdbc.driver=com.mysql.jdbc.Driver

MySQL 8.Xjdbc.driver=com.mysql.cj.jdbc.Driver

2.运行项目前提前配置好MySQL数据库、Tomcat服务器、IDEA maven依赖库

3.本系统仅实现简单功能,仅为更好理解Servlet原理,需进一步完善更多功能及健壮性 ```

About me

``` 一个爱学习、爱分享、爱交流的程序员;

欢迎关注个人微信公众号【Java烂笔头】,一起交流、共同进步; ```

参考文献

  • 综合管理信息系统的设计与实现(东南大学·胡杰)
  • 基于Flex与J2EE架构的CMS系统的设计与实现(安徽理工大学·程光磊)
  • 学生管理系统的设计与实现(电子科技大学·贾林蓉)
  • 基于需求语义描述的多平台统一框架的研究与实现(中国海洋大学·辛灿灿)
  • 综合管理信息系统的设计与实现(东南大学·胡杰)
  • 基于ASP.NET MVC框架的客户关系管理系统的设计与实现(吉林大学·杨国兴)
  • Struts框架在实现管理信息系统中的应用(国防科学技术大学·贝琦)
  • 外贸订单管理系统的设计与实现(山东大学·曹美玉)
  • 基于WEB的设备管理系统开发(西华大学·李茂春)
  • Struts框架在实现管理信息系统中的应用(国防科学技术大学·贝琦)
  • 基于.NET和MVC的公司管理信息系统的设计与实现(浙江大学·龚薇华)
  • 基于EPP的域名管理系统(山东大学·孟庆领)
  • 学生管理系统的设计与实现(电子科技大学·贾林蓉)
  • 基于MVC模式的物流信息管理系统设计与开发(电子科技大学·程泳)
  • 某企业人力资源管理系统的设计与实现(电子科技大学·毛建东)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:代码港湾 ,原文地址:https://m.bishedaima.com/yuanma/35792.html

相关推荐

发表回复

登录后才能评论