summarize
Servlet是服务端的Java小程序,它是sun公司提供的一套接口代码,专门处理客户端请求、响应给浏览器的动态资源的,
Servlet的API(生命周期)
(1)Servlet接口有3个方法
1)init(ServletConfig config):Servlet对象一创建就执行,只执行一次
ServletConfig :servlet对象的配置信息
package com.oracle.demo01; import java.io.IOException; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class HelloServlet implements Servlet{ public ServletConfig getServletConfig() { return null; } public String getServletInfo() { return null; } // 第一次请求创建 public void init(ServletConfig arg0) throws ServletException { System.out.println("Servlet被创建了"); // 1.获取初始化参数 String value=arg0.getInitParameter("name"); System.out.println("初始化参数为"+value); // 2.获取Servlet名字 String servletName=arg0.getServletName(); System.out.println("servletName"); // 3.获取ServletContext ServletContext context=arg0.getServletContext(); // System.out.println("context"); } // 请求一次执行一次 public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { System.out.println("Servlet被请求了"); } // 当服务器关闭时就会执行 public void destroy() { System.out.println("Servlet销毁了"); } }
2)service(ServletRequest request,ServletResponse response)何时执行:每次请求都会执行
ServletRequest :请求 认为ServletRequest 内部封装的是 http请求的信息
ServletResponse :要封装响应的信息
3)destroy() :servlet销毁时执行
(1)Servlet的生命周期(面试题)
1)Servlet何时创建:默认(服务器启动时)第一次访问servlet时创建该对象
2)Servlet何时销毁:服务器关闭servlet就销毁了
3)每次访问必执行的方法:service(ServletRequest req, ServletResponse res)方法
问题:对XXXServlet进行了10次访问,init(),destory(),service(),doGet(),doPost() 一共执行力多少次?request对象创建几个?response创建几个?
init=1次,destory=1次,service=10次,request和response=10次
(2)HttpServlet类的方法
1)init()
2)doGet(HttpServletRequest request,HttpServletResponse response)
3)doPost(HttpServletRequest request,HttpServletResponse response)
4)destroy()
三、Servlet的配置
基本配置
其中url-pattern的配置方式:
1)完全匹配 访问的资源与配置的资源完全相同才能访问到
2)目录匹配 格式:/虚拟的目录../* *代表任意
3)扩展名匹配 格式:*.扩展名
注意:第二种与第三种不要混用 /aaa/bbb/*.abcd(错误的)
1.服务器启动实例化Servlet配置
Servlet的何时创建:默认第一次访问时创建
为什么是默认?
servlet配置时 加<load-on-startup> servlet在服务器启动时创建
2.缺省Servlet(一般不配)
将url-pattern配置一个/,代表servlet是缺省的
what缺省的servlet? 当访问资源地址所有的servlet都不匹配时 , 缺省的servlet负责处理,其实web应用中所有的资源的响应都是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_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>WEB03</display-name> <!-- Servlet类配置 --> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>com.oracle.demo01.HelloServlet</servlet-class> <init-param><!-- init:初始化 parm:参数 --> <param-name>name</param-name><!-- 参数名 --> <param-value>袁一鸣</param-value><!-- 参数值 --> </init-param> <!-- 设置该Servlet在启动时创建对象(值越小优先级越高) --> <!-- <load-on-startup>3</load-on-startup> --> </servlet> <!-- Servlet虚拟路径配置 mapping:映射--> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <!-- 完全匹配:访问资源与配置资源完全相同 --> <!-- <url-pattern>/HelloServlet</url-pattern> --> <!-- 目录匹配 *代表任意 --> <!-- <url-pattern>/a/b/c/*</url-pattern> --> <!-- 扩展名匹配 *. --> <!-- <url-pattern>*.jpg</url-pattern> --> <!-- 缺省Servlet配置 --> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> </web-app>
欢迎页面
就是当只访问项目名时 给出的静态页面
如果上面图找不到,就会去Tomcat的web.xml里面找 在找不到就会出404