【问题标题】:Facelets equivalent of <jsp-file> servlet mapping等效于 <jsp-file> servlet 映射的 Facelets
【发布时间】:2018-02-21 00:34:29
【问题描述】:

注意 - 这个问题之前可能已经回答了,但我找不到任何关于此的说明。因此问!

背景 - 我正在开发一个使用 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类有没有其他选择?

【问题讨论】:

  • 首先解释目标是什么或你想要实现什么,jsp/servlet 中有什么...这一切都是为了防止“错误”架构...但是创建手动 servlet 是当然可行,但您也可以使用休息或肥皂或......这一切都取决于所需的功能
  • @Kukeltje。 JSP 页面是一次性页面,它显示应用程序的一些重要信息。没有使用 REST 或 SOAP 的计划,因为它们不会被定期访问。

标签: jsf


【解决方案1】:

1) 这是一个好的选择吗?

是的,但我认为在 filter 而不是 servlet 类中实现重定向会更好。


2) 不写 java 有没有其他选择 上课?

将虚拟 servlet 映射保留在 web、xml 中并放入/WEB-INF/dummyframe.jsp this:

<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>

【讨论】:

  • 感谢@Krokodilko 的解释。我认为我们将使用选项一将其转换为过滤器,因为我们计划完全取消 JSP。
猜你喜欢
  • 1970-01-01
  • 2015-07-17
  • 2017-02-21
  • 1970-01-01
  • 1970-01-01
  • 2015-02-07
  • 1970-01-01
  • 2011-01-18
  • 1970-01-01
相关资源
最近更新 更多