jav*_*r71 14 jboss redirect contextpath
我正在使用JBoss 6.0.
我已经在web-context下部署了我的Web应用程序:myApp.ear:" / test ".所以在browser-url中如果输入" http:// localhost:8080/test / ",我会得到我的登录页面(myLogin.jsp).
由于我的WAR存在于EAR文件中,因此我使用web模块内部的context-root元素在application.xml文件中指定了上下文根- 即
<module>
<web>
<web-uri>myWeb.war</web-uri>
<context-root>/test</context-root>
</web>
</module>
Run Code Online (Sandbox Code Playgroud)
我的问题是如何从"根上下文" 自动将用户引导到我的网络应用程序?
我的意思是如果用户键入" http:// localhost:8080 / ",我希望加载我的web应用程序的登录页面(而不是JBoss的默认ROOT.war的index.html页面).
我从{JBOSS}\server\default\deploy\ROOT.war中删除了现有的index.html,并在那里创建了一个login.jsp.现在我可以看到当我键入http:// localhost:8080 /时会调用"login.jsp" .但我无法将用户请求重定向到我的网络应用程序的登录页面.
在那个login.jsp中,我尝试过:
<jsp:forward page="/test" />,但是我收到错误:"HTTP状态404 - /test".
如果我调用,<jsp:forward page="/test/myLogin.jsp" />我仍然得到相同的404错误.
任何人都可以建议如何从root-context实现自动直接到我的网络应用程序?
Sen*_*hil 26
您需要将index.html保留在默认部署文件夹中,并将请求转发到您的Web模块.
例如,仅在index.html中保留以下行
<META HTTP-EQUIV="Refresh" CONTENT="0; URL=/test/"/>
Run Code Online (Sandbox Code Playgroud)
Senthil的答案很好,但是用户可以看到浏览器完成的实际重定向(页面闪烁)。重定向也可与重写[来完成1,2 ] JBoss服务器的功能,该功能支持HTTP重定向用30X码(无闪烁)。
您可以将重写直接添加到应用中(web.xml,jboss-web.xml),并在中指定重定向规则rewrite.properties-此处未显示。
或者,您可以自行修改服务器配置,而无需触摸原始应用程序。我发现此解决方案很方便,因为应用程序保持不变。
用例:我们将其用于EJBCA部署(而不是我们的应用程序),它将其上下文根设置为/ejbca。我们希望保留打包ant脚本提供的默认部署过程,同时为了用户友好,我们希望将重定向自添加/到/ejbca作为某种默认值。如果用户想更改它,只需修改standalone.xml即可完成,而无需重新部署整个应用程序。
编辑standalone.xml:
<subsystem xmlns="urn:jboss:domain:web:2.2" default-virtual-server="default-host" native="false">
<virtual-server name="default-host" enable-welcome-root="true">
<alias name="localhost"/>
<rewrite pattern="^/$" substitution="/test" flags="L,QSA,R" />
</virtual-server>
</subsystem>
Run Code Online (Sandbox Code Playgroud)