2017-09-12 26 views
2

注 - 這個問題可能早些時候已經回答了,但是我無法在此找到任何註釋。因此問!Facelets相當於<jsp-file> servlet映射

背景 -我正在使用JSP作爲視圖技術的遺留JSF應用程序。現在,由於我們決定遷移到JSF 2.2/2.3,我們也將JSP頁面改爲facelets。

問題 -在web.xml中,我們下面的映射 -

<servlet> 
    <servlet-name>dummyframe</servlet-name> 
    <jsp-file>/WEB-INF/dummyframe.jsp</jsp-file> 
</servlet> 

<servlet-mapping> 
    <servlet-name>dummyframe</servlet-name> 
    <url-pattern>dummyframe</url-pattern> 
<servlet-mapping> 

我們已經轉換JSP文件到一個facelet文件,但不知道如何處理這個JSP文件映射。

我們計劃編寫將重定向到facelet頁面的java類。在這種情況下,映射會 -

<servlet> 
    <servlet-name>dummyframe</servlet-name> 
    <servlet-class>xxx.xxxx.dummyframe</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>dummyframe</servlet-name> 
    <url-pattern>dummyframe</url-pattern> 
<servlet-mapping> 

我的問題 - 1)這是一個很好的選擇? 2)是否有沒有其他的選擇可用沒有寫java類?

+0

開始通過解釋的目標是什麼,或者你想實現什麼是在jsp/servlet的......這一切,以防止「錯誤」的架構是什麼.. 。但是創建一個手動servlet是可行的,但是您也可以使用rest或soap或......所有這些取決於所需的功能 – Kukeltje

+0

@Kukeltje。 JSP頁面是一次性頁面,顯示應用程序的一些重要信息。沒有計劃使用REST或SOAP,因爲它們不會定期訪問。 – Akash

回答

1

1)這是一個很好的選擇嗎?

是的,但我認爲最好在filter而不是servlet類中實現重定向。


2)是否有可用的任何其他替代,而無需編寫的Java類 ?

留在網絡虛擬servlet映射,XML作爲是投入/WEB-INF/dummyframe.jsp這樣的:

<html> 
    <head> 
    <meta http-equiv="Refresh" content="0; URL=mynewdummyfile.jsf"> 
    </head> 
</html> 

或本:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 

<html> 
    <body> 
    <c:redirect url="mynewdummyfile.jsf"/> 
    </body> 
</html> 

或本:

<%@ page import = "java.io.*,java.util.*,javax.servlet.http.HttpServletResponse" %> 

<html> 
    <body> 
     <% 
     response.sendRedirect("mynewdummyfile.jsf"); 
     %> 
    </body> 
</html> 

或這個:

<%@ page import = "java.io.*,java.util.*,javax.servlet.http.HttpServletResponse" %> 

<html> 
    <body> 
     <% 
     response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY); 
     response.setHeader("Location", "mynewdummyfile.jsf"); 
     %> 
    </body> 
</html> 

或本:

<%@ page import = "javax.servlet.ServletContext" %> 

<html> 
    <body> 
     <% 
     ServletContext sc = getServletContext(); 
     sc.getRequestDispatcher("/WEB-INF/mynewdummyfile.jsf").forward(request, response); 
     %> 
    </body> 
</html> 
+0

感謝@Krokodilko的解釋。我想我們會選擇第一種方式將其轉換爲過濾器,因爲我們打算徹底取消JSP。 – Akash