博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅谈servlet&&MVC模型
阅读量:721 次
发布时间:2019-03-21

本文共 2990 字,大约阅读时间需要 9 分钟。

Servlet&&MVC模型

Servlet

Servlet简介

开始之前先说一个小问题,是先有JSP呢还是先有Servlet呢?

答案很显然:是先有Servlet。没错,JSP的前身就是Servlet。

那么什么是Servlet呢?

Servlet是在服务器上运行的小程序。一个Servlet就是一个Java类,并且可以通过“request-response”编程模型来访问的这个驻留在服务器内存里的Servlet程序。

Tomcat容器等级

Tomcat的容器分为四个等级,Servlet的容器管理Context容器,一个Context对应一个Web工程,四个容器等级的包含关系以及名称如下图所示。在这里插入图片描述

用户自定义的Servlet

用户手动编写的Servlet需要继承抽象类HttpServlet(提供了 Http 相关的方法,并且扩展了GenericServlet 类),而HttpServlet类也是继承了抽象类GenericServlet(实现了 Servlet 接口,并且对其中的 初始化方法init() 、销毁方法destroy() 和 执行服务方法service() 提供了默认实现)。

在这里插入图片描述
下面说一下重写doGet()或者doPost()方法,这个取决于用户提交request的方式,method=“get/post”,需要注意的是要throws ServletException,IOException,具体代码如下。

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//处理代码...}public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//处理代码...}

自定义完servlet后,记得要在web.xml中注册一下新定义的servlet

Servlet生命周期(划重点!划重点!划重点!其中会具体说一下三种方法)

Servlet 生命周期可被定义为从创建直到毁灭的整个过程,以下是 Servlet 遵循的过程大体上可以分为3个阶段:

  • 初始化阶段,调用init()方法进行初始化
  • 相应客户请求阶段,调用service()方法来处理客户端的请求。由service()方法根据提交方式(get/post)选择执行doGet()或者doPost()方法
  • 终止阶段,调用destroy()方法进行结束(终止/销毁)

整体流程图如下:

在这里插入图片描述
下面具体解释一下上面提到的3种方法:init() service() destroy()

init()方法

init() 方法在Servlet的生命周期中只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。

Servlet 创建于用户第一次调用对应于该 Servlet 的 URL 时,但是也可以指定 Servlet 在服务器第一次启动时被加载。
当用户调用一个 Servlet 时,就会创建一个 Servlet 实例,每一个用户请求都会产生一个新的线程,适当的时候移交给 doGet()或 doPost() 方法。init() 方法简单地创建或加载一些数据,这些数据将被用于 Servlet 的整个生命周期。

public void init() throws ServletException {
// 初始化代码...}

service()方法

service() 方法是执行服务的主要方法。Servlet 容器调用 service() 方法来处理来自客户端(浏览器)的request,并把格式化的response返回给客户端(浏览器)。

每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。

public void service(ServletRequest request,ServletResponse response)throws ServletException, IOException {
//执行代码...}

destroy()方法

destroy() 方法和init()方法和一样也是只会被调用一次,在Servlet生命周期结束时被调用。

destroy() 方法可以使Servlet关闭数据库连接、停止后台线程、把 Cookie 列表或点击计数器写入到磁盘,并执行其他类似的清理活动。
在调用 destroy() 方法之后,servlet 对象被标记由JVM 的垃圾回收器进行垃圾回收。

public void destroy() {
// 终止化代码...}

注:Servlet生命周期阶段包括了初始化、加载、实例化、服务和销毁。

Tomcat装载Servlet的三种情况

在下列时刻中Servlet容器进行装载Servlet:

  • Servlet容器启动时自动装载某些Servlet,实现它只需要在web.xml文件中的添加如下代码:<servlet><loadon-startup>1</loadon-startup></servlet>中间的数字越小表示优先级越高。
  • 在Servlet容器启动后,客户端首次向Servlet发送请求。
  • Servlet类文件被更新后,重新装载Servlet。

注:Servlet被装载后,Servlet容器创建一个Servlet实例并且点用Servlet的init()方法进行初始化。

Servlet与JSP九大内置对象的关系

在这里插入图片描述

MVC模型

MVC模型:MVC(Model、View、Controller),是软件开发过程中比较流行的设计思想。旨在分离模型、控制、视图,是一种分层思想的体现。

MVC 分层有助于管理复杂的应用程序,使得开发者可以在一个时间内专门关注一个方面。例如,可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。
MVC 分层简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。

  • Model(模型)表示应用程序核心(比如数据库记录列表)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。
  • View(视图)显示数据(数据库记录)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。
  • Controller(控制器)处理输入(写入数据库记录)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

最典型的MVC就是JSP + Servlet + JavaBean的模式,如下图:

在这里插入图片描述

转载地址:http://pcwgz.baihongyu.com/

你可能感兴趣的文章