servlet生命周期、servletconfig、servletcontext、导入项目

servlet的生命周期:

/*
    Servlet的生命周期:Servlet对象从被创建到被销毁的过程!
    当我们第一次访问Servlet时,调用方法执行顺序如下:
    1.构造器
    2.init()
    3.service()

    再次刷新访问时,只会调用
    service()方法

    当项目卸载时,调用
    destroy()方法
*/

==========================

/*
    Servlet的生命周期方法
    1.构造器
    构造器用来创建Servlet的对象,Servlet第一次接收请求时调用,只调用了一次。
    构造器只调用了一次,说明Servlet是单例,以多线程形式去调用service()方法
    servlet不是线程安全,所以尽量不要在service()方法中操作全局变量。


     2.init()
     构造器被调用后紧接着被调用,init方法用来对Servlet进行初始化操作,只调用了一次。


     3.service()
     每次处理请求的时候service()方法都会被调用,会被调用多次。

      4.destroy()
      web项目卸载时调用,用来在对象被销毁前做一些收尾工作。只会调用一次。
*/

===============================
HelloServlet.java

public class HelloServlet implements Servlet {

    public HelloServlet() {
        System.out.println("构造器...");
    }

    @Override
    public void init(ServletConfig config) throws ServletException {

        System.out.println("init方法被调用。。。");

    }

    @Override
    public ServletConfig getServletConfig() {

        System.out.println("getServletConfig方法被调用。。。");

        return null;
    }

    /**
     * ServletRequest 封装的是浏览器发送给服务器请求报文
     * ServletResponse 封装的是服务器发送给浏览器响应报文
     */
    @Override
    public void service(ServletRequest req, ServletResponse res)
            throws ServletException, IOException {

        /*//向控制台输出一个语句
        System.out.println("你好! Servlet");

        //给浏览器发送一个信息
        //通过response对象获取一个输出流
        PrintWriter out = res.getWriter();
        //通过out可以向浏览器发送信息
        out.print(new Date());*/

        System.out.println("service方法被调用。。。");

    }

    @Override
    public String getServletInfo() {

        System.out.println("getServletInfo方法被调用。。。");


        return null;
    }

    @Override
    public void destroy() {
        System.out.println("destroy方法被调用。。。");
    }


}

==========================
配置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_2_5.xsd"
    id="WebApp_ID" version="2.5">
    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>com.atguigu.servlet.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/HelloServlet</url-pattern>
    </servlet-mapping>
</web-app>

=====================
servletconfig:

/**
         * 一个Servlet都有他唯一对应的ServletConfig
         * 
         * ServletConfig
         * 代表:封装的就是Servlet的配置信息,封装的就是servlet标签中的聂荣
         * 获取:该对象由服务器创建,最终会作为参数传到init方法中,我们可以在这个方法中直接使用
         * 功能:
         *  【1】 获取servlet的别名
         *  【2】获取当前Servlet的初始化参数
         *  【3】获取ServletContext对象
         *      <init-param>
                    <param-name>user</param-name>
                    <param-value>root</param-value>
                </init-param>
         */

        //【1】 获取servlet的别名
        String servletName = config.getServletName();
        //输出servletName
        System.out.println("别名:"+servletName);

        //2.获取当前Servlet的初始化参数
        String user = config.getInitParameter("user");
        System.out.println("user: "+user);

        //3.获取ServletContext对象
        // 我们web应用中所有信息都封装在ServletContext对象中,每一个web应用都对应着一个唯一的ServletContext
        ServletContext context = config.getServletContext();

        String url = context.getInitParameter("url");
        System.out.println("AServlet :"+url);

==========================
servletcontext:

        /**
         * ServletContext
         * 代表:代表整个web应用,每一个web应用都有他唯一对应ServletContext对象,该对象在项目启动时创建,在项目卸载销毁
         * 获取:通过ServletConfig获取
         * 功能:
         *  【1】获取整个WEB应用的初始化参数
         *      <context-param>
                    <param-name>url</param-name>
                    <param-value>http://www.atguigu.com</param-value>
                </context-param>

            【2】可以获取到资源的真实路径
                虚拟路径:http://localhost:8080/08_WEB_Servlet/index.html
                真实路径:资源在硬盘中的地址

            【3】可以作为一个最大的域对象在不同的WEB资源之间共享数据。
                application

         */


        //通过ServletConfig获取ServletContext
        ServletContext context = this.getServletConfig().getServletContext();
        //获取全局的初始化参数
        String url = context.getInitParameter("url");
        //System.out.println("url = "+url);

        //获取index.html的真实路径(物理路径)
        //主要用于做上传和下载
        String realPath = context.getRealPath("/hello.html");
        System.out.println(realPath);

===========================
导入项目2个步骤:
步骤1:
这里写图片描述

这里写图片描述

步骤2:

这里写图片描述

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值