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