您的位置:首页 > 编程语言 > Java开发

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

2016-08-01 20:58 716 查看
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");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐