一、ServletContext的概念
web容器在启动时,它会每个web应用程序创建一个对应的ServletContext对象,它代表当前的web应用
二、如何获取ServletContext对象?
方法1:ServletContext scontext=Congfig.getServletContext();
方法2:ServletContext scontext=this.getServletContext();
三、ServletContext的作用
1、作为域对象可以在整个web应用范围内共享数据
什么是域对象?即能在整个web共享数据的对象
假如web应用的classes中有两个java文件
一个是:Demo2Servlet.java:
package com.java;
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Demo2Servlet extends HttpServlet{
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
ServletContext context=this.getServletContext();
context.setAttribute("apple", "red apple");
}
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req,resp);
}
}
另外一个是Demo2Servlet.java:
package com.java;
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Demo3Servlet extends HttpServlet{
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
ServletContext context=this.getServletContext();
String v=(String)context.getAttribute("apple");
System.out.println(v);
}
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req,resp);
}
}
当在浏览器输入“http://localhost/Day02/java/Demo2Servlet” ,然后再输入“http://localhost/Day02/java/Demo3Servlet”
这时在控制台就会输出:red apple,数据从Demo2Servlet实现了与Demo3Servlet的共享,这个context对象就是域对象
特性:作用范围
声明周期:服务器启动,web应用加载后创建ServletContext对象,域生产,当web应用移除容器或服务器关闭后,随着web应用的销毁域销毁
重要的三个方法:
void setAttribute(String,Object);
Object getAttribute(String);
void removeAttribute
2、获取web应用的初始化参数
第一步:在web.xml中设置参数:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>userName</param-name>
<param-value>中华</param-value>
</context-param>
<context-param>
<param-name>password</param-name>
<param-value>123</param-value>
</context-param>
</web-app>
第二步:在classes中的文件夹添加Demo4Servlet.java
package com.java;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Demo4Servlet extends HttpServlet{
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
ServletContext context=this.getServletContext();
Enumeration enumeration=context.getInitParameterNames();
while(enumeration.hasMoreElements()){
String name=(String) enumeration.nextElement();
String value=context.getInitParameter(name);
System.out.println(name+":"+value);
}
}
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req,resp);
}
}
第三步:在web.xml中设置访问Demo4Servlet.ajva的路径
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>userName</param-name>
<param-value>中华</param-value>
</context-param>
<context-param>
<param-name>password</param-name>
<param-value>123</param-value>
</context-param>
<servlet>
<servlet-name>Demo4Servlet</servlet-name>
<servlet-class>com.java.Demo4Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Demo4Servlet</servlet-name>
<url-pattern>/java/Demo4Servlet</url-pattern>
</servlet-mapping>
</web-app>
第四步:在浏览器中输入“http://localhost/Day02/Demo4Servlet.java”
然后myeclipse就会打印出:
userName:中华
password:123
ps:小知识点
请求参数 parameter-----------浏览器发送过来的请求中的参数信息
初始化参数 intparameter----在web.xml中为ServletContext配置的初始化时带有的基本参数
域属性attribute-----------四大作用域中的键值对