servlet中缺少隐式对象

时间:2010-11-13 15:18:32

标签: jsp

为什么Java Server Pages(jsp)具有隐式对象但java servlet不具有?

3 个答案:

答案 0 :(得分:5)

Servlet代码通过servicedoGetdoPostdo...方法之一执行。这些方法采用HttpServletRequestHttpServletResponse参数,因此在某种意义上,请求响应是隐式对象。您可以通过HttpServletRequest(即getSession())或servlet上下文(servlet中的getServletContext()方法)访问JSP页面上可用的其他隐式对象 - 这对应于{{1}在JSP页面中。一个缺少的隐式对象是application,它在普通的servlet中不可用。 JSP页面自己提供这个。

答案 1 :(得分:0)

我们没有得到servlet中的所有隐式变量,因为有一些隐式变量,例如页面和页面上下文,它们只属于jsp。默认情况下,我们可以获得一些隐式变量,如请求,响应,会话,输出,配置,应用程序和异常。

要在servlet中获取所有这些隐式变量,我们使用请求和响应隐式变量。如果您想要获得会话,我们正在使用方法request.getSession(true)request.getSession(false)

答案 2 :(得分:0)

JSP隐式对象是JSP容器在每个页面中可用的Java对象,我们可以直接调用它们而无需显式声明。 JSP隐式对象也称为预定义变量。

Jsp中的示例 1)请求类似于HttpServletRequest 2)响应类似于HttpServletResponse 3)应用程序类似于ServletContext 4)config类似于ServletResponse 5)out类似于JspWriter对象 等

但是在servlet中我们可以通过doGet(HttpServlet请求,HttpServletResponse响应)方法或doPost方法访问请求,响应,因为它们可以作为容器的参数使用。

servlet中的

config可以通过servlet中的init(ServletConfig config)方法获得。 可以从请求中检索servlet中的应用程序或ServletContext对象,例如request.getServletContext();

实际上所有jsps都在内部转换为servlet。生成的servlet代码产生隐式对象。 检查生成的JSP servlet源代码后,您知道代码在_jspService方法中包含多个对象声明。

public void _jspService(HttpServletRequest request, 
 HttpServletResponse response) 
 throws java.io.IOException, ServletException {

 JspFactory _jspxFactory = null; 
 PageContext pageContext = null; 
 HttpSession session = null; 
 ServletContext application = null; 
 ServletConfig config = null; 
 JspWriter out = null; 
 Object page = this; 
 String _value = null; 
 try {
 . 
 . 
 . 
 _jspxFactory = JspFactory.getDefaultFactory(); 
 response.setContentType("text/html;charset=ISO-8859-1"); 
 pageContext = jspxFactory.getPageContext(this, 
 request, response, "", true, 8192, true); 
 application =pageContext.getServletContext(); 
 config = pageContext.getServletConfig(); pageContext.getServletConte
 session = pageContext.getSession(); 
 out = pageContext.getOut(); 
 . 
 . 
 . 
}

您会看到有对象引用,例如pageContext,session,application,config,out等。无论是否在页面内使用它们,都会创建这些对象引用。它们可供JSP页面作者自动使用!这些对象称为隐式对象