2010-05-24 81 views
5

如何從.jsp訪問ServletContext?例如,如何在.jsp中調用getRealPath方法。Java(JSP/Servlet):等同於.jsp中的getServletContext()

這裏有一個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> 
+0

參見http://stackoverflow.com/questions/2964250/jsp-getservletcontext-error – Vadzim 2017-01-25 15:32:41

回答

10

ServletContext是通過application隱含對象訪問。

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

但是..避免在JSP中有類似的代碼。相反,如果你正在尋找使用getRealPath()方法,你可能會考慮尋找你需要在servlet中的值,並將其設置爲請求屬性,只需在JSP中讀取它(最好通過JSTL)

10

試試這個:

${pageContext.servletContext} 
+0

你真的很快。我即將說出同樣的話。 – TCM 2010-05-24 16:15:48

+0

從問題:*「例如,我怎樣才能從一個.jsp」*中調用getRealPath()方法? – SyntaxT3rr0r 2010-05-24 16:18:59

+1

@Webinator:該方法需要一個String參數,所以你不能通過'$ {}'表示法調用它。至少有三種不同的方法存在:1)你可以在一個bean內部調用這個方法(對於IMHO來說最好)2)你可以創建一個自定義標籤並從那裏調用它3)你可以寫一個scriplet(' %//這裏有一些代碼%>') - 最差的恕我直言。 – Roman 2010-05-24 16:23:46

2

我想這應該能正常運行的一個JSP頁面:

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

成稱爲JSTL標記 'C:URL'

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

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

相關問題