getServletConfig().getServletContext().getRequestDispatcher("xxx.jsp")的用法

getServletConfig()方法返回一个ServletConfig对象,该对象中包含servlet启动配置信息.这个信息中包括了所有初始化参数和一个ServletContext对象. 
getServletContext()返回一个ServletContext对象,该对象包含关于servlet运行环境的信息.这个方法在GenericServlet类中为方便应用而定义的. 
实际上,它从传送到servlet的init(ServletConfig)方法中的ServletConfig对象中检索ServletContext.


RequestDispatcher---->实现Servlet之间的请求传递(页面跳转),有以下两种方式(都有共享request和response):
1.forward(ServletRequest, ServletResponse) //跳转到其他资源
2.include(ServletRequest, ServletResponse) //包含其他资源
如何获得RequestDispatcher对象
1) request.getRequestDispatcher(String page) ---->相对路径或者绝对路径
2) ServletContext.getRequestDispather(String page) ---->绝对路径

------------------------------------------


getServletContext和getServletConfig  

2011-05-21 23:10:15|  分类:sevlet |字号 订阅

代码块:   

<?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"); //不必用request,getServletConfig方法在弗雷
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);
...
}
}

输出结果:

             s1:This is the servlet value
          s2:This Is web-app Value
           s3:This Is web-app Value
            s4:This is the servlet value

分析:getServletContext和getServletConfig在这个类HelloServlet 中可以直接引用,是因为其父类HttpServlet的父类GenericServlet已经实现了该方法。所以这里并不是通过request得到这两个方法,而是直接调用。GenericServlet方法中实现了一些基本的方法,比如getServletInfo,getSerletName,getInitParameter方法等,都可以直接引用吗?还是。

          1:getServletContext()取得的是 <context-param>配置的参数
               getServletConfig()取得的是 <servlet> <init-param>配置的参数

           2: getServletContext()应用于整个web App,而getServletConfig()仅应用于当前Servlet。 但是ServletConfig对象拥有ServletContext的引用。所以可以通过getServletConfig()来获得ServletContext,从而得到web App的初始值。

getServletContext和getServletConfig - 陈吉思汗 - 沉默NO金
      
       利用Servlet的getServletContext().getContext()方法,可以得到应用程序的上下文。 所以可以通过该方法和servlet容器进行通信,比如转发请求到另一个web应用的jsp上去,如getServletContext().getContext().RequestDispatcher("/a.jsp")。注意这是需要在servlet容器中(tomcat的话为配置文件中的context元素节点的crossContxt属性)指定crossContxt属性为true。不过为了安全起见一般的不这样搞。
      也可以通过 getServletContext().setAttribute方法为不同的sevlet之间或者不同的客户端(ie浏览器)之间设置共享属性,但是只能在一个web应用中共享,不能在不同web应用中共享。有点相当于session。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值