【问题标题】:Java (JSP/Servlet): equivalent of getServletContext() from inside a .jspJava (JSP/Servlet):相当于 .jsp 内部的 getServletContext()
【发布时间】:2011-02-23 07:29:57
【问题描述】:

我应该如何从 .jsp 访问 ServletContext?例如,如何从 .jsp 中调用 getRealPath 方法。

这是一个 Servlet,可以正常工作:

protected void doGet(
            HttpServletRequest req,
            HttpServletResponse resp
    ) throws ServletException, IOException {
        resp.setContentType( "text/html; charset=UTF-8" );
        final PrintWriter pw = resp.getWriter();
        pw.print( "<html><body>" );
        pw.print( getServletContext().getRealPath( "text/en" ) );
        pw.print( "</body></html>" );
        pw.flush();
        pw.close();
    }

现在我正在寻找我应该在以下 .jsp 中插入的确切行,以执行与上面的 servlet 完全相同的操作。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <body>
     ...  // What should I insert here   
  </body>
</html>

【问题讨论】:

标签: java jsp servlets


【解决方案1】:

ServletContext 可通过 application 隐式对象访问。

由于每个 JSP 都是一个 servlet,你也可以使用getServletContext()

但是.. 避免在 JSP 中使用类似的代码。相反,在您的 servlet 中获取您需要的值并将其设置为请求属性,只需在 JSP 中读取它(最好通过 JSTL)

【讨论】:

    【解决方案2】:

    试试这个:

    ${pageContext.servletContext}
    

    【讨论】:

    • 来自问题:“例如,我怎样才能从 .jsp 中调用 getRealPath() 方法”
    • @Webinator:该方法需要一个字符串参数,因此您不能通过${} 表示法调用它。至少存在 3 种不同的方法:1)您可以在 bean 中调用此方法(恕我直言,这是最好的)2)您可以创建一个自定义标签并从那里调用它 3)您可以编写一个 scriplet(@987654323 @) - 最糟糕的恕我直言。
    【解决方案3】:

    我认为这在 JSP 页面上应该可以正常工作:

    <body>
    <%
    out.print(getServletContext().getAttribute("attribute"));
    %>
    </body>
    

    【讨论】:

      【解决方案4】:

      如果您希望使用 getRealPath() 方法,您可以考虑查看名为 'c:url' 的 jstl 标记

      <c:url value="text/en" />
      

      【讨论】:

        【解决方案5】:

        只需使用application.getRealPath(" ");

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-02-23
          相关资源
          最近更新 更多