Java Web中ServletContext对象怎么应用

发布时间:2023-04-26 11:47:16 作者:iii
来源:亿速云 阅读:59

这篇文章主要讲解了“Java Web中ServletContext对象怎么应用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java Web中ServletContext对象怎么应用”吧!

 ServletContext对象

Web 应用中的所有 Servlet 共享同一个 ServletContext 对象,不同 Servlet 之间可以通过 ServletContext 对象实现数据通讯,因此 ServletContext 对象也被称为 Context 域对象。

域对象是服务器在内存上创建的存储空间,该空间用于不同动态资源(例如 Servlet、JSP)之间传递与共享数据。

 获取上下文初始化参数的相关方法

StringgetInitParameter(String name)根据初始化参数名 name,返回对应的初始化参 数值。
EnumerationgetInitParameterNames()返回 Web 应用所有上下文初始化参数名的枚举 集合,如果没有上下文初始化参数,则返回一个空的枚举集合。

创建ServletContext对象  

1)通过 GenericServlet 提供的 getServletContext() 方法

//通过 GenericServlet的getServletContext方法获取ServletContext对象
ServletContext servletContext = this.getServletContext();

2)通过 ServletConfig 提供的 getServletContext() 方法

//通过 ServletConfig的 getServletContext方法获取ServletContext对象
ServletContext servletContext = this.getServletConfig().getServletContext();
//通过 Config的 getServletContext方法获取ServletContext对象
ServletContext context = config.getServletContext();

3)通过 HttpSession 提供的 getServletContext() 方法

//通过 Session的 getServletContext方法获取ServletContext对象
ServletContext context = req.getSession().getServletContext();

4)通过 HttpServletRequest 提供的 getServletContext() 方法

//通过 HttpServletRequest的 getServletContext方法获取ServletContext对象
ServletContext servletContext = req.getServletContext();

上下文初始化参数

局部参数

    <servlet>
        <init-param>
            <param-name>name</param-name>
            <param-value>Lungcen</param-value>
        </init-param>
        <init-param>
            <param-name>password</param-name>
            <param-value>110120130</param-value>
        </init-param>
    </servlet>

全局参数

    <context-param>
        <param-name>姓名</param-name>
        <param-value>Lungcen</param-value>
    </context-param>
    <context-param>
        <param-name>年龄</param-name>
        <param-value>19</param-value>
    </context-param>

 获取ServletContext的全局参数

Enumeration<String> names = this.context.getInitParameterNames();
        
        while (names.hasMoreElements())
        {
            String s = names.nextElement();
            writer.write(s + "->" + context.getInitParameter(s) + "<br/>");
        }

ServletContext 属性与上下文初始化参数对比

不 同 点ServletContext 的属性上下文初始化参数
创 建 方 式ServletContext 的属性通过调用 ServletContext 接口的 setAttribute() 方法 创建上下文初始化参数通过 web.xml 使用 元素配置
可 进 行 的 操 作ServletContext 的属性可以通过 ServletContext 接口的方法进行读取、新 增、修改、移除等操作上下文初始化参数在容器启动后只能被 读取,不能进行新增、修改和移除操作
生 命 周 期ServletContext 中属性的生命周期从创建开 始,到该属性被移除(remove)或者容器关 闭结束上下文初始化参数的生命周期,从容器 启动开始,到 Web 应用被卸载或容器 关闭结束
作 用使用 ServletContext 中的属性可以实现 Servlet 之间的数据通讯使用上下文初始化参数无法实现数据通讯

实现数据通讯

在 Servlet 中,调用 ServletContext 接口的 setAttribute() 方法可以创建一些属性,这些属性被存 放在 ServletContext 对象中。应用中所有 Servlet 都可以对这些属性进行访问和操作,通过它们可以实现应用内不同 Servlet 之间的数据通讯。

voidsetAttribute(String name, Object object)把一个 Java 对象与一个属性名绑定,并将它作为一个属 性存放到 ServletContext 中。 参数 name 为属性名,参数 object 为属性值。
voidremoveAttribute(String name)从 ServletContext 中移除属性名为 name 的属性。
ObjectgetAttribute(String name)根据指定的属性名 name,返回 ServletContext 中对应 的属性值。

数据通讯的程序实例:

package com.zpark.servlet;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
 
@WebServlet(urlPatterns = "/LLL.do")
public class MyServlet04 extends HttpServlet {
 
    @Override
    public void init() throws ServletException {
        getServletContext().setAttribute("count", 0);
    }
 
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        Integer count = (Integer) getServletContext().getAttribute("count");
        count++;
        getServletContext().setAttribute("count", count);
 
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter writer = resp.getWriter();
        writer.write("欢迎来到界面" + count);
        writer.close();
    }
 
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        doGet(req, resp);
    }
}
package com.zpark.servlet;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
 
@WebServlet("/Lun5.do")
public class MyServlet05 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter writer = resp.getWriter();
        Integer count = (Integer) getServletContext().getAttribute("count");
        writer.write("今天是一个好日子" + count);
        writer.close();
    }
 
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
throws ServletException, IOException {
        resp.setCharacterEncoding("utf-8");
        doGet(req, resp);
    }
}

在浏览器中的操作

Java Web中ServletContext对象怎么应用

Java Web中ServletContext对象怎么应用

感谢各位的阅读,以上就是“Java Web中ServletContext对象怎么应用”的内容了,经过本文的学习后,相信大家对Java Web中ServletContext对象怎么应用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. JavaWeb重定向和请求转发怎么实现
  2. JavaWeb怎么实现注册页面功能

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

javaweb servletcontext

上一篇:plt.title()中文无法显示问题怎么解决

下一篇:node.js怎么实现简单爬虫

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》