Java培优班 - 第二十九天 - Servlet(核心) - Servlet-Eclipse配置、web.xml配置(标签解释)、发布、Web 应用发布路径、Servlet调用过程
发布日期:2021-06-30 16:59:32 浏览次数:2 分类:技术文章

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


7 Servlet


文章目录


7.1 Servlet概述

7.1.1 什么是 Servlet?

Servlet:Server Applet 服务器端程序

本质上是一段 Java 程序,Servlet 中通常没有 main 函数,
Servlet 必须要放在服务器中,由服务器调用才能执行!
(必须实现一个接口,实现一个service)

Servlet是SUN公司提供的一门动态Web资源开发技术

Servlet: Server Applet: 服务器端的Java程序
Servlet本质上就是一段Java程序,和普通的Java程序不同是,Servlet程序无法独立运行,必须将Servlet程序放在服务器中,由服务器调用才可以执行!!

  • 静态Web资源: 任何人在任何条件下访问的效果都是相同的,这种叫做静态Web资源,
    html、css、js、flash
  • 动态Web资源: 在不同的条件下访问时,看到的是不同的效果。
    Servlet、JSP、PHP、.NET

7.1.2 Servlet 作用是什么?

运行在服务器端的 Servlet 程序,作用是什么?

在这里插入图片描述

  • Servlet 擅长 - 对服务器收到的请求做出处理!
  • JSP 擅长 - 处理网页 - 所以Servlet把结果交给JSP

总结:运行在服务器中的Servlet程序的作用是:

在服务器将请求接收过来后,对请求进行处理,即处理请求!


7.2 开发Servlet程序

7.2.1 开发Servlet程序的步骤

  • 第一步: 写一个类,实现一个Servlet接口,并实现其中的方法
    直接实现Servlet接口或者实现该接口的子类。
    {
    MyServlet implements Servlet
    A implements Servlet
    实现A
    B extends A
    }
  • 第二步: 在web应用的web.xml文件中配置Servlet程序对外访问的路径。

7.2.2使用Eclipse创建Web项目

在这里插入图片描述

在这里插入图片描述

以上是Web项目在工程视图(Project)和包视图(package)下结构,推荐使用包视图!

  • 1、创建一个Web工程: 在左侧窗口中, 点击鼠标右键 —> New —> Dynamic Web Project。
    在这里插入图片描述
  • 2、接着会弹出如下窗口:
    注 意 ! \color{#f01}{注意!} 这里版本选择 2.5,否则后面没有 web.xml
    (这里用 web.xml 方便入门 )
    在这里插入图片描述

注意:

  • 3.0版本不会创建web.xml文件, 并且创建Servlet时也不会在web.xml文件中生成Servlet相关的配置信息, 记得改为2.5
  • Target runtime选项中如果没有可选的服务器,可点击右侧的"New Runtime…"进行配置。

详细操作步骤在《5.2配置Target runtime(Web项目运行环境)》

7.2.3 使用Eclipse创建Servlet

  • 1、选中项目中的src目录,鼠标右键 —> New —> Servlet
    在这里插入图片描述
  • 2、在弹出的窗口中,根据提示填写内容:
    在这里插入图片描述
  • 3、点击finish即可完成Servlet创建过程, 创建好的Servlet如下:
    在这里插入图片描述

通过Eclipse创建Servlet,默认继承HttpServlet。

由于HttpServlet也是Servlet接口的子类,让HelloServlet继承HttpServlet,相当于间接实现了Servlet接口。

继承HttpServlet类默认会覆盖doGet方法和doPost方法

两个方法的作用为:

  • doGet方法:当浏览器发送请求的方式为GET提交时, 将会调用doGet方法来处理请求
  • doPost方法:当浏览器发送请求的方式为POST提交时, 将会调用doPost方法来处理请求

提示:

如果当GET提交和POST提交处理代码相同时,可以将代码写在其中一个方法里
(例如写在doGet中),并在另外一个方法(例如doPost)中调这个方法。
这样一来,不管是GET提交还是POST提交,最终doGet方法都会执行,都会对请求进行处理!!

7.2.4 Servlet在web.xml中的配置

在通过Eclipse创建Servlet时,会自动在web.xml文件中进行Servlet相关信息的配置

(注意:如果是复制Servlet类文件,但配置信息不会跟着复制,需要自己手动添加配置,否则复制的Servlet将无法访问!
注意:如果是修改了 Servlet 类的名字,配置信息也不会跟着修改,需要自己手动到 web.xml 文件中进行修改,否则 Servlet 将无妨访问!

HelloServlet
com.tedu.HelloServlet
HelloServlet
/HelloServlet

关于上面的配置信息:

  • Eclipse每创建一个Servlet, 就会在 web.xml 文件(2.5版本)中添加两个标签

    • <servlet>
    • <servlet-mapping>
    • (可以将这两个标签看成一个组的标签)
  • <servlet><servlet-mapping>标签内都会有一个<servlet-name>标签

    标签的内容可以更改,
    但要求更改后的这两个<servlet-name>标签的内容也必须一致

  • <servlet-class>标签用于配置Servlet类的全路径名(即包名+类名)

    需要注意
    如果在创建Servlet后修改了Servlet类的名称,这个地方也要一起更改,否则将会出现"ClassNotFoundException" 即类找不到异常

  • <url-pattern>标签用于配置浏览器以什么路径访问当前Servlet

    (即Servlet对外访问的路径),
    默认的路径是:/类名
    例如:
    上面为HelloServlet配置的<url-pattern>为 /HelloServlet,因此我们在浏览器中的访问路径则为:
    http://主机名/web项目访问路径/HelloServlet

7.2.5 运行Servlet程序、访问测试

  • 访问Servlet方式一

    若是第一次运行,需要先创建tomcat服务器,即在Servers窗口中点击链接可创建一个tomcat服务器,且只需创建一次即可!
    (1)在服务器上右键 --> 点击 “add and remove” 将当前web项目发布到服务器中,并点击完成。
    (2)启动tomcat服务器:在服务器上右键 Start 即可启动服务器
    (3)打开本地浏览器,通过路径访问:http://localhost:8080/项目名称/HelloServlet即可访问Servlet程序

  • 访问Servlet方式二

    (1) 在运行的Servlet上点击右键 —> “Run As” —> “1 Run on Server”
    在这里插入图片描述
    (2) 在弹出的窗口中,直接点击完成即可!!!
    在这里插入图片描述
    (3) 运行结果如下:
    在这里插入图片描述
    或者打开浏览器,复制上图中的路径:
    http://localhost:8080/Hello/HelloServlet,粘贴到浏览器的地址栏中,回车访问:
    在这里插入图片描述
    在这里插入图片描述

7.2.6 Eclipse默认发布Web应用的位置

Tomcat服务器中默认只有一台虚拟主机,叫做localhost主机

而localhost主机发布web应用的位置是webapps
将day09发布到localhost主机中,但为什么day09目录没有在webapps目录下?

  • 默认情况下,发布一个Web应用到localhost主机中, 只需要将Web应用的目录拷贝到webapps目录下即可完成发布!
  • 而将Eclipse和Tomcat整合之后,通过Eclipse发布一个web应用到tomcat服务器中,发布的路径默认被改成了:
    [workspace]\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps

如果要修改Eclipse默认发布Web应用的目录位置:

  • 关闭服务器,将服务器中的所有应用移除
  • 在服务器上右键 --> clean
  • 双击tomcat服务器,在弹出窗口中找到 Server location, 选择第二个选项
  • 并将下方的Deploy Path改为: webapps

改完后,Ctrl+s保存配置即可!!

7.2.7 Eclipse如何发布一个Web应用

当通过eclipse将day09项目发布到服务器中,

是直接将day09拷贝到服务器中对应的目录下吗?

发布的过程如下:

在这里插入图片描述


文章目录


7.3 Servlet继承关系

在这里插入图片描述

Servlet接口 -- 定义了一个Servlet应该具备哪些功能	|	|-- GenericServlet抽象类,实现了Servlet接口,		并且实现了接口中大部分的方法,		但是没有实现service,		service方法是处理请求的核心方法,应该由开发人员自己来实现!			|			|-- HttpServlet抽象类,继承了GenericServlet,并且实现了					service方法,在service方法中,					判断请求方式,					根据不同的请求方式,调用不同的doXxx方法。					|					|-- ??? extend HttpServlet						因此在开发中,我们只需要写一个类,继承HttpServlet,						重写父类中的doGet方法和doPost方法。

当浏览器访问一个Servlet时,

首先调用Servlet类的service方法
(从HttpServlet类中继承过来的),
根据请求方式调用对应的doGet方法或者doPost方法
对请求进行处理!
在这里插入图片描述


文章目录


7.4 Servlet 调用过程

通过浏览器访问服务器中的一个Servlet程序,这个Servlet程序是如何执行的?

又是如何被调用的?

localhost/Hello/HelloServlet

  1. 根据请求中的Host头,伙子浏览器访问的是哪个虚拟主机
    localhost
  2. 根据请求行中的资源路径获知浏览器访问的是哪个Web服务
    /Hello
  3. 根据请求行中的资源路径获知浏览器访问的是哪个资源
    /HelloServlet
  4. web.xml路径中匹配,匹配获得真实路径
    在这里插入图片描述

∗ ∗ S e r v l e t 调 用 过 程 图 ∗ ∗ \color{#f01}{**Servlet调用过程图**} Servlet

不包括发送给JSP

  1. 获取请求

    在这里插入图片描述

  2. 生成响应

    在这里插入图片描述


文章目录


7.5扩展内容

7.5.1 配置Target runtime(Web项目运行环境) - 【未完】

1、如果在创建Web项目时,Target runtime选项中没有配置可选的服务器,可以点击右面的选项进行配置

7.5.2 修改Servlet模版

  • 修改 Eclipse 提示模板 - Templates -

通过Eclipse可以直接创建一个Servlet类,这相比通过记事本等文本编辑工具创建Servlet,可以节省配置Servlet的时间,提高了我们的开发效率。

但是通过Eclipse生成的Servlet类中包含了许多我们不需要的注释和默认实现代码,这些每次都删除也非常占用时间。
接下来可以通过添加模版代码的形式,来生成Servlet的内容,以便于提高我们的开发效率。

7.5.3 tomcat右键选项介绍 - 【未完】

7.5.4 FAQ常见问题 - 【未完】


文章目录


7.6 request和response介绍

当浏览器请求服务器

服务器在接收请求后,
调用 servelet 实例的 service 方法之前,
会创建 requestresponse 对象。

将解析后的请求信息(请求行、请求头、请求实体)封装到requeset 对象中。

将 request 和 response 传递给 service 方法,用于处理请求

  • request 是代表 Http 请求信息的对象,
    其中封装了浏览器向服务器发送的请求信息,将request传递给service方法,在处理请求的过程中,可以通过request对象获取请求相关的信息。
  • response对象是代表Http响应信息的对象 ,
    其中将会封装服务器向浏览器做出的响应信息,将response传递给service方法,在处理请求的过程中,如果有任何数据要发送给浏览器,可以通过response获取流进行发送。
    response.getWriter();
    response.getOutputStream();

转载地址:https://lawsssscat.blog.csdn.net/article/details/103502891 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Java培优班 - 第二十九天 - 修改 Eclipse 提示模板 - Templates
下一篇:spring - context:component-scan - 【未完】

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月22日 20时15分19秒