servlet+mvc、jar 包

目录

一、servlet

1.简介

2.要素 

 3.特性

4.Servlet处理机制

 5.生命周期

init() 方法

service() 方法

doGet() 方法

doPost() 方法

destroy() 方法

二、 MVC

1.简介

2.特点

低耦合

重用性高

可维护性高

三、jar 包 

1.介绍

2.意义

3.导入jar包的步骤

    1.下载相应的jar包文件

    2.将下载好的jar文件复制到相应位置

    3.配置IDEA导入jar文件(lib不存在,即第一次导入jar文件)


一、servlet

1.简介

在Web服务器端加载并运行的Java应用程序具体运行在Servlet引擎管理的JVM上。Servlet容器负责Servlet和用户的通信以及调用Servlet的方法。Servlet和用户的通信采用请求/响应模式。用于以动态响应客户机请求形式扩展Web服务器(Web Container)的功能。Servlet是开发服务器端应用程序的一个很好选择, Servlet与JSP结合使用,能提供更强大的服务器端功能。

Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。

使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。

Servlet 是 Java Web 应用中最核心的组件

Servlet 运行在 Servlet 容器中,能够为各种各样的客户请求提供相应服务。Servlet 能够轻而易举地完成以下任务:

  • 动态生成 HTML 文档
  • 把请求转发给同一个 Web 应用中的其他 Servlet 组件
  • 把请求转发给其他 Web 应用中的 Servlet 组件
  • 读取客户端的 Cookie,以及向客户端写入 Cookie
  • 访问其他服务器资源(如数据库或基于 Java 的应用程序)

Servlet 之所以有如此高的本领,主要有两个原因:

  • Servlet 是用 Java 语言编写出来的类,只要开发人员有着深厚的 Java 编程功底,就可以编写出各类复杂的 Servlet
  • Servlet 对象由 Servlet 容器缔造,能驾轻就熟地调用容器中的各种资源。

2.要素 

下面是一个最简单的Servlet程序。

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/index")
public class HelloServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.getWriter().append("Hello World!");
    }
}

  • 在程序实现的角度,一个Servlet是实现了javax.servlet.Servlet接口(针对HTTP通讯协议,可以是更加具体的javax.servlet.http.HttpServlet抽象类)的子类

  • doGet()方法中定义了处理HTTP GET请求的动作,在例子中是将"Hello World!"作为相应内容返回

  • HttpServletRequest对象中封装了HTTP请求信息,通过该对象可以访问HTTP请求数据(Header,表单,URL等等)
  • HttpServletResponse可以用来生成HTTP响应内容,这里仅仅是写入了一个字符串
  • @WebServlet("/index")注解表明只有请求的路径是/index时,才会执行该Servlet生成返回内容

 3.特性

1.可移植性:依托于Java语言的跨平台
2.可扩展性,高效:单例多线程,不像CGI一次请求一个实例
3.安全的:依托Java特性,更安全,少错误

4.Servlet处理机制

Servlet容器监听某网络端口,接受并读取客户端发送而来的HTTP请求后,将其分发至指定的Servlet进行处理,Servlet的service()方法的两个参数HttpServletRequest和HttpServletResponse正是对HTTP请求和响应的封装,Servlet接受请求后,可以进行响应的处理:

图中的四种处理响应的方式,都是通过HttpServletResponse对象来完成的:

 5.生命周期

Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:

  • Servlet 初始化后调用 init () 方法。
  • Servlet 调用 service() 方法来处理客户端的请求。
  • Servlet 销毁前调用 destroy() 方法。
  • 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。

现在让我们详细讨论生命周期的方法。

init() 方法

init 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。因此,它是用于一次性初始化,就像 Applet 的 init 方法一样。

Servlet 创建于用户第一次调用对应于该 Servlet 的 URL 时,但是您也可以指定 Servlet 在服务器第一次启动时被加载。

当用户调用一个 Servlet 时,就会创建一个 Servlet 实例,每一个用户请求都会产生一个新的线程,适当的时候移交给 doGet 或 doPost 方法。init() 方法简单地创建或加载一些数据,这些数据将被用于 Servlet 的整个生命周期。

init 方法的定义如下:

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

service() 方法

service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。

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

下面是该方法的特征:

public void service(ServletRequest request, 
                    ServletResponse response) 
      throws ServletException, IOException{
}

service() 方法由容器调用,service 方法在适当的时候调用 doGet、doPost、doPut、doDelete 等方法。所以,您不用对 service() 方法做任何动作,您只需要根据来自客户端的请求类型来重写 doGet() 或 doPost() 即可。

doGet() 和 doPost() 方法是每次服务请求中最常用的方法。下面是这两种方法的特征。

doGet() 方法

GET 请求来自于一个 URL 的正常请求,或者来自于一个未指定 METHOD 的 HTML 表单,它由 doGet() 方法处理。

public void doGet(HttpServletRequest request,
                  HttpServletResponse response)
    throws ServletException, IOException {
    // Servlet 代码
}

doPost() 方法

POST 请求来自于一个特别指定了 METHOD 为 POST 的 HTML 表单,它由 doPost() 方法处理。

public void doPost(HttpServletRequest request,
                   HttpServletResponse response)
    throws ServletException, IOException {
    // Servlet 代码
}

destroy() 方法

destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用。destroy() 方法可以让您的 Servlet 关闭数据库连接、停止后台线程、把 Cookie 列表或点击计数器写入到磁盘,并执行其他类似的清理活动。

在调用 destroy() 方法之后,servlet 对象被标记为垃圾回收。destroy 方法定义如下所示:

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

  细节详细可看通俗易懂的 Servlet 教程 - 掘金 (juejin.cn)

二、 MVC

1.简介

模型-视图-控制器(Model-View-Controller),简称为MVC。MVC是一种先进的设计结构,其目的是以会话的形式提供方便的GUI支持。MVC首先出现在Smalltalk编程语言中。

MVC是一种通过3个不同部分构造一个软件或组件的理想办法。

  • 模型(model)用于存储数据的对象。
  • 视图(view)为模型提供数据显示的对象。
  • 控制器(controller)处理用户的交互操作,对于用户的操作做出响应,让模型和视图进行必要的交互,即通过视图修改,获取模型中的数据;当模型中的数据变化时,让视图更新显示。

从面向对象的角度看,MVC结构可以使程序更具有对象化特性,也更容易维护。在设计程序时,可以将某个对象看作“模型”。然后为“模型”提供恰当的显示组件,即“视图”。为了对用户的操作做出响应,可以选择某个组件做“控制器”,当触发事件时,通过“视图”修改或得到“模型”中维护着的数据,并让“视图”更新显示。

2.特点

低耦合

降低了视图与业务逻辑间的双向偶合,比如jsp,如果更改控制层,不用重新一起编译视图层,哪一部分需要修改,只用改对应的部分,不会牵连到其他层。

重用性高

多个视图可以请求访问一个服务器端,由一个服务器端处理逻辑,比如手机端和电脑端的访问,视图可能有差别,但用的服务器里的代码都是一样的

可维护性高

因为视图层和逻辑层分开了,所以项目的维护和修改更加容易。

三、jar 包 

1.介绍

 jar包就是 Java Archive File,顾名思义,它的应用是与 Java 息息相关的,是 Java 的一种文档格式,是一种与平台无关的文件格式,可将多个文件合成一个文件。jar 包与 zip 包非常相似——准确地说,它就是 zip 包,所以叫它文件包。jar 与 zip 唯一的区别就是在 jar 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,该文件是在生成 jar 文件的时候自动创建的,作为jar里面的"详情单",包含了该Jar包的版本、创建人和类搜索路径Class-Path等信息,当然如果是可执行Jar包,会包含Main-Class属性,表明Main方法入口,尤其是较为重要的Class-Path和Main-Class,咱们一会在后续的内容里面会进行详细地讲解。

注:jar包主要是对class文件进行打包,而java编译生成的class文件是平台无关的,这就意味着jar包是跨平台的,所以不必关心涉及具体平台的问题。

2.意义

当开发了一个程序以后,程序中有很多的类,如果需要提供给别人使用,发给对方一大堆源文件是非常不好的,因此通常需要把这些类以及相关的资源文件打包成一个 jar 包,把这个 jar 包提供给别人使用,同时提供给使用者清晰的文档。这样他人在拿到我们提供的jar之后,就能方便地进行调用。

3.导入jar包的步骤

    1.下载相应的jar包文件

        找到你需要的jar包并下载下来。

    2.将下载好的jar文件复制到相应位置

        在书写代码的与src同级目录下创建一个新的lib文件夹(当lib文件夹不存在时如是操作),并将所需的jar文件复制粘贴到文件夹中,如下图所示

        可以看到我已经将三个jar文件移入lib文件夹中了,此时jar文件我们并不能进行查看,也不能使用。

    3.配置IDEA导入jar文件(lib不存在,即第一次导入jar文件)

        要想使导入的jar包可以使用还需要以下操作:点击左上角的File选项选择Project Structure  。

        找到libraries,点击 + 符号选择java。

        选择你需要使用到jar库的src文件夹并点击ok。

        清除无用的文件并导入jar文件,完成后点击右下角apply进行应用。

        再在左侧选择Modules,在右侧点击 + 符号选择library并选定存放jar文件的src文件,点击Add Selected,Apply,Ok完成添加,如下图:

        完成操作后可以看到左边的jar文件都可以展开了,jar文件也就导入成功了。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值