# 基于 Servlet 的管理系统
### 介绍
基于 Servlet 框架的管理系统 _简洁版_ ;
实现 **登录** 、 **注册** 、 **增** 、 **删** 、 **改** 、 **查** ;
可继续完善增加前端、校验、其他功能等;
可作为 **Servlet 项目** 开发练习基础模型;
**课程设计** 、 **毕业设计** 开发基础;
任何复杂的框架都是简单的知识组合并延伸的,学好基础知识才是最重要的;
此项目简单,便于理解基本原理,为复杂的 Servlet、SSH、SSM 等复杂项目的开发打下基础。
### 环境准备
开发平台:Idea 2019
数据库:MySQL 5.0.22
服务器:Tomcat 9.0.37
注意:需要安装 IDEA 开发平台、MySQL 数据库和 Tomcat 服务器,版本不一定完全一致,做好版本适应性配置即可。
### 项目结构
1.数据库及 Java 代码文件
![](https://www.writebug.com/myres/static/uploads/2021/11/18/e9adea657b80e5f5458570362b07e4dd.writebug)
2.Jsp 等前端代码
![](https://www.writebug.com/myres/static/uploads/2021/11/18/5f1294af1310f1820d6e481ae6553def.writebug)
3.Tomcat 服务器配置与运行
![](https://www.writebug.com/myres/static/uploads/2021/11/18/1f88c4546d0b4f6855b4ef5606661e75.writebug)
4.MySQL 数据库
![](https://www.writebug.com/myres/static/uploads/2021/11/18/fb8af95b6147f84a436d3046cf9ad14b.writebug)
### 基本原理
#### **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。
![](https://www.writebug.com/myres/static/uploads/2021/11/18/79d2995778849e1dd5dc4def7463a84b.writebug)
![](https://www.writebug.com/myres/static/uploads/2021/11/18/72ce92b7b44b5aabb073de6c12d8ea31.writebug)
**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等这些方法。
2. 每一个自定义的Servlet都必须实现Servlet的接口,Servlet接口中定义了五个方法,其中比较重要的三个方法涉及到Servlet的生命周期,分别是上文提到的init(),service(),destroy()方法。GenericServlet是一个通用的,不特定于任何协议的Servlet,它实现了Servlet接口。而HttpServlet继承于GenericServlet,因此HttpServlet也实现了Servlet接口。所以我们定义Servlet的时候只需要继承HttpServlet即可。
3. Servlet接口和GenericServlet是不特定于任何协议的,而HttpServlet是特定于HTTP协议的类,所以HttpServlet中实现了service()方法,并将请求ServletRequest、ServletResponse 强转为HttpRequest 和 HttpResponse。
```
##### **2.4Servlet 生命周期**
servlet 程序是由 Web 服务器调用,Web 服务器实现了对 servlet 生命周期的管理。当你的应用加载并使用一个 Servlet 时,从初始化到销毁这个 Servlet 期间会发生一系列的事件,这些事件叫做 Servlet 的生命周期事件(或方法)。
Servlet 生命周期可以归纳为:
###### **Servlet 加载---> 实例化---> 服务---> 销毁**
Servlet 生命周期定义了一个 Servlet 如何被加载、初始化,以及它怎样接收请求、响应请求,提供服务。
![](https://www.writebug.com/myres/static/uploads/2021/11/18/e295c5ec35c0385f7dc93371df183363.writebug)
```
1. 创建Servlet实例
web容器负责加载Servlet,当web容器启动时或者是在第一次使用这个Servlet时,容器会负责创建Servlet实例,但是用户必须通过部署描述符(web.xml)指定Servlet的位置,也就是Servlet所在的类名称,成功加载后,web容器会通过反射的方式对Servlet进行实例化。
2. 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()。
3. Servlet初始化之后,将一直存在于容器中,service()响应客户端请求
① 如果客户端发送GET请求,容器调用Servlet的doGet方法处理并响应请求
② 如果客户端发送POST请求,容器调用Servlet的doPost方法处理并响应请求
③ 或者统一用service()方法处理来响应用户请求
service()是Servlet的核心,负责响应客户的请求。每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。在HttpServlet中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法相应的do功能。要注意的是,在service()方法被容器调用之前,必须确保init()方法正确完成。容器会构造一个表示客户端请求信息的请求对象(类型为ServletRequest)和一个用于对客户端进行响应的�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于Servlet框架的管理系统 _简洁版_ ; 实现登录 、 注册 、 增 、 删 、 改 、 查 ; 可继续完善增加前端、校验、其他功能等; 可作为 Servlet项目 开发练习基础模型; 课程设计、 毕业设计 开发基础; 任何复杂的框架都是简单的知识组合并延伸的,学好基础知识才是最重要的; 此项目简单,便于理解基本原理,为复杂的Servlet、SSH、SSM等复杂项目的开发打下基础。
资源推荐
资源详情
资源评论
收起资源包目录
100012556-基于Java(Servlet)+MySQL开发的管理系统.zip (69个子文件)
manservlet
pom.xml 2KB
src
main
java
com
servlet
AddServlet.java 1KB
SearchAllServlet.java 923B
RegisterServlet.java 1KB
UpdateServlet.java 1KB
DeleteServlet.java 1KB
LoginServlet.java 1KB
dao
UserDaoImpl.java 4KB
UserDao.java 796B
filter
EncodingFilter.java 676B
entity
User.java 1KB
util
DBCoon.java 3KB
webapp
WEB-INF
web.xml 2KB
index.jsp 978B
error.jsp 160B
showAll.jsp 2KB
add.jsp 1KB
register.jsp 1KB
login.jsp 713B
LICENSE 11KB
.idea
sqldialects.xml 205B
vcs.xml 180B
misc.xml 646B
compiler.xml 542B
modules.xml 286B
.gitignore 38B
database
Servlet.sql 1KB
target
classes
com
servlet
AddServlet.class 2KB
LoginServlet.class 2KB
SearchAllServlet.class 2KB
RegisterServlet.class 2KB
DeleteServlet.class 2KB
UpdateServlet.class 2KB
dao
UserDao.class 456B
UserDaoImpl.class 4KB
filter
EncodingFilter.class 1KB
entity
User.class 2KB
util
DBCoon.class 3KB
ManagerSystem_Servlet-1.0-SNAPSHOT
WEB-INF
classes
com
servlet
AddServlet.class 2KB
LoginServlet.class 2KB
SearchAllServlet.class 2KB
RegisterServlet.class 2KB
DeleteServlet.class 2KB
UpdateServlet.class 2KB
dao
UserDao.class 456B
UserDaoImpl.class 4KB
filter
EncodingFilter.class 1KB
entity
User.class 2KB
util
DBCoon.class 3KB
lib
javax.servlet-api-4.0.0.jar 100KB
javax.servlet.jsp-api-2.3.3.jar 53KB
hamcrest-core-1.3.jar 44KB
junit-4.11.jar 239KB
servlet-api-2.5.jar 103KB
mysql-connector-java-5.1.25.jar 829KB
lombok-1.18.12.jar 1.71MB
standard-1.1.2.jar 384KB
jsp-api-2.1.jar 98KB
jstl-api-1.2.jar 30KB
web.xml 2KB
index.jsp 978B
error.jsp 160B
showAll.jsp 2KB
add.jsp 1KB
register.jsp 1KB
META-INF
MANIFEST.MF 84B
login.jsp 713B
ManagerSystem_Servlet.iml 644B
README.md 12KB
共 69 条
- 1
资源评论
神仙别闹
- 粉丝: 2679
- 资源: 7667
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功