首页 > 代码库 > 11_Servlet的一些细节知识点
11_Servlet的一些细节知识点
【Servlet的细节知识点1-----一个Servlet映射到多个URL】
同一个Servlet可以被映射到多个URL上,即多个<servlet-mapping>元素的<servlet-name>子元素的设置值可以是同一个Servlet的注册名。
如下:
[ 工程截图 ]
[ web.xml ]
<?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" id="WebApp_ID" version="3.0"> <display-name>HelloServlet</display-name> <servlet> <servlet-name>ServletDemo01</servlet-name> <servlet-class>com.Higgin.servlet.ServletDemo01</servlet-class> </servlet> <servlet-mapping> <servlet-name>ServletDemo01</servlet-name> <url-pattern>/higgin.html</url-pattern> <!--伪html--> </servlet-mapping> <servlet-mapping> <servlet-name>ServletDemo01</servlet-name> <url-pattern>*.do</url-pattern> <!-- 匹配所有后缀为.do的URL --> </servlet-mapping></web-app>
[ ServletDemo01.java ]
package com.Higgin.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;//@WebServlet("/ServletDemo01")public class ServletDemo01 extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("ServletDemo01----doGet"); System.out.println(request.getRequestURL()); //获取客户端发出请求的URL } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }}
[ 运行结果 ]
1.浏览器URL输入 http://localhost:8080/HelloServlet/higgin.html
2.浏览器URL输入http://localhost:8080/HelloServlet/adfcvsd.do (只要是.do后缀)
【Servlet的细节知识点2-----通配符*】
Servlet映射到url中可以使用*通配符,但是只能有两种固定的格式:
格式一: *.扩展名 例子: *.do
格式二: 正斜杠“/”开头并以"/*"结尾 例子: /action/*
【Servlet的细节知识点3-----在修改web.xml时,无需重启TomCat的原因】
我们打开Tomcat服务器所在的conf/context.xml
<WatchedResource>WEB-INF/web.xml</WatchedResource>这句配置保证JavaWeb工程在web.xml被修改时,tomcat服务器会自动加载修改后的web.xml。
【Servlet的细节知识点4-----关于映射关系再深入】
【Servlet的细节知识点5-----Servlet内各个方法调用细节】
Servlet是一个供其它java程序(Servlet引擎)调用的Java类,它不能独立运行,它的运行由Servlet引擎来控制和调度。
针对客户端的多次Servlet请求,通常情况下,服务器只会创建一个Servlet实例对象,也就是说Servlet实例对象一旦创建,它就会驻留在内存中,为后续的其它请求服务,直至web容器退出,Servlet实例对象才会被销毁。
在Servlet的整个生命周期内,Servlet的init方法只被调用一次。
而对于一个Servlet的每次访问请求都导致Servlet引擎调用一次Servlet的service()方法。
对于每次访问请求,Servlet引擎都会创建一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给它调用的Servlet的service()方法,service()方法再根据请求方式分别调用doXXX方法。
11_Servlet的一些细节知识点