JavaWeb精要复习01

  • Tomcat
  • Servlet
  • HTTP协议
  • WEB工程路径

一 Tomcat

Tomcat:由 Apache 组织提供的一种 Web 服务器,提供对 jsp 和 Servlet 的支持。它是一种轻量级的 javaWeb 容器(服务器),也是当前应用最广的 JavaWeb 服务器(免费)。

Tomcat目录结构

image-20230112202714912

1.server.xml 用于配置tomcat的基本设置(端口,主机名等)

2.web.xml 用于指定tomcat运行时配置(比如servlet等)

3.webapps 存放网站web应用

Java程序/应用/工程结构目录

image-20230112203402998

浏览器访问web服务器文件的UML时序图

image-20230112203639765

二 Servlet

1.1 什么是Servlet?

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

  1. 是Java程序
  2. 由Tomcat解析执行
  3. 功能强大,几乎完成所有网站功能

1.2Servlet生命周期

  1. init 初始化阶段
    1.1 Tomcat创建好Servlet实例后,会调用init方法,智慧调用一次

    Servlet 容器(Tomcat)启动时自动装载某些 servlet,实现这个需要在 web.xml 文件中添加

    ```1 表示装载的顺序
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40

    在 Servlet 容器启动后,浏览器首次向 Servlet 发送请求

    2. service 处理请求阶段

    1. 每收到一个http请求就会创建一个新的线程去处理
    2. 创建一个用于封装HTTP请求消息的ServletRequest对象和一个代表HTTP响应消息的ServletResponse对象
    3. 然后调用Servlet的service方法,并将请求和响应对象作为参数传递进去

    3. destroy 终止阶段

    Servlet 重新装载时(比如 tomcat 进行 redeploy【redeploy 会销毁所有的 Servlet 实例】),
    浏览器再向 Servlet 发送请求的第 1 次

    ### 1.3继承HttpServlet 开发 Servlet

    #### 1.3.1Servlet urlPattern 配置

    1. 精确匹配
    @WebServlet("/ok/zs")

    2. 目录匹配

    @WebServlet("/ok/*")

    3. 扩展名匹配

    @WebServlet("*.action")

    4. 任意匹配

    @WebServlet("/")
    @WebServlet("/*")

    > **/ 和 /*的配置,会匹配所有的请求,这个比较麻烦,要避免**

    ```java
    注意事项:
    当Servlet配置了 "/" 会覆盖tomcat默认的DefaultServlet,当其他的 utl-pattern 都匹配不上时 都会走这个Servlet,
    这样可以拦截到其它静态资源

2.ServletContext

WEB 应用中的所有 Servlet 共享同一个 ServletContext 对象,因此 Servlet 对象
之间可以通过 ServletContext 对象来实现多个 Servlet 间通讯.ServletContext 对象通常也被
称之为域对象

image-20230112210545699

ServletContext作用

  1. 获取web配置中上下文参数
  2. 获取当前工程路径
  3. 获取在服务器硬盘上的绝对路径
  4. 存储数据 共享数据

HttpServletRequest

HttpServletRequest常用方法

  1. getRequestURI() 获取请求的资源路径 http://localhost:8080/servlet/loginServlet
  2. getRequestURL() 获 取 请 求 的 统 一 资 源 定 位 符 ( 绝 对 路 径 )
  3. getParameter() 获取请求的参数
  4. getParameterValues() 获取请求的参数(多个值的时候使用) , 比如 checkbox, 返回的
    数组
  5. getAttribute(key); 获取域数据
  6. getRequestDispatcher() 获取请求转发对象, 请求转发的核心对象

三 HTTP

image-20230112211506565

### 3.2HTTP 响应包分析

HTTP 常见状态码

image-20230112211620573

四 Web工程路径

1
2
3
4
5
6
7
8
9
10
11
12
13

1.在实际开发中,路径都使用绝对路径,而不是相对路径
2.在 web 中 / 斜杠 如果被浏览器解析,得到的地址是:http://ip[域名]:port/比如: <ahref="/">斜杠</a>
3在 web 中 / 斜杠 如果被服务器解析,得到的地址是:http://ip[域名]:port/工程路径/,你也可以理解成 /工程路径/ 下面的几种情况就是如此:
● <url-pattern>/servelturl</url-pattern>
● servletContext.getRealPath("/"); ==> 是得到执行路径/工作路径
● request.getRequestDispatcher("/");
4.在 javaWeb 中 路径最后带 / 和 不带 / 含义不同
比如 <a href="/a/servlet03">网址</a> : servlet03 表示资源
<a href="/a/servlet03/">网址</a> : servlet03 表示路径
5. 重定向 response.sendRediect("/");
这条语句虽然是在服务器执行的,但是,服务器是把斜杠 / 发送给浏览器解析。
因此得到地址 http://ip[域名]:port/