Servlet的生命周期

<servlet-mapping>和<servlet>

  • Web应用的用户是通过指定浏览器中URL地址来访问Web应用提供的静态或者是动态资源,如果Servlet想被客户访问,必须配置特定Servlet的访问路径,这个工作在web.xml里通过配置servlet和servlet-mapping来实现。<servlet>用来指定工程中class的位置,<servlet-mapping>指定特定名字servlet的访问路径。
  • 如果某个Servlet的url-pattern是"/",该Servlet就是缺省servlet,否则系统会默认展示index.jsp, 如果index.jsp也没有启动该应用就会报找不到资源(没有默认的缺省文件)。配置了缺省路径的情况下,如果用户请求一个系统不存在的URL,会自动的调用缺省的url对应的servlet进行处理。
  • 除了用户自定义的缺省Servlet,Tomcat还提供一个缺省Servlet帮助查找静态资源,访问Web应用中某个静态文件,本质上也是通过访问Tomcat缺省Servlet来查找和展示的,这个缺省的Servlet在<tomcathome>\conf\web.xml中配置,对应的类是org.apache.catalina.servlets.DefaultServlet.
  • 同一个Servlet可以被映射到多个URL上,即多个<servlet-mapping>引用同一个<servlet>。
  • <url-pattern>可以有扩展名也可以没有,这就是为什么有的网页带.html, 有的网页不带.html
  • <url-pattern>可以使用*通配符,但是只能有两种固定格式,一种是“ *.扩展名”结束(eg: *.do, /XXX/*.html),一种是以“/开头,以/*结尾”(eg:/XXX/*, /XXX/XXX/*)。当有通配符时,如果用户输入的路径有多个对应的url-pattern, 会自动寻找最精确匹配的url-pattern, 并调用相应的servlet进行处理。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<servlet>
  <servlet-name>FirstHttpServlet</servlet-name>
  <servlet-class>servlet.basic.FirstHttpServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>FirstHttpServlet</servlet-name>
  <url-pattern>/helloServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
  <servlet-name>FirstHttpServlet</servlet-name>
  <url-pattern>/helloServlet/</url-pattern>
</servlet-mapping>
<servlet-mapping>
  <servlet-name>FirstHttpServlet</servlet-name>
  <url-pattern>/helloServlet.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
  <servlet-name>FirstHttpServlet</servlet-name>
  <url-pattern>/helloWeb/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
  <servlet-name>FirstHttpServlet</servlet-name>
  <url-pattern>*.html</url-pattern>
</servlet-mapping>
</web-app>

路径匹配很重要, 多少一个字符("/")都可能导致查找不到对应的资源

中文乱码

JavaWeb基础: 第一个Web应用(Servlet)的更多相关文章

  1. JavaWeb从0开始学(一)-----搭建第一个Web应用程序与JSP工作原理

    以往学习的时候大多是看完书或者看完视频,动手实践一下就OK了.然而过了一段时间我发现东西都忘差不多了,需要复习才能重新掌握.现在开始学习JavaWeb了,我将在这里记录自己的学习的一点一滴,不仅便于自 ...

  2. 基于servlet实现一个web框架

    servlet作为一个web规范.其本身就算做一个web开发框架,可是其web action (响应某个URI的实现)的实现都是基于类的,不是非常方便,而且3.0之前的版本号还必须通过web.xml配 ...

  3. JavaWeb创建一个公共的servlet

    JavaWeb创建一个公共的servlet,减去繁琐的doget.dopost,好好看好看学. 对于初学者来说,每次前端传数据过来就要新建一个类创建一个doget.dopost方法,其实铁柱兄在大学的 ...

  4. 使用java基础实现一个简陋的web服务器软件

    使用java基础实现一个简陋的web服务器软件 1.写在前面 大学已经过了一年半了,从接触各种web服务器软件已经有一年多了,从大一上最开始折腾Windows电脑自带的IIS开始,上手了自己的第一个静 ...

  5. JavaWeb基础总结:Servlet专题

    最近工作中有部分整改老接口的任务,大部分与Spring的拦截器,Tomcat相关,改到一些底层的代码发现,对基础J2EE的知识有些遗忘,需要频繁查阅,索性从头系统的整理一下Servlet和Filter ...

  6. servlet的一个web容器中有且只有一个servlet实例或有多个实例的理解1

    servlet的一个web容器中有且只有一个servlet实例或有多个实例的理解 (2013-06-19 19:30:40) 转载▼     servlet的非线程安全,action的线程安全 对提交 ...

  7. javaWeb基础核心之一Servlet

    既然是做JAVA开发的,先从一些基本的整理起来,算是知识回顾,加深记忆. 第一篇想到那理到哪,可能有点乱,不是太会排版,见谅,估计可能也就我自己看的懂. servlet在百度百科上的定义是这样的: S ...

  8. javaWeb学习总结(3)- Servlet基础

    Servlet的应用 Servlet是一种独立于平台和协议的服务器端的Java应用程序,可以生成动态的web页面.它担当Web浏览器或其他http客户程序发出请求. 与http服务器上的数据库或应用程 ...

  9. Eclipse创建第一个Servlet(Dynamic Web Project方式)、第一个Web Fragment Project(web容器向jar中寻找class文件)

    创建第一个Servlet(Dynamic Web Project方式) 注意:无论是以注解的方式还是xml的方式配置一个servlet,servlet的url-pattern一定要以一个"/ ...

随机推荐

  1. Repeater导航菜单DataList产品展示

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="JD.aspx.cs&quo ...

  2. 在包a中编写一个类Father,具有属性:年龄(私有)、姓名(公有); 具有功能:工作(公有)、开车(公有)。 在包a中编写一个子类Son,具有属性:年龄(受保护的)、姓名; 具有功能:玩(私有)、学习(公有)。 最后在包b中编写主类Test,在主类的main方法中测试类Father与类Son。

    package a; public class Father { public String name; private int age; public Father(String name) { t ...

  3. uTenux-OS-Task再探

    在第一节中我由于没有拿到开发板,所以被迫无奈,只能将uTenux操作系统移植到手中的一块STM32F103的开发板上,当时对于uTenux的理解还不够,只是看了一下文件架构和效果,虽然移植成功了,但是 ...

  4. uTenux——HelloWord

    由以上几节的学习,我们从这一节开始真正的以实例讲解uTenux\AT91SAM3S4C开发套件的应用.如其他的软件程序开发一样,uTenux\AT91SAM3S的学习我们也要从第一个程序代码-Hell ...

  5. javascript/jquery判断是否为undefined或是null!

    var exp = undefined; if (typeof(exp) == "undefined"){    alert("undefined");} 注意 ...

  6. C++实现链式栈,运用模板,界面友好,操作方便,运行流畅

    //.h文件 #ifndef STACK_H #define STACK_H #include<iostream> #include<iomanip> using namesp ...

  7. Cheatsheet: 2013 11.01 ~ 11.11

    Other Back To Basics: Hashtables – Part2 How To Make A Game Part 1:Picking a Framework Modern Garbag ...

  8. SDP学习笔记

    一.SDP规范了回话描述的格式,一般结合会话协议共同工作. 常见的会话传送协议包括:SAP(Session Announcement Protocol 会话公告协议),SIP,RTSP,HTTP,和使 ...

  9. VBA中方法的函数式调用和过程式调用的差别

    因见到有人求助批量设置工作簿中的超链接,尝试写了一段代码: Sub AddHyperlinks() Dim strName As String, source As String, target As ...

  10. HTML笔记(四) 框架

    通过框架,可以在一个窗口显示多个页面.而所谓的框架,就是指每一份HTML文档. 框架结构标签<frameset> 定义如何将窗口分割为框架. frameset定义了一系列的行列. rows ...