zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    MC9S12 硬件设计
    ESD
    选用与使用稳压二极管的介绍
    MOSFET 栅极电阻作用及其选型
    orcad常用库文件介绍
    开关电源和LDO的区别
    续流二极管的作用及选型
    为什么大电容滤低频小电容滤高频的问题
    Java常用API——时间类
    Idea问题:“marketplace plugins are not loaded”解决方案
  • 原文地址:https://www.cnblogs.com/zs0322/p/11106180.html
Copyright © 2011-2022 走看看