如何区分ServletConfig与ServletContext在Java Web开发中的应用?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1087个文字,预计阅读时间需要5分钟。
Servlet上下文对象介绍。官方称为Servlet上下文。服务器为每个Web应用创建一个ServletContext对象。这个对象全局唯一,代表整个Web应用。包含Web应用中的所有全局信息。
ServletContext和ServletConfig
ServletContext对象
ServletContext对象介绍
ServletContext官方叫Servlet上下文。服务器会为每一个Web应用创建一个ServletContext对象。这个对象全局唯一,而且Web应用中的所有Servlet都共享这个对象。所以叫全局应用程序共享对象
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>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>servletConfig.getInitParameter("key");
该方法可以读取web.xml文件中<servlet>标签中<init-param>标签中的配置信息。
servletConfig.getInitParameterNames();
该方法可以读取web.xml文件中当前<servlet>标签中所有<init-param>标签中的值。
测试代码
Servlet1
package com.msb.testServlet;import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="xmlns.jcp.org/xml/ns/javaee xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <context-param> <param-name>username</param-name> <param-value>mashibing</param-value> </context-param> <context-param> <param-name>password</param-name> <param-value>123456</param-value> </context-param> <servlet> <servlet-name>servlet1</servlet-name> <servlet-class>com.msb.testServlet.Servlet1</servlet-class> </servlet> <servlet> <servlet-name>servlet2</servlet-name> <servlet-class>com.msb.testServlet.Servlet2</servlet-class> </servlet> <servlet> <servlet-name>servlet3</servlet-name> <servlet-class>com.msb.testServlet.Servlet3</servlet-class> <init-param> <param-name>brand</param-name> <param-value>ASUS</param-value> </init-param> <init-param> <param-name>screen</param-name> <param-value>三星</param-value> </init-param> </servlet> <servlet> <servlet-name>servlet4</servlet-name> <servlet-class>com.msb.testServlet.Servlet4</servlet-class> <init-param> <param-name>pinpai</param-name> <param-value>联想</param-value> </init-param> <init-param> <param-name>pingmu</param-name> <param-value>京东方</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>servlet1</servlet-name> <url-pattern>/servlet1.do</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>servlet2</servlet-name> <url-pattern>/servlet2.do</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>servlet3</servlet-name> <url-pattern>/servlet3.do</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>servlet4</servlet-name> <url-pattern>/servlet4.do</url-pattern> </servlet-mapping> </web-app>
本文共计1087个文字,预计阅读时间需要5分钟。
Servlet上下文对象介绍。官方称为Servlet上下文。服务器为每个Web应用创建一个ServletContext对象。这个对象全局唯一,代表整个Web应用。包含Web应用中的所有全局信息。
ServletContext和ServletConfig
ServletContext对象
ServletContext对象介绍
ServletContext官方叫Servlet上下文。服务器会为每一个Web应用创建一个ServletContext对象。这个对象全局唯一,而且Web应用中的所有Servlet都共享这个对象。所以叫全局应用程序共享对象
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>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>servletConfig.getInitParameter("key");
该方法可以读取web.xml文件中<servlet>标签中<init-param>标签中的配置信息。
servletConfig.getInitParameterNames();
该方法可以读取web.xml文件中当前<servlet>标签中所有<init-param>标签中的值。
测试代码
Servlet1
package com.msb.testServlet;import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="xmlns.jcp.org/xml/ns/javaee xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <context-param> <param-name>username</param-name> <param-value>mashibing</param-value> </context-param> <context-param> <param-name>password</param-name> <param-value>123456</param-value> </context-param> <servlet> <servlet-name>servlet1</servlet-name> <servlet-class>com.msb.testServlet.Servlet1</servlet-class> </servlet> <servlet> <servlet-name>servlet2</servlet-name> <servlet-class>com.msb.testServlet.Servlet2</servlet-class> </servlet> <servlet> <servlet-name>servlet3</servlet-name> <servlet-class>com.msb.testServlet.Servlet3</servlet-class> <init-param> <param-name>brand</param-name> <param-value>ASUS</param-value> </init-param> <init-param> <param-name>screen</param-name> <param-value>三星</param-value> </init-param> </servlet> <servlet> <servlet-name>servlet4</servlet-name> <servlet-class>com.msb.testServlet.Servlet4</servlet-class> <init-param> <param-name>pinpai</param-name> <param-value>联想</param-value> </init-param> <init-param> <param-name>pingmu</param-name> <param-value>京东方</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>servlet1</servlet-name> <url-pattern>/servlet1.do</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>servlet2</servlet-name> <url-pattern>/servlet2.do</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>servlet3</servlet-name> <url-pattern>/servlet3.do</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>servlet4</servlet-name> <url-pattern>/servlet4.do</url-pattern> </servlet-mapping> </web-app>

