ServletContext域对象是在整个Web应用程序中共享数据的一种方式。它允许Servlet在不同的请求之间共享信息。ServletContext对象的API包括:
void setAttribute(String name, Object object)
: 将对象绑定到ServletContext中的指定名称。Object getAttribute(String name)
: 返回与指定名称相关联的对象,如果没有找到则返回null。Enumeration<String> getAttributeNames()
: 返回一个包含ServletContext中所有属性名称的Enumeration对象。void removeAttribute(String name)
: 从ServletContext中删除指定名称的属性。
代码如下:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.Enumeration;
public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><body>");
// 设置属性到ServletContext
ServletContext context = getServletContext();
context.setAttribute("appName", "MyWebApp");
// 获取属性值
String appName = (String) context.getAttribute("appName");
out.println("Application Name: " + appName + "<br>");
// 获取所有属性名
Enumeration<String> attributeNames = context.getAttributeNames();
out.println("<br>Attributes:<br>");
while (attributeNames.hasMoreElements()) {
String attributeName = attributeNames.nextElement();
Object attributeValue = context.getAttribute(attributeName);
out.println(attributeName + ": " + attributeValue + "<br>");
}
// 移除属性
context.removeAttribute("appName");
out.println("<br>Attribute 'appName' removed<br>");
out.println("</body></html>");
}
}
使用ServletContext获取文件路径和上下文信息:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><body>");
// 获取文件路径
String filePath = getServletContext().getRealPath("/WEB-INF/myfile.txt");
out.println("File Path: " + filePath + "<br>");
// 获取上下文路径
String contextPath = request.getContextPath();
out.println("Context Path: " + contextPath);
out.println("</body></html>");
}
}
· getRealPath()· 方法来获取指定文件在服务器文件系统中的真实路径。通过传递相对于web应用根目录的路径,我们可以获取文件的真实路径
。另外,使用 ·getContextPath()· 方法来获取当前web应用的上下文路径。