JavaWeb学习笔记----Servlet的ServletConfig对象和ServletContext对象的使用

本文介绍了一个具体的web.xml配置示例,包括了数据库连接参数的设置、Servlet的定义及映射等,并展示了如何通过Java Servlet读取这些配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <!--配置当前的WEB应用的初始化参数-->
    <context-param>
        <param-name>driver</param-name>
        <param-value>com.mysql.jdbc.Driver</param-value>
    </context-param>

    <context-param>
        <param-name>jdbcUrl</param-name>
        <param-value>jdbc:mysql:///test</param-value>
    </context-param>

    <!--配置Servlet-->
    <servlet>
        <!--Servlet注册的名字-->
        <servlet-name>helloWorld</servlet-name>
        <!--Servlet的全类名-->
        <servlet-class>cn.limbo.servlet.HelloWorld</servlet-class>
        <!--
            指定Servle被创建的时机 ,若为负数,则在第一次请求被创建
            若>=0,则在当前WEB应用中被Servlet容器加载的时候创建实例。
            且值越小越先被创建
        -->
        <init-param>
            <param-name>user</param-name>
            <param-value>root</param-value>
        </init-param>
        <init-param>
            <param-name>password</param-name>
            <param-value>123456</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <!--需要和某一个Servlet节点的的servlet-name子节点的文本一致-->
        <servlet-name>helloWorld</servlet-name>
        <!--映射具体访问的路径: /表示当前WEB应用的根目录-->
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>
HelloWorld.java

package cn.limbo.servlet;

import javax.servlet.*;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;

/**
 * Created by Limbo on 16/7/30.
 */
public class HelloWorld implements Servlet {

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

        System.out.println("init");
        String user = servletConfig.getInitParameter("user");
        String password = servletConfig.getInitParameter("password");

        System.out.println("user: " + user + " password: " + password);

        Enumeration<String> names = servletConfig.getInitParameterNames();
        while (names.hasMoreElements()) {
            String name = names.nextElement();
            String value = servletConfig.getInitParameter(name);

            System.out.println("^^" + name + " : " + value);
        }
        //获取ServletContext对象,可以获取到当前web应用的各个信息
        ServletContext context = servletConfig.getServletContext();
        //1.获取当前WEB应用的初始化参数
        //区别:ServletContext可以被每一个Servlet访问到从而去参数,而ServletConfig只能为当前的servlet访问到,并取配好的参数
        String driver = context.getInitParameter("driver");

        System.out.println("driver-->" + driver);
        Enumeration<String> names2 = context.getInitParameterNames();
        while(names2.hasMoreElements())
        {
            String name = names2.nextElement();
            String value = context.getInitParameter(name);
            System.out.println("name-->" + name + " : " + value);
        }

        //获取当前WEB应用的某一个文件在服务器上的绝对路径,而不是部署前的路径
        String realPath = context.getRealPath("/");
        System.out.println(realPath);

        //获取当前WEB应用的名称
        String contextPath = context.getContextPath();
        System.out.println(contextPath);
        
        //获取当前WEB应用的某一文件对应的输入流
        //String resource = context.getResourceAsStream("/"); // "/" 的意思是web应用的根目录
        
        ClassLoader classLoader = getClass().getClassLoader();
        InputStream in = classLoader.getResourceAsStream("jdbc.properties");
        System.out.println("1. " + in );
        
        InputStream in2 = context.getResourceAsStream("/WEB-INF/classes/jdbc.properties");
        System.out.println("2. " + in2);
    }

    @Override
    public ServletConfig getServletConfig() {

        System.out.println("ServletConfig");
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {

        System.out.println("Service");
    }

    @Override
    public String getServletInfo() {

        System.out.println("getServletInfo");
        return null;
    }

    @Override
    public void destroy() {

        System.out.println("destroy");
    }

    public HelloWorld() {

        System.out.println("HelloWorld Constructor");
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值