ServletContext
Servlet,ServletConfig,ServletContext 关系:
- 一个servlet对应一个ServletConfig。
- 所有的servle共享一个ServletContext 对象。
ServletContext 是什么?什么时候创建?什么时候销毁?创建几个?
- ServletContext 被翻译为servlet上下文。
- 一个webAPP只有一个ServletContext 对象。
- ServletContext 在服务器启动阶段实例化。
- ServletContext 在服务器关闭的时候销毁。
- 用户若想共享同一数据,可以放到ServletContext 里面。(修改数据存在线程安全问题)
- 跨用户传递数据。
ServletContext 常用方法:
- String getRealPath();
- String getInitParameter(String var1);
- Enumeration getInitParameterNames();
- Object getAttribute(String var1); 向ServletContext 获取数据
- void setAttribute(String var1, Object var2);向ServletContext 添加数据
- void removeAttribute(String var1); 向ServletContext 删除数据
代码示例:
package test1;
import javax.servlet.*;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.jsp.tagext.VariableInfo;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
/**
* Created by hasee
* on 2017/4/9.
*/
@WebServlet(name ="cymone",urlPatterns = "/a")
public class Servletcym implements Servlet {
private ServletConfig servletConfig;
@Override
public void init(ServletConfig servletConfig) throws ServletException {
//目的:可以在service中使用servletConfig
this.servletConfig = servletConfig;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
servletResponse.setContentType("text/html; Charset = UTF-8");
PrintWriter writer = servletResponse.getWriter();
//获取ServletConfig
ServletConfig config = getServletConfig();
ServletContext application = config.getServletContext();
Enumeration<String> names = application.getInitParameterNames();
while (names.hasMoreElements()) {
String name = names.nextElement();
String value = application.getInitParameter(name);
writer.print(name+"="+value);//name2=今天星期三个
writer.print("</br>"); //name1=今天星wwww期三个
}
//获取绝对路径,当前web/web-INF目录下
String path1 = application.getRealPath("/index.jsp");
String path2 = application.getRealPath("/souces/ff.jsp");
writer.print(path1); //E:\workspace\Demo\out\artifacts\web_war_exploded\index.jsp
writer.print("</br>");
writer.print(path2); //E:\workspace\Demo\out\artifacts\web_war_exploded\souces\ff.jsp
}
@Override
public ServletConfig getServletConfig() {
//让子类可以使用servletConfig,
// 通过getServletConfig方法获取servletConfig对象
return servletConfig;
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}