注意 - 此问题可能已在早些时候得到解答,但我无法找到任何相关说明。因此问!
背景 - 我正在开发一个使用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 :(得分:1)
1)这是一个不错的选择吗?
是的,但我认为在filter而不是servlet类中实现重定向会更好。
2)如果没有编写java,还有其他选择吗? 类?
将虚拟servlet映射保留在web中,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>