[Java.Web] Servlet 的一些细节

本文来自 传智播客视频PPT

1. 由于客户端是通过 URL 地址访问 web 服务器中的资源,所以 Servlet 程序若想被外界访问,必须把 servlet

程序映射到一个 URL 地址上,这个工作在 web.xml 文件中使用 <servlet> 元素和 <servlet-mapping> 元素完成。

2. <servlet> 元素用于注册 servlet ,它包含有两个主要的子元素:<servlet-name> 和<servlet-class>

分别用于设置 Servlet 的注册名称和 Servlet 的完整类名。

3. 一个<servlet-mapping> 元素用于映射一个已注册的 Servlet 的一个对外访问路径,它包含有两个子元素:

<servlet-name> 和 <url-pattern> ,分别用于指定 Servlet 的注册名称和 Servlet 的对外访问路径。

4. 同一个 Servlet 可以被映射到多个 URL 上,即多个 <servlet-mapping> 元素的<servlet-name> 子元素的设置值

可以是同一个 Servlet 的注册名。

5. 在 Servlet 映射到的 URL 中也可以使用 * 通配符,但是只能有两种固定的格式:

一种格式是 “*.扩展名”,另一种格式是以正斜杠(/)开头并以(/*)结尾。利用 * 可以做伪静态网站。

6. 映射匹配优先级示例:

Servlet1 映射到 /abc/*

Servlet2 映射到 /*

Servlet3 映射到 /abc

Servlet4 映射到 *.do

当请求URL 为 /abc/a.html 时,1和2 都匹配,Servlet 引擎会调用 1.

当请求URL 为 /abc 时,1、2和3 都匹配,Servlet 引擎会调用 3.

当请求URL 为 /abc/a.do 时,1和4 都匹配,Servlet 引擎会调用 1.

当请求URL 为 /a.do 时,2和4 都匹配,Servlet 引擎会调用 2.

当请求URL 为 /xxx/yyy/a.do 时,2和4 都匹配,Servlet 引擎会调用 2.

7. Servlet 是一个供其他 Java 程序(Servlet 引擎)调用的 Java 类,它不能独立运行,它的运行完全由

Servlet 引擎来控制和调度。

8. 针对客户端的多次 Servlet 请求,通常情况下,服务器只会创建一个 Servlet 实例对象,也就是说

Servlet 实例对象一旦创建,它就会驻留在内存中,为后续的其它请求服务,直至 web 容器退出,

Servlet 实例对象才会销毁。

9. 在 Servlet 的整个生命周期内,Servlet 的 init 方法只被调用一次。

而对一个 Servlet 的每次访问请求都导致 Servlet 引擎调用一次 servlet 的service 方法。

对于每次访问请求,Servlet 引擎都会创建一个新的 HttpServletRequest 请求对象和一个新的

HttpServletResponse 响应对象,然后将这两个对象作为参数传递给它调用的 Servlet 的 service()

方法,service 方法再根据请求方式分别调用 doXXX 方法。

时间: 2024-08-01 06:32:44

[Java.Web] Servlet 的一些细节的相关文章

Java Web -- Servlet(1) 必备知识

学习Java WEB开发必备的基本概念: 1.WEB 本意是蜘蛛网和网的意思,在网页设计中我们称为网页的意思.现广泛译作网络.互联网等技术领域.表现为三种形式,即超文本(hypertext).超媒体(hypermedia).超文本传输协议(HTTP)等. 2.静态网页(可简单理解为html) 是指网页的内容是固定的,不会根据浏览器者的不同需求而改变.(实实在在保存在服务器上的文件) 3.动态网页 是指在接到用户访问要求后动态生成的页面,页面内容会随着访问时间和访问者发生变化(并不是独立存在于服务

JAVA WEB SERVLET 基础知识点

Servlet Servlet Servlet API 概述 Servlet 编写基础的Servlet应用程序 1编写和编译Servlet类 2应用程序的目录结构 3调用Servlet ServletRequest ServletResponse ServletConfig ServletContext GenericServlet 1 HTTPServlet 2 HttpServletRequest 3 HttpServletResponse 处理HTML表单 使用部署描述符 掌握Servle

Java Web servlet理解

一.有两种应用程序 1.桌面应用程序:需要下载,安装,更新等.如QQ,office等 2.web应用程序:就是我们开发的web项目,这不需要用户下载,只需要用户客户端联网,访问相应的互联网资源. 二.Http协议 HTTP是一个属于应用层的面向对象的超文本传输协议,基于TCP/IP协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.HTTP特点: (1)无连接:分为4个阶段:建立连接.发送请求.等待响应.关闭连接 优点:快速.简单.不占用网络服务器资源 缺点:速度由网络来决定,每次传输数据

Java Web -- Servlet(13)HttpServletRequest详解(获取请求数据、请求分派、请求域)(2)

                                    HttpServletRequest ---------------------------------------------------------------- (4)请求分派 Servlet API中定义了一个RequestDispatcher接口,俗称请求分派器. 它有两个方法 forward(ServletRequest request,ServletResponse response) include(Serv

Java Web -- Servlet(11) HttpServletResponse详解(重定向)

当Web服务器收到客户端的http请求,(在程序继承HttpServlet的前提下)容器在调用Servlet的doGet()或doPost()方法时,会针对每一次请求创建一个HttpServletRequest接口的实例和一个HttpServletResponse接口的实例,封装成参数传给doGet()或doPost()方法. request和response分别代表客户端对Web服务器的请求 和 服务器对客户端的响应. HttpServlet的继承结构如下: ServletResponse的常

Java Web -- Servlet(5) 开发Servlet的三种方法、配置Servlet详解、Servlet的生命周期(2)

三.Servlet的生命周期 一个Java servlet具有一个生命周期,这个生命周期定义了一个Servlet如何被载入并被初始化,如何接收请求并作出对请求的响应,如何被从服务中清除.Servlet的生命周期被javax.servlet.Servlet这个接口所定义. 所有的Java Servlet都会直接地或间接地执行javax.servlet.Servlet接口,这样它才能在一个Servlet引擎中运行. Servlet引擎是Web 服务器按照Java Servlet API定制的扩展.S

Java Web -- Servlet(4) 开发Servlet的三种方法、配置Servlet详解、Servlet的生命周期(1)

一.实现Servlet接口 通过实现Servlet接口来了解Servlet的生命周期 (1)以规范的形式创建一个web应用(即在webapps目录下创建一个web应用) 创建web应用 (2)classes目录下创建一个.java(该java文件为实现Servlet接口) 创建文件夹MyFirstServlet.java 代码如下: package com.focus; import javax.servlet.*; import javax.servlet.http.*; import jav

Java Web -- Servlet(9) Http协议详细分析--HTTP响应部分(Refresh、Content-Disposition、缓存例子)(2)

三.HTTP响应 一个HTTP响应代表服务器向客户端回送的数据,它包括: 一个状态行.若干消息头.以及实体内容,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开. (1)状态行 状态行用于描述服务器对请求的处理结果. (2)消息头 消息头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据. (3)实体内容 代表服务器向客户端回送的数据. 状态行 格式:HTTP版本号 状态码 原因叙述 举例:HTTP/1.1 2

Java Web -- Servlet(10) 中文乱码处理专题

一.产生乱码的原因: 当浏览器通过http协议访问web服务器时,假设此时浏览器的编码是utf-8,当把请求发给web服务器时,web服务器却以ISO-8859-1编码接收,所以就产生了乱码. //设置web服务器接收时,以utf-8形式接收,如下: request.setCharacterEncoding("utf-8"); //编码方式设置和浏览器一样(还有常见的gbk.gb2312) //设置浏览器显示时,以utf-8显示. response.setContentType(&qu