ServletContext对象的使用

ServletContext对象的应用

web容器启动的时候,它会为每个web程序都创建一个对应的ServletContext对象,它代表了当前的web应用。

1. 共享数据
我在这个Servlet当中的数据可以在另一个Servlet当中拿到

当前Servlet放的数据

//this.getServletContext():Servlet上下文
        ServletContext context = this.getServletContext();
        String username = "胡某人";
        context.setAttribute("username",username);

需要拿数据的另一个Servlet

ServletContext context = this.getServletContext();
        String username = (String) context.getAttribute("username");

        resp.setContentType("text/html");
        resp.setCharacterEncoding("utf-8");
        resp.getWriter().print("名字:"+username);

2. 获取初始化参数
配置的web应用的初始化参数

<context-param>
        <param-name>url</param-name>
        <param-value>jdbc:mysql://localhost:3306/mybatis</param-value>
    </context-param>

在servlet中拿到web应用中的初始化参数

 ServletContext context = this.getServletContext();
        String url = context.getInitParameter("url");
        resp.getWriter().print(url);

结果为

在这里插入图片描述

3. 请求转发
Servlet将请求转发给另一个Servlet

需要请求转发的Servlet

 ServletContext context = this.getServletContext();
        //RequestDispatcher requestDispatcher = context.getRequestDispatcher("/serv");//参数为要转发到的servlet路径
        //requestDispatcher.forward(req,resp);//调用forward实现请求转发
        context.getRequestDispatcher("/serv").forward(req,resp);

4. 读取资源文件 Properties

  • 在Java目录下新建properties
  • 在resources目录下新建properties

发现都被打包到了同一路径下:classes,俗称类路径classpath

需要一个文件流

//在target的web应用的classes里找到配置文件
InputStream asStream = this.getServletContext().getResourceAsStream("/WEB-INF/classes/da.properties");
Properties prop = new Properties();
prop.load(asStream);
String user = prop.getProperty("username");
String pwd =  prop.getProperty("password");
resp.getWriter().print(user+":"+pwd);

配置文件

username=root
password=123456

结果

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值