从URL中删除应用程序名称

use*_*745 3 url jsf friendly-url url-rewriting prettyfaces

我的网站使用JSF,网址似乎是,http://mysitename.com/wompower6/faces/home.xhtml

我使用prettyfaces,所以如果我用漂亮-config.xml文件下面,我可以将名称更改为http://mysitename.com/ wompower6 /家

<url-mapping id="home">
    <pattern value="/home" />
    <view-id value="/faces/home.xhtml" />
</url-mapping>
Run Code Online (Sandbox Code Playgroud)

我的问题是

  1. 我怎样才能删除应用程序名称wompower6,以便url成为mysitename.com/home?

  2. 在我的web.xml中,我有 <welcome-file>home.xhtml</welcome-file>,但这似乎不起作用.当我键入mysitename.com时,它不会映射到home.xhtml.这里有什么线索吗?

Bal*_*usC 10

我怎样才能删除应用程序名称wompower6,以便url成为mysitename.com/home?

这是一个webapp <Context>设置,配置取决于所使用的servletcontainer.如果你是使用Tomcat,那么基本上有两个选项可以让你的webapp成为root webapp.

  1. 将WAR文件重命名为ROOT.war,Tomcat默认将其部署在上下文根上.

  2. 将元素的path属性设置为(或者,根据您要定义的位置)为空字符串.例如<Context>Webapp/META-INF/context.xmlTomcat/conf/server.xml

    <Context path="" ...>
    
    Run Code Online (Sandbox Code Playgroud)

其他容器支持类似的结构.详细了解其文档.如果您使用的是Eclipse之类的IDE,那么您也可以在项目属性的Web Project Settings属性中设置它(右键单击项目并选择Properties).将Context root值设置为just /.


在我的web.xml中,我有home.xhtml,但这似乎不起作用.当我键入mysitename.com时,它不会映射到home.xhtml.这里有什么线索吗?

我假设你在谈论这个<welcome-file>设置.这必须指向物理上存在的文件,而不是虚拟URL,例如/faces/*.基本上有两种方法可以解决这个问题:

  1. 提供物理上存在的 /faces/home.xhtml文件(甚至可以保留为空).

  2. 更换丑陋/faces/*的网址模式FacesServlet的映射web.xml通过*.xhtml这样它仅仅是踢在了XHTML文件中的每个请求.

    <url-pattern>*.xhtml</url-pattern>
    
    Run Code Online (Sandbox Code Playgroud)

    这样您就不需要使用/faces/*URL模式.

  • 从http://markmail.org/message/uch2dfswtrgsuae2#query获得解决方案:+ page:1 + mid:6dcmavdydoxyppj3 + state:results ......转到glassfish管理控制台,配置 - >虚拟服务器 - > < server>有一个带有标签的下拉框:Default Web Module.选择您的Web应用程序作为默认应用程序. (3认同)