请教Servlet中getServletContext和getServletConfig的区别

zj21st 2008-04-25 11:38:17
请教一下,getServletContext和getServletConfig都有getInitParameter的方法,
但是他们有什么不同呢?
我在web.xml中web-app根下定义了一个参数P1,
然后在web.xml中的HelloServlet段中也定义了一个参数P1,
在HelloServlet分别作如下输出
String s1 = getServletConfig().getInitParameter("P1");
String s2 = getServletContext().getInitParameter("P1");
String s3 = getServletConfig().getServletContext().getInitParameter("P1");
String s4 = getInitParameter("P1");
发现结果如下
s1:This is the servlet value
s2:This Is web-app Value
s3:This Is web-app Value
s4:This is the servlet value
我实在是不能明白为什么,请高手赐教

下附代码段
===========================
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
...
<context-param>
<param-name>P1</param-name>
<param-value>This Is web-app Value</param-value>
</context-param>
...
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>suman.Servlet.HelloServlet</servlet-class>
<init-param>
<param-name>P1</param-name>
<param-value>This is the servlet value</param-value>
</init-param>
</servlet>

...
</web-app>

==============================
public class HelloServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

...
String s1 = getServletConfig().getInitParameter("P1");
String s2 = getServletContext().getInitParameter("P1");
String s3 = getServletConfig().getServletContext().getInitParameter("P1");
String s4 = getInitParameter("P1");

out.println("SumanChina_DoGet");
out.println("<br>");
out.println("s1:"+s1+"<br>");
out.println("s2:"+s2+"<br>");
out.println("s3:"+s3+"<br>");
out.println("s4:"+s4);
...
}
}
...全文
1401 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
show+2007 2011-08-20
  • 打赏
  • 举报
回复
学习了……
Zianed 2008-05-03
  • 打赏
  • 举报
回复
getServletContext()
用来找绝对路径时,比较好!
lstep 2008-04-27
  • 打赏
  • 举报
回复
getServletContext()应用于整个web App,而getServletConfig()仅应用于当前Servlet。
但是ServletConfig对象拥有ServletContext的引用。所以可以通过getServletConfig()来获得web App的
初始值。
woailiu_bo 2008-04-26
  • 打赏
  • 举报
回复
getServletContext()获得的是 <context-param></context-param>配置的参数信息
getServletConfig()获得的是 <init-param></init-param>配置的参数信息
woailiu_bo 2008-04-26
  • 打赏
  • 举报
回复
getServletContext()获得的是 <context-param></context-param>配置的参数信息
getServletConfig()获得的是 <init-param></init-param>配置的参数信息
fuyou001 2008-04-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lastsweetop 的回复:]
String s1 = getServletConfig().getInitParameter("P1"); //取得是servlet的初始值
String s2 = getServletContext().getInitParameter("P1"); //取得是application中的初始值
String s3 = getServletConfig().getServletContext().getInitParameter("P1"); //取得是application中的初始值
String s4 = getInitParameter("P1"); //取得是servlet的初始值
[/Quote]
yeecheng 2008-04-25
  • 打赏
  • 举报
回复
getServletContext()取得的是<context-param>配置的参数
getServletConfig()取得的是<servlet><init-param>配置的参数
吴冬冬 2008-04-25
  • 打赏
  • 举报
回复
getServletContext().相当于Application
getServletConfig().某个servlet的配置
吴冬冬 2008-04-25
  • 打赏
  • 举报
回复
别看语句不同其实取的是同一个内容
吴冬冬 2008-04-25
  • 打赏
  • 举报
回复
String s1 = getServletConfig().getInitParameter("P1"); //取得是servlet的初始值
String s2 = getServletContext().getInitParameter("P1"); //取得是application中的初始值
String s3 = getServletConfig().getServletContext().getInitParameter("P1"); //取得是application中的初始值
String s4 = getInitParameter("P1"); //取得是servlet的初始值

zj21st 2008-04-25
  • 打赏
  • 举报
回复
能详细解释一下s1,s2,s3,s4为何有的值相等,有的值不相等吗?

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧