欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ServletContext域

程序员文章站 2022-07-10 19:12:39
ServletContext域1.基本信息类型:公共接口作用范围:整个web项目作用:用来获取和存储web中的数据ServletContext接口对象是随着web项目加载而创建的,每个web项目都有一个ServletContext2.ServletContext获取三种方式:利用HttpServlet对象ServletContext servletContext = this,getServletCOntext();利用Config对象ServletContext servletCo...

ServletContext域

1.基本信息

类型:公共接口
作用范围:整个web项目
作用:用来获取和存储web中的数据

ServletContext接口对象是随着web项目加载而创建的,每个web项目都有一个ServletContext

因此在进行不同Servlet对象之间传递数据时可以使用ServletContext域对象

2.ServletContext获取

三种方式:

  1. 利用HttpServlet对象
    ServletContext servletContext = this,getServletCOntext();
  2. 利用Config对象
    ServletContext servletConfig = config,getServletCOntext();
  3. 利用HttpServletRequest对象
    ServletContext servletRequest = req,getServletCOntext();

3.获取数据的方法

getAttribute(String name) 获取对应的数据
getAttributeNames()获取所有的key
removeAttribute(String name) 移除对应的数据
SetAttribute(String name, Object object) 设置数据

4.使用ServletContext域对象传递数据案例:

这里传递数据使用了重定向来实际说明:
重定向原理
利用案例来说明当不同的Servlet对象使用ServletContext对象时的数据共享
代码案例:
web.xml文件配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <servlet>
        <servlet-name>Demo1Servlet</servlet-name>
        <servlet-class>com.example.servlet.Demo1Servlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>Demo1Servlet</servlet-name>
        <url-pattern>/d1</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>Demo2Servlet</servlet-name>
        <servlet-class>com.example.servlet.Demo2Servlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>Demo2Servlet</servlet-name>
        <url-pattern>/d2</url-pattern>
    </servlet-mapping>


</web-app>

index.html代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<form rel="stylesheet" action="/d1" method="get">
    用户名<input type="text" name="username">
    密码<input type="password" name="password">

    <input type="submit" value="提交" name="submit">

</form>
</body>
</html>

Demo1Servlet

public class Demo1Servlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //定义一个要传入的变量
        int count = 1;
        ServletContext servletContext = this.getServletContext();
        servletContext.setAttribute("count",count);

        resp.sendRedirect("/d2");
    }
}

Demo2Servlet

public class Demo2Servlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletContext servletContext = this.getServletContext();
        int count =(int) servletContext.getAttribute("count");
        count++;
        System.out.println(count);

    }
}

显示结果:
ServletContext域
这里需要注意的是:

这两个Servlet对象的方法对应都是get或者都是post,否则重定向失效

5.利用ServletContext对象获取web .xml文件中的初始值

Web应用初始化参数的设置和获取

6.利用ServletContext对象获取web项目下的资源

只要是web项目,其实所有资源都可以通过ServletContext对象来获取
获取资源时传入的路径是相对于web目录的

ServletContext对象传入文件路径和名称可以获取所有的文件,

  1. 类编译完成后文件放在WEB-INF下,此时路径就可以看做开发时的src文件夹,路径传入格式:
    WEB-INF/相对src路径的路径地址/文件名
  2. 获取web文件夹下的文件是相对于web目录的路径传入格式:
    文件夹名/文件名

1.获取web文件夹下的properties文件

目录结构:
ServletContext域

代码
Demo2

public class Demo2Servlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletContext servletContext = this.getServletContext();

        //通过ServletContext对象获取properties地址
        InputStream inputStream = servletContext.getResourceAsStream("properties");

        //通过Properties对象加载文件
        Properties properties = new Properties();
        properties.load(inputStream);
        String user = properties.getProperty("user");
        //打印获取的结果
        System.out.println(user);

    }
}

properties文件
ServletContext域
web.xml文件中配置访问地址/d2
显示结果:
ServletContext域

本文地址:https://blog.csdn.net/Guesshat/article/details/107653668

相关标签: # java基础