我在这里阅读Deploy tomcat application to root in openshift通过将.war文件重命名为ROOT.war,您可以输入以下内容来访问您的网站:http://app-domain.rhcloud.com/。所以我将它重命名为root.war但仍然没有变化。我仍然要输入http://app-domain.rhcloud.com/name-of-war-file
这是我的web.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
`<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
metadata-complete="false">
<display-name>Advanced Mappings Demo Application</display-name>
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspf</url-pattern>
<page-encoding>UTF-8</page-encoding>
<scripting-invalid>true</scripting-invalid>
<include-prelude>/WEB-INF/jsp/base.jspf</include-prelude>
<trim-directive-whitespaces>true</trim-directive-whitespaces>
<default-content-type>text/html</default-content-type>
</jsp-property-group>
</jsp-config>
<session-config>
<session-timeout>30</session-timeout>
<cookie-config>
<http-only>true</http-only>
</cookie-config>
<tracking-mode>COOKIE</tracking-mode>
</session-config>
这是我的onStartUp方法(我以编程方式配置):
@Override
public void onStartup(ServletContext container) throws ServletException
{
AnnotationConfigWebApplicationContext rootContext =
new AnnotationConfigWebApplicationContext();
rootContext.register(RootContextConfiguration.class);
container.addListener(new ContextLoaderListener(rootContext));
AnnotationConfigWebApplicationContext servletContext =
new AnnotationConfigWebApplicationContext();
servletContext.register(WebServletContextConfiguration.class);
ServletRegistration.Dynamic dispatcher = container.addServlet(
"springDispatcher", new DispatcherServlet(servletContext)
);
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
container.getServletRegistration("default").addMapping("/resources/*", "*.css", "*.js", "*.png", "*.gif", "*.jpg");
}
这是部署时我的应用程序的日志:
答案 0 :(得分:2)
好的,现在我知道怎么做了。虽然将我的.war文件重命名为ROOT.war很重要,但我在一个重要位置缺少一个重要的.jsp文件。我添加了&#34; index.jsp&#34;在我的Web应用程序的根目录。在里面我有
<%@ page session="false" %>
<c:redirect url="/main" />
这里需要的主要内容是第二行。它会将所有调用重定向到http://app-domain.rhcloud.com/到http://app-domain.rhcloud.com/main,这实际上是我需要的。我只需输入http://demo-farazdurrani.rhcloud.com/,然后将其重定向到http://demo-farazdurrani.rhcloud.com/main
第一行是可选的(我的解决方案不需要)并且正在执行此操作:需要的页面不需要参与会话。或者,如果在JSP页面中指定了此代码,则意味着会话对象将不可用于该页面。因此,无法为该页面维护会话。 (只是把它放在那里而不是我的问题的必要)。
我将向您展示我的项目结构现在如何:
在问题的早期,我问我是否需要在web.xml中更改任何内容。不,我不是。那里一切都很好。
赞成答案和问题,如果它对你有所帮助