1、getServletContext()方法代码片段
public class ServletContext01 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.获取对象
ServletContext context = getServletContext();
String hobby = context.getInitParameter("hobby");
System.out.println(hobby);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
2、web.xml代码片段
<context-param>
<param-name>hobby</param-name>
<param-value>唱跳rap</param-value>
</context-param>
代码解释:
Servlet中getServletContext()实质上可以看做一个对象,其可以使用ServletContext接口中的方法。getInitParameter()即为其中一个方法,写入参数名称"hobby",获得其value,为"唱跳rap",打印出来的结果就是"唱跳rap"。
获取ServletContext对象:
1.在javax.servlet.Filter中直接获取
ServletContext context = config.getServletContext();
2.在HttpServlet中直接获取
this.getServletContext()
3.在其他方法中,通过HttpRequest获得
request.getSession().getServletContext();
每个web工程都只有一个ServletContext对象,上述方式获得的ServletContext对象都是同一个.
ServletContext常见方法介绍:
1、getServletContext().getInitParameter(String name)
获取在项目下的web.xml中设置Context的初始化参数;
2、getServletContext().getInitParameterNames()
获取在项目下所有全局的初始化参数的名字,返回Enumeration,可以通过各个参数的名字获取其value;
注意:ServletContext接口中的获取初始化参数的方法,只能获取当前Servlet自身的初始化参数
3、getServletContext().getResource(String parh)
path必须是/开头,代表当前web应用程序的根目录。返回该URL指向的资源;
4、getServletContext().getResoutceAsStream(String parh)
path必须是/开头,代表当前web应用程序的根目录。返回该URL指向的文件的InputStream对象,用于文件上传和下载时解析xml文件;
5、getServletContext().getContextPath()
获取当前应用的虚拟访问目录,即相对路径,返回相对路径字符串;
6、getServletContext().getRealPath(String path)
path必须是/开头,代表当前web应用程序的根目录。通过该相对路径获取绝对路径,返回一个路径字符串String,如果不能进行映射返回null;
7、getServletContext().setAttribute(String name, Object value)
在ServletContext中保存了一个域属性,域属性名称为name,域属性的值为value,也可以称之为存储一个域属性,无返回值。如果多次调用该方法,并且使用相同的name,那么会覆盖上一次的值,这一特性与Map相同;
8、getServletContext().getAttribute(String name)
获取ServletContext中已存储的域属性的数据,默认返回值同存储时设置的value属性,Object,也可强制转换,如:String value = (String)servletContext.getAttribute(“xxx”)
,获取名为xxx的域属性的值,以String形式返回;
9、getServletContext().removeAttribute(String name)
依据域属性名称移除ServletContext中的域属性;
10、Enumeration<String> getServletContext().getAttributeNames()
获取所有域属性的名称,返回一个字符串枚举类,可以再依据域名称获取域属性的值;