Servlet的一些细节

1.  Servlet程序必须映射到一个URL地址

由于客户端是通过URL访问web服务器资源,所以Servlet程序必须映射到一个URL地址。这个工作在web.xml文件中使用<servlet>元素和<servlet-maping>元素完成

<servlet>用于注册Servlet,<servlet-name>和<servlet-Class>分别用于设置Servlet的注册名称和完整类名

一个<servlet-maping>元素用于映射一个已经注册的Servlet的一个对外访问路径,子元素<servlet-name>和<url-pattern>分别指定Servlet的注册名称和对外访问路径

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  <servlet>
    <servlet-name>ServletDemo</servlet-name>
    <servlet-class>cn.school.ServletDemo</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>ServletDemo2</servlet-name>
    <servlet-class>cn.school.ServletDemo2</servlet-class>
  </servlet>

  <servlet-mapping>
     <servlet-name>ServletDemo</servlet-name>
     <url-pattern>/ServletDemo</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ServletDemo2</servlet-name>
    <url-pattern>/servlet/ServletDemo2</url-pattern>
  </servlet-mapping>

</web-app>

对于第一个程序,使用http://localhost:8080/D623/ServletDemo

对于第二个程序,  使用http://localhost:8080/D623/servlet/ServletDemo2

 

2. 同一个Servlet可以被映射到多个URL地址上去

  即是一个Servlet注册名可以对应多个<servlet-mapping>元素

也就是说可以有多个地址访问同一个Servlet程序

  <servlet>
    <servlet-name>ServletDemo</servlet-name>
    <servlet-class>cn.school.ServletDemo</servlet-class>
  </servlet>

  <servlet-mapping>
     <servlet-name>ServletDemo</servlet-name>
     <url-pattern>/my1/ServletDemo</url-pattern>
  </servlet-mapping>

    <servlet-mapping>
     <servlet-name>ServletDemo</servlet-name>
     <url-pattern>/my2/ServletDemo</url-pattern>
  </servlet-mapping> 

   <servlet-mapping>
     <servlet-name>ServletDemo</servlet-name>
     <url-pattern>/my3.html</url-pattern>
  </servlet-mapping>

注意最后一个访问地址是http://localhost:8080/D623/my3.html

在地址栏中出现这样的地址看起来好像是一个静态页面,其实Selvlet是动态页面,这就是常说的伪静态

3. Servlet映射地址可以使用* 通配符

但只有两种固定格式

*.扩展名 或者 以 /* 结尾

  <servlet>
    <servlet-name>ServletDemo</servlet-name>
    <servlet-class>cn.school.ServletDemo</servlet-class>
  </servlet>

  <servlet-mapping>
     <servlet-name>ServletDemo</servlet-name>
     <url-pattern>/ServletDemo</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ServletDemo</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
    <servlet-name>ServletDemo</servlet-name>
    <url-pattern>*.dd</url-pattern>
  </servlet-mapping>

  通配符的意思是可以输入任何字符

注意一点,当修改web.xml时,不需要重新生成web应用,web服务器会自动监测web.xml的改动

Tomcat服务器的conf文件夹下context.xml文件有一句

   <WatchedResource>WEB-INF/web.xml</WatchedResource>

4.  最先匹配最像的路径

如下映射关系

Servlet1 映射到 /abc/*

Servlet2 映射到 /*

Servlet3 映射到 /abc

Servlet4 映射到 *.do

当请求URL为 /abc/a.html 时,匹配Servlet1

当请求URL为 /abc 时,匹配Servlet3

当请求URL为/abc/a.do 时,匹配Servlet1 (*在前面的方式优先级最低

当请求URL为 /a.do 时 匹配Servlet2

Servlet的一些细节

时间: 2024-08-05 01:35:43

Servlet的一些细节的相关文章

Servlet的一些细节(2)

1. Servlet的创建时间 Servlet是不能单独运行,调用它的叫做Servlet引擎,或者叫做web服务器 针对客户端的多长Servlet请求,通常情况下,服务器只会创建一个Servlet实例对象,也就是说Servlet实例对象一旦创建,它就会驻留在内存中,为后续的其他请求服务,直至web容器退出,Servlet实例对象才会销毁. Servlet对象一旦被创建,就会执行init方法,一旦销毁就会执行destroy方法.可以通过这两个方法观察Servlet对象的生命周期 所以如果编写了一个

servlet必知细节(一)

servlet必知细节(一) 今天复习了一下servlet,有过一些编程经验后,与最初学习servlet相比,对servlet理解的角度不同了,最初只是学习了如何写一个servlet,api怎么用,现在从更深处了解了servlet. 1.servlet接口实现关系 HttpServlet继承GenericServlet,GenericServlet实现Servlet接口. 2.生命周期方法 其中Servlet接口有几个生命周期方法: init(),service(),destroy()为三个生命

servlet必知细节(二)--servlet执行过程

servlet必知细节(二)--servlet执行过程 我们知道,servlet没有main函数,那么,servlet是怎么调用的呢? 实际上,servlet 是由tomcat调用的,tomcat调用servlet程序执行. 由调用栈可以看到,当一个请求过来时,Bootstrap类的main方法调用. 当用户在客户端发起url请求 :http://localhost/servletDemo/hello的时候,servlet的执行过程是怎样的? 上面学习,如果有错误,希望大家提出,共同提高,谢谢!

servlet必知细节(三)-- DefaultServlet

servlet必知细节(三)-- DefaultServlet 缺省servlet:org.apache.catalina.servlets.DefaultServlet,作用是处理其他servlet处理不到的请求 我们知道,在我们工程的web.xml中,会配置servlet映射,但是有些访问无法找到映射,如一些静态图片,一些js文件等,那服务器是如何返回给客户端的呢? 要回答上面的问题,我们必须详细了解下DefaultServlet,下面我们看tomcat的官方解释. 1.什么是Default

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

[Java.Web] Servlet 的一些细节

本文来自 传智播客视频PPT 1. 由于客户端是通过 URL 地址访问 web 服务器中的资源,所以 Servlet 程序若想被外界访问,必须把 servlet 程序映射到一个 URL 地址上,这个工作在 web.xml 文件中使用 <servlet> 元素和 <servlet-mapping> 元素完成. 2. <servlet> 元素用于注册 servlet ,它包含有两个主要的子元素:<servlet-name> 和<servlet-class&

servlet中的细节

Get方法有大小限制:1024个字符.这些信息使用 Query_String头传递,并通过Query_String环境变量访问.Post方法:请求体信息使用FromData头传递.读取所有表单参数:getParamterNames()方法.枚举类型.遍历枚举:使用hasMoreElements()来确定何时停止循环,使用nextElement()方法来获取每个参数名称. Servlet请求:String host = req.getHeader("Host"); // localhos

2016-2-1 Servlet细节

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

Servlet上

JavaWeb应用的概念 Java Web应用由一组Servlet.HTML页.类.以及其它可以被绑定的资源构成.它可以在各种供应商提供的实现Servlet规范的 Servlet容器 中运行. Java Web应用中可以包含如下内容:Servlet; JSP; 实用类; 静态文档如HTML.图片等; 描述Web应用的信息(web.xml) Servelt 与 Servlet 容器 Servlet容器为JavaWeb应用提供运行时环境,它负责管理Servlet和JSP的生命周期,以及管理它们的共享