热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ServletContext的应用(其一)★★★

ServletContext应用Q:什么叫ServletContext对象A:web容器在启动的时候,它会为每个web程序都创建一个对应的ServletContext对象,它代表了

ServletContext应用

Q:什么叫ServletContext对象

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



1、共享数据

在这个Servlet中保存的数据,可以在另外一个servlet中拿到


1.1 代码

1.用于保存数据的HelloServlet代码

public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//this.getInitParameter(); 初始化参数
//this.getServletConfig(); Servlet配置
//this.getServletContext(); Servlet上下文环境
ServletContext cOntext= this.getServletContext();
String username = "xy"; //数据
context.setAttribute("username",username); //将一个数据保存在了ServletContext中,名字 username 值 username
System.out.println("Hello");
}
}

2.用于测试获取数据的GetServlet代码

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class GetServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext cOntext= this.getServletContext();
String username = (String) context.getAttribute("username");//获得ServletContext中存储的数据username(xy)
resp.setContentType("text/html");
resp.setCharacterEncoding("utf-8");
resp.getWriter().print("名字"+username);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}

3.web.xml代码


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"
metadata-complete="true">

hello
com.xy.servlet.HelloServlet


hello
/hello


getc
com.xy.servlet.GetServlet


getc
/getc





1.2 代码测试

测试的时候发现了一个问题,如下图所示,获得的数据为null

这说明共享没有成功,这是为什么呢?

原来是因为:这个共享数据还没有被分享出去

换句话说:null的原因是没有setAtturibute 所以应该先访问HelloServlet

也就是说:这个数据是在HelloServlet程序内写入的,我光顾着抓紧测试了,还没有走HelloServlet程序

也就是说还没有共享数据,当然也就没法在测试网页获得数据了

重新测试一下,测试结果为数据共享成功




2、获取初始化参数


2.1 代码

1.用于获取初始化参数的ServletDemo03代码

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* 获取初始化参数练习
*/
public class ServletDemo03 extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext cOntext= this.getServletContext();
String url = context.getInitParameter("url");
resp.getWriter().print(url);
}
}

2.web.xml代码



url

jdbc:mysql://localhost:3306/mybatis


gp
com.xy.servlet.ServletDemo03


gp
/gp




2.2 代码测试

如下图所示:很明显与我们配置的web应用的初始化参数一致



推荐阅读
author-avatar
MCphp
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有