Servlet细节

1.一个已经注册的Servlet可以被多次映射

  <servlet>
    <servlet-name>MyServlet1</servlet-name>
    <servlet-class>com.hsin.servlet.MyServlet1</servlet-class>
  </servlet>
  <!--第一个映射-->
  <servlet-mapping>
    <servlet-name>MyServlet1</servlet-name>
    <url-pattern>/MyServlet1</url-pattern>
  </servlet-mapping>
  <!--第二个映射-->
  <servlet-mapping>
    <servlet-name>MyServlet1</servlet-name>
    <url-pattern>/MyServlet1Again</url-pattern>
  </servlet-mapping>

2.后缀名是 html 不一定就是 html,可能是假象

<url-pattern>/index.html</url-pattern>

3.当映射一个servlet时候,可以多层

<url-pattern>/servlet/index.html</url-pattern>

4.使用通配符在servlet映射到URL中

第一种格式: *.扩展名 , 比如 *.do 、 *.ss

<url-pattern>*.do</url-pattern>

第二种格式:以 / 开头,以 /* 结尾 , 比如  /* 、  /news/*

<url-pattern>/*</url-pattern>
<url-pattern>/news/*</url-pattern>

通配符练习题:

l  Servlet1 映射到 /abc/*

l  Servlet2 映射到 /*

l  Servlet3 映射到 /abc

l  Servlet4 映射到 *.do

问题(面试题):

l  当请求URL为“/abc/a.html”,“/abc/*”和“/*”都匹配,哪个servlet响应

Servlet引擎将调用Servlet1。

l  当请求URL为“/abc”时,“/abc/*”和“/abc”都匹配,哪个servlet响应

Servlet引擎将调用Servlet3。

l  当请求URL为“/abc/a.do”时,“/abc/*”和“*.do”都匹配,哪个servlet响应

Servlet引擎将调用Servlet1

l  当请求URL为“/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应

Servlet引擎将调用Servlet2。

l  当请求URL为“/xxx/yyy/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应

Servlet引擎将调用Servlet2。

在匹配的时候,要参考的标准:

(1)  看谁的匹配度高,谁就被选中

(2)  *.do 的优先级最低

5.Servlet单例问题

当Servlet被第一次访问后,就被加载到内存,以后该实例对各个请求服务即在使用中是单例。

因为 Servlet是单例,因此会出现线程安全问题,比如:售票系统. 如果不加同步机制,则会出现问题

(1)如果一个变量需要多个用户共享,则应当在访问该变量的时候,加同步机制

synchronized (对象){

       //同步代码
}

(2)如果一个变量不需要共享,则直接在 doGet() 或者 doPost()定义(局部变量)这样不会存在线程安全问题

6.<load-on-startup>

1)load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。

2)它的值必须是一个整数,表示servlet应该被载入的顺序

3)当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;

4)当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。

5)正数的值越小,该servlet的优先级越高,应用启动时就越先加载。

6)当值相同时,容器就会自己选择顺序来加载。

所以,<load-on-startup>x</load-on-startup>,中x的取值1,2,3,4,5代表的是优先级,而非启动延迟时间。

时间: 2024-10-18 12:25:04

Servlet细节的相关文章

2016-2-1 Servlet细节

Servlet的一些细节(韩顺平老师视频讲解)(1)由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序想要被外界访问,必须把servlet程序映射到一个URL地址上.这个工作在web.xml文件中使用<servlet> & <servlet-mapping> <servlet>        用于注册Servlet,它包含两个主要的子元素<servlet-name> & <servlet-class>  

Servlet细节问题

(1)一个<servlet>可以对应多个<serlvet-mapping>,从而一个Servlet可以有多个路径来访问. (2)url-partten中的路径可以使用*匹配符号进行配置, 1.注意,只能是/开头/*结尾,或*.后缀这两种方式 <url-pattern>/MyFirstServlet/my/* </url-pattern> http://localhost:8080/MyFirstServlet/my/abcldefqdf12   <ur

Servlet细节处理

1.Servlet的线程安全问题 尽管servlet的工作效率高,但是线程也是不安全的,因为一个类型的Servlet只有一个实例对象,那么就有可能会出现一个Servlet同时处理多个请求 解决方案:所以我们不应该在Servlet中随便创建成员变量,因为可能会存在一个线程对这个成员变量进行写操作,另一个线程对这个成员变量进行读操作. 2.让服务器在启动之前就初始化(创建)Servlet 在servlet的配置文件中使用<load-on-startup>标签 <?xml version=&q

Servlet的一些细节--学习笔记

Servlet细节1)浏览器访问的url-pattern只是一个符合格式的任意字符串,以/开头2)一个Servlet的url-pattern可以是1个或多个,有二种形式;a).xxb)/xx/注意:/不能一起直接使用3)/和.do的映射关系,.do最后4)程序员编写的Servlet其实是由tomcat容器中的Servlet引擎来处理的,引擎会产生对应的HttpServletRequest和HttpServletResponse对应传入到Servlet的doXxxx()方法中5)通过在web.xm

Servlet技术之——概述、实现、细节、获取资源、ServletConfig、ServletContext

Servlet概述.实现.细节.获取资源.ServletConfig.ServletContext (一) Setvlet基本概述 (1) 什么是Servlet ? Servlet(Server Applet)是JavaServlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容是 JavaWeb中,我们将会接触到三大组件(Servlet.Filter.Listener),Servlet由服务器

servlet及编程规范

servlet规范 一 servlet简介 servlet是运行在服务器中的动态资源,能接收用户的请求,发出响应. 二 servlet的执行过程 1.在地址栏输入访问的路径 2.tomcat解析路径找到要访问的APP文件夹,找到web.xml文件 3.根据访问的url查找文件映射 找到配置的sevlet名称 4.根据sevelet名称找到对应的类名 5.运用反射机制 实例化servlet类 6.创建request 和 response 对象 7.调用service方法 三 servlet的生命周

JavaWeb学习总结(二) —— Servlet

一.Servlet概述 1. 什么是Servlet Servlet是JavaWeb的三大组件之一,它属于动态资源.Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要: 接收请求数据: 处理请求: 完成响应. 例如客户端发出登录请求,或者输出注册请求,这些请求都应该由Servlet来完成处理!Servlet需要我们自己来编写,每个Servlet必须实现javax.servlet.Servlet接口. 2. 实现Servlet的方式 实现Ser

初窥Servlet

1. Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术.sun公司在其API中提供了一个servlet接口,用户若想要发一个动态web资源,只需要完成以下两步即可: 1)编写一个servlet,即实现servlet接口的Java类: 2) 把开发好的servlet部署到web服务器中. Servlet接口定义了所有servlet必须实现的方法.一个servlet是运行在web服务器中的一个小java程序,servlet通过HTTP协议接收并响应web客户端发来

servlet基础,如何实现一个servlet,servletConfig,HTTPServlet,ServletContext

1.什么是servlet? *servlet 服务器端的小程序. *干什么用的?处理客户端请求的小程序 *JavaEE三大组件之一 *Servlet *Filter 过滤器 *listener 监听器 servlet流程 1.请求服务器 2.创建req,resp两个对象 3.去web.xml中寻找servlet 4.找到之后返回servlet信息 5.服务器去判断当前servlet实例是否已经被创建过呢? 6.没有创建过(服务器会创建一个实例(init)) 7.服务器拿着req,resp 去调用