Servlet 学习笔记1

Servlet 是什么?

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

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

  3. Java Servlet 通常情况下与使用 CGI(Common Gateway Interface,公共网关接口)实现的程序可以达到异曲同工的效果。但是相比于 CGI,Servlet 有以下几点优势:

    • 性能明显更好。
    • Servlet 在 Web 服务器的地址空间内执行。这样它就没有必要再创建一个单独的进程来处理每个客户端请求。
    • Servlet 是独立于平台的,因为它们是用 Java 编写的。
    • 服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。因此,Servlet 是可信的。
    • Java 类库的全部功能对 Servlet 来说都是可用的。它可以通过 sockets 和 RMI 机制与 applets、数据库或其他软件进行交互。

简单的说:Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则。Servlet 全称 server applet

Servlet 架构

下图显示了 Servlet 在 Web 应用程序中的位置。

Servlet 任务

Servlet 执行以下主要任务:

  1. 读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单,或者也可以是来自 applet 或自定义的 HTTP 客户端程序的表单。
  2. 读取客户端(浏览器)发送的隐式的 HTTP 请求数据。这包括 cookies、媒体类型和浏览器能理解的压缩格式等等。
  3. 处理数据并生成结果。这个过程可能需要访问数据库,执行 RMI 或 CORBA 调用,调用 Web 服务,或者直接计算得出对应的响应。
  4. 发送显式的数据(即文档)到客户端(浏览器)。该文档的格式可以是多种多样的,包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel 等。
  5. 发送隐式的 HTTP 响应到客户端(浏览器)。这包括告诉浏览器或其他客户端被返回的文档类型(例如 HTML),设置 cookies 和缓存参数,以及其他类似的任务。

Servlet 包

  1. Java Servlet 是运行在带有支持 Java Servlet 规范的解释器的 web 服务器上的 Java 类。
  2. Servlet 可以使用 javax.servlet javax.servlet.http包创建,它是 Java 企业版的标准组成部分,Java 企业版是支持大型开发项目的 Java 类库的扩展版本。
  3. Java Servlet 就像任何其他的 Java 类一样已经被创建和编译。

快速入门

创建JavaEE项目阶段

  1. 创建一个项目

  2. 创建的是JavaEE项目

  3. 项目创建之后

  4. web目录下的WEB-INF文件夹中新建两个文件夹,起名分别为classes和lib

  5. 设置classes路径

    选择刚才创建的文件夹classes的路径:

  6. 配置lib的路径

    点击加号选择 -> JARs or diretories -> 选择lib文件夹 -> Jar Diretory -> OK,然后:

  7. 配置tomcat服务器

    这里可以不选择After launch,选择这个,每次运行程序都会使用浏览器打开设置的URL

Servlet的实现阶段

  1. 对项目导入servlet架包(架包在本地安装的tomcat/lib目录下)

    File -> Project Structure -> Libraries -> 点击小加号 -> Java -> 选择servlet架包

  2. 编写Servlet源文件(在src文件夹中编写)

    这里在 src 文件夹里创建了 my.servlet.study 包,然后再编写Servlet源文件

    package my.servlet.study;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    public class ServletDemo01 extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
                throws ServletException, IOException {
            System.out.println("请求已经收到!!!");
        }
        @Override
        public void destroy() {
            super.destroy();
        }
    }
    
  3. 部署Servlet(在 web/WEB-INF/web.xml 文档中添加如下内容)

    <!-- 配置Servlet -->
    <servlet>
        <servlet-name>demo1</servlet-name>                                  <!-- 自己继承Servlet类的类名称:自定义 -->
        <servlet-class>my.servlet.study.ServletDemo01</servlet-class>       <!-- 该类的全路径 -->
    </servlet>
    
    <servlet-mapping>
        <servlet-name>demo1</servlet-name>                           <!-- servlet 的映射名称 -->
        <url-pattern>/my.servlet.study.ServletDemo01</url-pattern>   <!-- servlet 的映射路径(url),该路径与类全路径一样 -->
    </servlet-mapping>
    
  4. 启动成功后 在浏览器地址栏输入:

到此一个简单的Servlet项目就配置好了。

Servlet的执行原理

  1. 单服务器服务器收到客户端浏览器的请求后,会解析客户端请求的URL,获取Servlet的资源路径。
  2. 查找web.xml文档,查看是否有对应的 <url-pattern> 标签体内容。
  3. 如果有对应的 <url-pattern> 标签体内容,则通过 <servlet-mapping> 标签中的 <servlet-name> 标签,找到相同名的 <servlet> 标签中的 <servlet-name> 标签。
  4. 然后通过 <servlet-name> 标签,找到 <servlet-class> 标签中的全类名。
  5. tomcat会将对应类的字节码文件加载入内存,并创建其对象。
  6. 调用 doGet() 方法。

参考文献

  1. Servlet菜鸟教程
  2. Mac下IntelliJ IDEA 配置Servlet
posted @ 2021-03-03 23:26  LeeHua  阅读(99)  评论(0编辑  收藏  举报