java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > JavaWeb ServletContext

JavaWeb ServletContext基础与应用详细讲解

作者:知奕奕

ServletConfig对象,叫Servlet配置对象。主要用于加载配置文件的初始化参数。我们知道一个Web应用里面可以有多个servlet,如果现在有一份数据需要传给所有的servlet使用,那么我们就可以使用ServletContext对象了

ServletContext 基础知识

获取 ServletContext对象

有两种方式可以获取:

// 第一种方式
ServletContext app1 = config.getServletContext();
writer.println("<br>" + app1);
// 第二种方式
ServletContext app2 = this.getServletContext();
writer.println("<br>" + app2);

特性

context-param

和 servletconfig 一样,他也可以获取与 web.xml 中定义的参数;

只不过 ServletContext 定义的参数是写在 servlet 标签外面的;

每一个 context-param 都代表一个 key-value;

如果需要多个参数就必须要 分别写 context-param

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
         version="5.0">
    <!-- 定义了两个外部参数 -->
    <context-param>
        <param-name>pageSize</param-name>
        <param-value>10</param-value>
    </context-param>
    <context-param>
        <param-name>porkPrice</param-name>
        <param-value>999</param-value>
    </context-param>
    ...
</web-app>

同样的,我们可以使用 Enumeration 获取所有的 context-param,然后再使用迭代器的方法一次获取其中的 keyvalue

package com.zhiyiyi.javaweb.servlet;
import jakarta.servlet.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
public class AServlet extends GenericServlet {
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        servletResponse.setContentType("text/html");
        PrintWriter writer = servletResponse.getWriter();
        ServletContext servletContext = this.getServletContext();
        // 迭代输出param-name和param-value
        Enumeration<String> initParameterNames = servletContext.getInitParameterNames();
        while (initParameterNames.hasMoreElements()) {
            String key = initParameterNames.nextElement();
            String value = servletContext.getInitParameter(key);
            writer.println(key + " " + value + "<br>");
        }
    }
}

可见,context-param 定义的是 webapp 内共享的配置信息,而 servlet-name 更适用于仅供单个 servlet 使用

获取文件路径

获取根路径,即我们配置 web 服务器时设置的路径

// 获取web的根路径
String contextPath = servletContext.getContextPath();
writer.println("<br>" + contextPath);

获取指定文件的绝对路径;

getRealPath 接收一个路径作为参数,这个路径的起始点是 web 文件夹,下方代码指的是 web/index.html 这个文件

注意注意!getRealPath 的参数别带上根目录路径!!!

// 获取绝对路径
String realPath = servletContext.getRealPath("/index.html");
writer.println("<br>" + realPath);

记录日志

可以使用 log 方法记录日志;

日志保存位置为 tomcat 根目录下/logs

servletContext.log("hellowrodl");

参数增删改查

我们可以直接在 servlet 中直接对 context-param 进行增添、查找、删除!!!

// 以键值对的方式添加参数
servletContext.setAttribute("name","tom");
// 获取参数
Object name = servletContext.getAttribute("name");
// 删除参数
servletContext.removeAttribute("name");

到此这篇关于JavaWeb ServletContext基础与应用详细讲解的文章就介绍到这了,更多相关JavaWeb ServletContext内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文