基于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等这些方法。

​ 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如何被加载、初始化,以及它怎样接收请求、响应请求,提供服务。

输入图片说明

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)和一个用于对客户端进行响应的响应对象(类型为ServletResponse)作为参数传递给service()方法。在service()方法中,Servlet对象通过ServletRequest对象得到客户端的相关信息和请求信息,在对请求进行处理后,调用ServletResponse对象的方法设置响应信息。

4. 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原理,需进一步完善更多功能及健壮性

LICENSE

zjzhou

About me

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

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

源码获取方式

关注微信公众号:

        Java烂笔头

回复:

        servlet

### 回答1: 对于基于Java Web技术开发的项目源码通常会涉及以下几个方面的内容: 1. 项目结构:源码会涵盖项目的整体架构和组织结构。例如,项目的目录结构、主要代码文件、配置文件等。 2. 后端逻辑:Java Web项目的后端逻辑通常是基于Java语言编写的。源码中会包含各个模块的业务逻辑代码,例如处理请求、数据库操作、业务计算、数据处理等。 3. 前端代码:除了后端逻辑,Java Web项目还会包含前端代码。前端代码通常包括HTML、CSS、JavaScript等,用于实现网页的展示效果和交互功能。源码中会涉及前端框架、页面模板、样式设计、页面逻辑等。 4. 数据库交互:Java Web项目通常需要与数据库进行数据交互。源码中会包含数据库连接、数据查询、持久化等相关的代码。 5. 配置文件:源码中还会包含各种配置文件,例如Web.xml、spring.xml、log4j.xml等。这些配置文件用于配置项目的各种参数和组件,以及日志记录等。 总之,一个基于Java Web技术开发的项目源码涵盖了项目的整体结构、后端逻辑、前端代码、数据库交互和配置文件等方面的内容。通过阅读源码,可以深入了解项目的实现细节,方便进行二次开发和定制。 ### 回答2: Java Web基于Web系统开发项目源码是指使用Java语言和相关技术,基于Web开发框架进行开发的项目源代码。Java Web项目通常包括以下几个关键组件: 1. Servlet: ServletJava Web应用程序的基本构建块,用于处理HTTP请求和响应。通过编写Servlet类,可以实现对用户请求的处理和动态生成HTML页面。 2. JSP: JSP(Java Server Pages)是一种将Java代码嵌入到HTML页面中的技术,可以实现页面动态生成和展示。通过在JSP中使用Java代码和标签,可以实现与数据库的交互、数据查询和展示等功能。 3. 数据库连接池:Java Web项目通常需要与数据库进行交互,通过使用数据库连接池可以提高数据库连接的性能和效率。常用的数据库连接池包括Apache的DBCP和C3P0等。 4. MVC框架:MVC(Model-View-Controller)是一种设计模式,用于将业务逻辑、数据展示和请求处理进行分离。常用的Java Web MVC框架包括Struts、Spring MVC和JSF等,通过使用这些框架可以更好地组织和管理项目代码。 5. 日志记录:在Java Web项目中,通常需要记录系统运行时的日志信息,以便于问题排查和系统监控。常用的Java日志框架包括Log4j和Logback等。 总之,Java Web基于Web系统开发项目源码是通过使用Java语言和相关技术,利用Servlet和JSP进行动态页面生成,结合MVC框架进行业务逻辑和请求处理,通过数据库连接池与数据库进行交互,同时记录运行时日志信息的项目源代码。这些源码可以根据具体需求进行定制和开发,实现各种Web应用程序的功能和需求。 ### 回答3: Java Web是一种基于Java语言的Web开发技术,可以用于开发各种规模的Web系统。在开发Java Web项目时,我们通常会编写一些源码来实现系统的各种功能。 首先,我们需要创建一个Java Web项目,并配置好开发环境,例如使用Eclipse或IntelliJ IDEA等集成开发环境来进行开发。然后,我们可以根据项目需求来编写源码。 在Java Web项目中,我们通常会使用Java Servlet来处理HTTP请求和响应。我们可以编写Servlet类来处理用户的登录、注册、查询、修改等操作。例如,我们可以编写一个UserServlet来处理与用户相关的操作,包括用户的登录验证、用户信息的查询和修改等。 在编写Servlet类时,我们可以使用Java的数据库访问技术,例如JDBC或ORM框架(如Hibernate、MyBatis等)来访问数据库。我们可以编写一些数据访问层的代码来实现数据库的增删改查操作。例如,我们可以编写一个UserDAO类来实现对用户数据的访问操作,包括新增用户、删除用户、更新用户信息以及查询用户信息等。 另外,我们还可以使用Java的Web框架来简化开发工作。例如,我们可以使用Spring MVC框架来实现控制器层的开发,统一处理HTTP请求,并将请求转发到相应的处理方法中。我们可以编写一些控制器类来处理不同的HTTP请求,例如处理用户登录、用户注册、用户信息查询等。 除了Servlet和框架,我们还可以使用其他Java技术来开发完善的Java Web项目。例如,我们可以使用JSP(JavaServer Pages)来实现视图层的开发,编写用户界面和展示数据等。我们还可以使用JavaScript、CSS等前端技术来美化用户界面和提升用户体验。 总之,Java Web项目源码开发涉及到多个方面的技术,包括Servlet、数据库访问、Web框架以及前端技术等。我们需要根据具体的项目需求,编写合适的源码来实现系统的各种功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值