2016-01-15 100 views
1

我已成功將我的.WAR文件部署到openshift.com。 爲了訪問我的網站,我必須輸入這個網址:http://demo-farazdurrani.rhcloud.com/main如何映射主頁網址(/)

你看到「.com」之後我必須輸入「/ main」。當我只輸入沒有'/ main'的網站名稱時,它會拋出'404資源未找到'錯誤。我只希望能夠輸入http://demo-farazdurrani.rhcloud.com/(或者更好地刪除'/'),它應該會自動打開我的主頁。

這是我的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

好吧,現在我知道如何去做。第一步是這樣的:https://stackoverflow.com/a/23981486/4828463儘管將我的.war文件重命名爲ROOT.war非常重要,但我在重要的位置丟失了一個重要的.jsp文件(現在這個解決方案對我的問題非常重要,可能對我有用你也是)。我在我的Web應用程序的根目錄中添加了「index.jsp」。並在裏面它我有

<%@ 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頁面中指定了此代碼,則表示會話對象將不可用於該頁面。因此會話無法維護該頁面。 (只是把它放在那裏沒有爲我的問題neccassary)。

我會告訴你我的項目結構看起來像現在:

Eclipse Project Director Structure

在我詢問我是否需要修改web.xml中的任何問題早。不,我不知道。那裏一切都很好。

如果您覺得此內容有幫助,則表明回答問題。謝謝

1

與通常的Spring應用程序建議的是使用諸如URL的重寫:默認情況下

在web.xml

<filter> 
    <filter-name>UrlRewriteFilter</filter-name> 
    <filter-class> 
     org.tuckey.web.filters.urlrewrite.UrlRewriteFilter 
    </filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>UrlRewriteFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
<servlet> 
    <servlet-name>yourservlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>yourservlet</servlet-name> 
    <url-pattern>/app/*</url-pattern> 
</servlet-mapping> 

會在你的WEB-INF閱讀urlrewrite.xml目錄你必須類似於:

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE urlrewrite 
    PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN" 
    "http://tuckey.org/res/dtds/urlrewrite3.0.dtd"> 
<urlrewrite default-match-type="wildcard"> 
    <rule> 
     <from>/resources/**</from> 
     <to>/resources/$1</to> 
    </rule> 
    <rule> 
     <from>/spring_security_login</from> 
     <to last="true">/spring_security_login</to> 
    </rule> 
    <rule> 
     <from>/j_spring_security_check**</from> 
     <to last="true">/j_spring_security_check/$1</to> 
    </rule> 
    <rule> 
     <from>/j_spring_security_logout**</from> 
     <to last="true">/j_spring_security_logout/$1</to> 
    </rule> 
    <rule> 
     <from>/**</from> 
     <to>/app/$1</to> 
    </rule> 

    <outbound-rule> 
     <from>/app/**</from> 
     <to>/$1</to> 
    </outbound-rule> 
</urlrewrite> 

,應該是夠了,我在openshift使用同樣的配置部署!並以您想要的方式工作

+0

親愛的主席先生,這看起來如此複雜和太多我的要求。我認爲我只缺少'/'或一些。非常容易但容易忽略的東西。在其他嘗試失敗後,我會研究您的解決方案。感謝您的回答,雖然 –

+0

我的問題解決了。檢查下面的答案xD –