0
点赞
收藏
分享

微信扫一扫

9 ServletConfig和ServletContext


 ServletContext和ServletConfig

ServletContext对象

ServletContext对象介绍

ServletContext官方叫Servlet上下文。服务器会为每一个Web应用创建一个ServletContext对象。这个对象全局唯一,而且Web应用中的所有Servlet都共享这个对象。所以叫全局应用程序共享对象

 

9 ServletConfig和ServletContext_System

 

ServletContext对象的作用

 
Ø  相对路径转绝对路径

 
Ø  获取容器的附加信息

 
Ø  读取配置信息

 
Ø  全局容器

 

    

ServletContext对象的使用

获取项目的部署名
context.getContextPath()
相对路径转绝对路径(文件上传下载时需要注意)

context.getRealPath("path")

该方法可以将一个相对路径转换为绝对路径,在文件上传与下载时需要用到该方法做路径的转换。

获取容器的附加信息

servletContext.getServerInfo()

返回Servlet容器的名称和版本号

servletContext.getMajorVersion()

返回Servlet容器所支持Servlet的主版本号

servletContext.getMinorVersion()

返回Servlet容器所支持Servlet的副版本号。

获取web.xml文件中的信息

<context-param>

<param-name>key</param-name>

<param-value>value</param-value>

</context-param>

9 ServletConfig和ServletContext_xml_02

 

servletContext.getInitParameter("key")
该方法可以读取web.xml文件中<context-param>标签中的配置信息。

servletContext.getInitParameterNames()

该方法可以读取web.xml文件中所有param-name标签中的值。

全局容器

servletContext.setAttribute("key",ObjectValue)

向全局容器中存放数据。

servletContext.getAttribute("key")

从全局容器中获取数据。

servletContext.removeAttribute("key")

根据key删除全局容器中的value。

ServletContext对象生命周期

当容器启动时会创建ServletContext对象并一直缓存该对象,直到容器关闭后该对象生命周期结束。ServletContext对象的生命周期非常长,所以在使用全局容器时不建议存放业务数据。

ServletConfig对象

ServletConfig对象对应web.xml文件中的<servlet>节点。当Tomcat初始化一个Servlet时,会将该Servlet的配置信息,封装到一个ServletConfig对象中。我们可以通过该对象读取<servlet>节点中的配置信息

<servlet>

<servlet-name>servletName</servlet-name>

<servlet-class>servletClass</servlet-class>

<init-param>

<param-name>key</param-name>

<param-value>value</param-value>

</init-param>

</servlet>

9 ServletConfig和ServletContext_xml_04

 

servletConfig.getInitParameter("key");

该方法可以读取web.xml文件中<servlet>标签中<init-param>标签中的配置信息。

servletConfig.getInitParameterNames();

该方法可以读取web.xml文件中当前<servlet>标签中所有<init-param>标签中的值。

测试代码

Servlet1

 



 

Servlet2

package com.msb.testServlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;
import java.util.List;
/**
* @Author: Ma HaiYang
* @Description: MircoMessage:Mark_7001
*/
public class Servlet2 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext servletContext = this.getServletContext();
// 获取web.xml中配置的全局的初始信息
Enumeration<String> pnames = servletContext.getInitParameterNames();
while(pnames.hasMoreElements()){
String e = pnames.nextElement();
System.out.println(e+":"+servletContext.getInitParameter(e));
}
List<String> list = (List<String>) servletContext.getAttribute("list");
System.out.println(list);
String gender = (String)servletContext.getAttribute("gender");
System.out.println(gender);
}
}

9 ServletConfig和ServletContext_java_08

 

Servlet3

package com.msb.testServlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @Author: Ma HaiYang
* @Description: MircoMessage:Mark_7001
*/
public class Servlet3 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletConfig servletConfig = this.getServletConfig();
System.out.println(servletConfig.getInitParameter("brand"));
System.out.println(servletConfig.getInitParameter("screen"));
}
}

9 ServletConfig和ServletContext_java_10

 

Servlet4

package com.msb.testServlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @Author: Ma HaiYang
* @Description: MircoMessage:Mark_7001
*/
public class Servlet4 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletConfig servletConfig = this.getServletConfig();
System.out.println(servletConfig.getInitParameter("pinpai"));
System.out.println(servletConfig.getInitParameter("pingmu"));
}
}

9 ServletConfig和ServletContext_java_12

 

web.xml配置


 


举报

相关推荐

0 条评论