[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 方法。
10. 当多个客户端并发访问同一个 Servlet 时,web 服务器会为每一个客户端的访问请求创建一个线程,
并在这个线程上调用 Servlet 的 service 方法,因此 service 方法内如果访问了同一个资源的话,就有可能
引发线程安全问题。
11. 如果某个 Servlet 实现了 SingleThreadModel 接口,那么 Servlet 引擎将以单线程模式来调用其 service 方法。
12. SingleThreadModel 接口中没有定义任何方法,只要在 Servlet 类的定义中增加实现 SingleThreadModel 接口
的声明即可。
13. 对于实现了 SingleThreadModel 接口的 Servlet,Servlet 引擎仍然支持对该 Servlet 的多线程并发访问,
其采用的方式是产生多个 Servlet 实例对象,并发的每个线程分别调用一个独立的 Servlet 实例对象。
14. 实现 SingleThreadModel 接口并不能真正解决 Servlet 的线程安全问题,因为 Servlet 引擎会创建多个 Servlet
实例对象,而真正意义上解决多线程安全问题是指一个 Servlet 实例对象被多个线程同时调用的问题。
事实上,在 Servlet API 2.4 中,已经将 SingleThreadModel 标记为 Deprecated (过时的)。
[Java.Web] Servlet 的一些细节的更多相关文章
- Java Web Servlet知识点讲解(一)
一.Web应用架构 如图所示: HTTP协议:一个简单的请求一响应协议,通常运行在TCP之上,它指定了客户端可能发送给服务器什么样的信息以及得到什么样的响应. JDBC:Java语言中用来规范客户端程 ...
- java web Servlet开发(一)
一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...
- Java Web -- Servlet(1) 必备知识
学习Java WEB开发必备的基本概念: 1.WEB 本意是蜘蛛网和网的意思.在网页设计中我们称为网页的意思. 现广泛译作网络.互联网等技术领域.表现为三种形式,即超文本(hypertext).超媒体 ...
- java web servlet
一.什么是Servlet Servlet是一种小型的Java程序,它扩展了Web服务器的功能.作为一种服务器端的应用,他是运行在Servlet容器当中,例如Tomcat就是一种流行的Servlet容器 ...
- 天坑 之 java web servlet+jsp项目 配置后 404 (MyEclipse转eclipse)
最近搞一个自己的博客系统玩,用了servlet+jsp,结果发现了两个大问题: 1.无法 Export 出 WAR文件: 2.生成WAR,放置到TOMCAT的 webapps目录后,http://lo ...
- Java Web -- Servlet(5) 开发Servlet的三种方法、配置Servlet具体解释、Servlet的生命周期(2)
三.Servlet的生命周期 一个Java servlet具有一个生命周期,这个生命周期定义了一个Servlet怎样被加载并被初始化,怎样接收请求并作出对请求的响应,怎样被从服务中清除.Servlet ...
- java web Servlet开发(二)
一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...
- java Web servlet简介及其生命周期
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容. 我们可 ...
- 深入理解Java Web——Servlet
1.概述 狭义上看,是java的一个接口. 广义上看,任何直接或间接实现了Servlet接口的类. 2.核心对象 下面就是Servlet接口的内容: public abstract interface ...
随机推荐
- OpenGL实现相机视频NV21格式转RGB格式
笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解 ...
- 深入理解Hystrix之文档翻译
转载请标明出处: http://blog.csdn.net/forezp/article/details/75333088 本文出自方志朋的博客 什么是Hystrix 在分布式系统中,服务与服务之间依 ...
- EasyPusher/EasyDarwin支持H.265 RTSP/RTP直播推流与分发播放
前言描述 随着大屏时代和高清时代的到来,人们已经不再满足于VGA.CIF这种小分辨率了,取而代之的是720P.1080P.4K级的视频传输,虽然我们国家的基础带宽一直在上升,但普遍情况下,传输高清视频 ...
- GitHub原来也可以用SVN客户端的.
不知道是不是自己真的太宅了. 一直以为只能用git client 来clone github工程的. 偶然今日发现还可以用 SVN 来下载的. 果断一试. 太好用了. 这回windows 上不用纠结 ...
- vue自定义指令v-scroll(directive)
vue开发中,很多地方如果说都用到了某一方法,我们就可以进行指令化封装,通过自定义指令来实现这里通过两个例子说明vue-Directive的使用 1.v-focus 主要用来实现页面加载进来的时候文本 ...
- erl_0016 《硝烟中的erlang》 读书笔记003 “error_logger 爆炸”
error_logger 爆炸 具有讽刺意味的是,负责错误日志的进程竟然是最为脆弱的之一.在Erlang的缺省安装中,error_logger39负责记录日志(写入磁盘或者发送到网络上),它的速度要比 ...
- 线性回归 Linear regression(4) 局部加权回归
这篇文章将介绍过拟合和欠拟合的概念,并且介绍局部加权回归算法. 过拟合和欠拟合 之前在线性回归中,我们总是将单独的x作为我们的特征,但其实我们可以考虑将,甚至x的更高次作为我们的特征,那么我们通过线性 ...
- HDU - 6513 Reverse It (SYSU校赛C题)(组合数学+容斥)
题目链接 题意:给定一个n*m的矩阵,可以选择至多两个子矩阵将其反转,求能形成多少种不同的矩阵. 任选一个矩阵有$C_{n+1}^{2}C_{m+1}^{2}$种方法,任选两个不同的矩阵有$C_{C_ ...
- Git-Svn 建立工作目录
使用Git-SVN 建立工作目录 GIT-SVN可以以SVN的版本为基础, 实现”私有”的版本管理功能. 这样一些不成熟但又需要记录的版本就不必提交到SVN上, 而只在自己本地私有的版本里出现. 下面 ...
- flash 一直在最上方,z-index无效
设置embed的透明度 wmode="transparent" <embed src="http://player.youku.com/player.php/sid ...