JavaWeb——ServletContext上下文共享数据与上下文路径获取

本文介绍了ServletContext域对象在JavaWeb应用程序中的作用,包括设置和获取共享数据、删除属性以及获取文件路径和上下文路径的方法。
摘要由CSDN通过智能技术生成

ServletContext域对象是在整个Web应用程序中共享数据的一种方式。它允许Servlet在不同的请求之间共享信息。ServletContext对象的API包括:

  1. void setAttribute(String name, Object object) : 将对象绑定到ServletContext中的指定名称。
  2. Object getAttribute(String name) : 返回与指定名称相关联的对象,如果没有找到则返回null。
  3. Enumeration<String> getAttributeNames() : 返回一个包含ServletContext中所有属性名称的Enumeration对象。
  4. 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应用的上下文路径。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值