Servlet生命周期、配置Servletcontext 对象


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>

欢迎页面

就是当只访问项目名时 给出的静态页面

如果上面图找不到,就会去Tomcatweb.xml里面找 在找不到就会出404

优质内容筛选与推荐>>
1、月薪3万+的大数据人都在疯学Flink,为什么?
2、什么是socket
3、蜂鸣器
4、什么是Node?
5、WCF Data Service文章列表


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn