我在看一个例程的时候,发现servlet在获取属性值的时候,用的程序代码:   
  ServletContext   application=getServletContext();   
  if(application.getAttribute("Attribute_name")==null)   ...;   
  而在跳转的时候,如jsp_name.jsp   用的程序代码为:     
  getServletConfig().getServletContext()   
    .getRequestDispatcher("/jsp/jsp_name.jsp").forward(request,response);   
  (以上代码都是在同一个servlet程序中的)   
  而我在看servlet的API的时候,没有看到servlet类中有getServletContext()的方法,为什么在servlet中可以直接调用呢?   再看后面那种用法,既然上面已经实例化了一个ServletContext对象了   ,为什么还要用getServletConfig().getServletContext()取出一个ServletContext的对象呢?   我不能直接这样:   
  application.getRequestDispatcher("/jsp/jsp_name.jsp").forward(request,response);   吗?   是不是两个ServletContext由于取法的原因有所不同呢? PageContext就是JSP中的page,ServletContext就是JSP中的application。两者的scope不一样

解决方案 »

  1.   

    to 楼主:
    第一个问题:而我在看servlet的API的时候,没有看到servlet类中有getServletContext()的方法,为什么在servlet中可以直接调用呢?因为Servlet接口中有一个已知的实现类GenericServlet类,
    在这个类中有一个方法叫getServletContext(),返回的是ServletContext接口的类型,所以可以直接调用,,,这样说不知道表达对不对,我也在学习中.....其它问题我再研究研究,呵呵.
      

  2.   

    楼主,你把servlet得代码完整给出来看看吧