Java(JSP / Servlet):相当于.jsp中的getServletContext()

时间:2010-05-24 16:11:45

标签: java jsp servlets

我应该如何从.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>

5 个答案:

答案 0 :(得分:11)

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

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

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

答案 1 :(得分:10)

试试这个:

${pageContext.servletContext}

答案 2 :(得分:2)

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

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

答案 3 :(得分:2)

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

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

答案 4 :(得分:1)

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