Java页面重写

Java页面重写,java,jsp,Java,Jsp,我正在开发一个java项目 我想将任何网页的扩展显示为“.jsf”,即使它是“jsp”或“xhtml” 我应该怎么做?您应该将服务器配置为以.jsp页面的形式处理.jsf文件。如何真正做到这一点取决于您使用的服务器—您没有提供的信息 免责声明:我对jsf或jsp都不熟悉,因此我不知道此服务器修改会对实际的jsf页面产生什么后果。将所有请求重定向到需要处理jsf请求的servlet <servlet-mapping> <servlet-name>MyServlet<

我正在开发一个java项目

我想将任何网页的扩展显示为“.jsf”,即使它是“jsp”或“xhtml”


我应该怎么做?

您应该将服务器配置为以.jsp页面的形式处理.jsf文件。如何真正做到这一点取决于您使用的服务器—您没有提供的信息


免责声明:我对jsf或jsp都不熟悉,因此我不知道此服务器修改会对实际的jsf页面产生什么后果。

将所有请求重定向到需要处理jsf请求的servlet

<servlet-mapping>
  <servlet-name>MyServlet</servlet-name>
  <url-pattern>*</url-pattern>
</servlet-mapping>

MyServlet
*
步骤(对于新的jsp项目):

  • 在web.xml中,更改为*.jsf

  • 更改为index.jsp

  • 创建新的welcome.jsp

  • 在index.jsp页面中,包括:

  • 运行project并在浏览器中查看扩展

  • 如果这是为了使用JavaServerFaces,那么JSFServlet的配置可以自动将.JSF映射到底层的.xhtml或.jsp文件。

    然后只需相应地配置
    FacesServlet

    <servlet-mapping>
        <servlet-name>facesServlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>
    

    我想你搞错了

    用户代理将向您的servlet发出请求,并使用一个给定的URI标识他们希望访问的资源您决定给定资源的正确URI是什么,以及如何响应此请求。因此,从概念上讲,这并不是说你的网页有一个“地址”,你想以不同的方式显示。相反,这是一个您想要使用什么URI来映射到哪些资源的例子

    如果您不想公开扩展,那么您根本不需要URI来拥有任何扩展,它们只是字符串。但是,您需要考虑如何解决潜在的名称冲突(正如djna在评论中指出的)。我相信这是在Faces级别为您配置的,并且实际上应该具有执行此操作所需的所有技术信息


    我只是想指出你的思维过程的落后性质,清理这些东西将有助于你更容易地探索整个过程。您最好理解它,而不是简单地将一些东西粘贴到web.xml中,这样问题就可以解决了(现在)。

    这不是servlet/jsp容器中的服务器级配置。您说的“显示”是什么意思?在浏览器看到的URL中?你为什么要这么做?如果您有两个文件aaa.xhtml和aaa.jsp,您打算如何处理此类冲突?请解释您试图实现的目标。这样做是为了对外部访问者隐藏实际的文件类型,以确保页面安全。将
    web.xml
    的内容添加到问题中会有所帮助。这是什么?这看起来不是一个答案。如果这实际上是对您的问题的更新,那么您应该使用
    edit
    链接。
    <security-constraint>
        <display-name>Restrict direct access to JSP and XHTML files</display-name>
        <web-resource-collection>
            <web-resource-name>JSP and XHTML files</web-resource-name>
            <url-pattern>*.jsp</url-pattern>
            <url-pattern>*.xhtml</url-pattern>
        </web-resource-collection>
        <auth-constraint />
    </security-constraint>