2015-01-10 79 views
0

我想問如何在使用SpringMVC的應用服務器(如tomcat,Im)中部署應用程序,並在使用jetty的想法中運行,當我在localhost:8080中運行時,它可以工作,但是在使用war Tomcat的,該網址會像本地主機:8080 /應用程序,登錄顯示,但是當控制器調用新的一頁它失敗了,請幫我在Tomcat中部署Appfuse SpringMCV

我重現AppFuse的步驟是:

  1. http://appfuse.org/display/APF/AppFuse+QuickStart,運行生成的mvn命令
  2. mvn appfuse:完整源代碼
  3. 直到這一步,當我運行「mvn jetty:run」時,它運行OK,或者使用「mvn jetty:run-war」創建戰爭,並且有demo.war並且我部署到tomcat仍然可以
  4. I添加一些菜單和頁面,其中一個是accountStatement.jsp和accountStatementResult.jsp與他們的控制器。 accountStatement頁面選擇期間日期,然後點擊ext按鈕後會有accountStatement的結果。
  5. accountStatement.jsp的結果是這樣的: accountStatement ,您可以嘗試在這個環節,我已經在amazonaws.ec2服務器部署: http://ec2-54-175-88-32.compute-1.amazonaws.com:8080/demo/ 用戶名是用戶/用戶或管理員/管理員

  6. 我使用的提交按鈕,AccountStatementController.java裏面的一些重要的代碼是象下面這樣:

    public AccountStatementController() { 
    setCancelView("redirect:home"); 
    setSuccessView("/accountStatementResult"); 
    

    }

    @RequestMapping(method = RequestMethod.POST) public String onSubmit( @RequestParam(value =「periodType」,required = false)final String periodType, @RequestParam(value =「datepickerFrom」,required = false)final String datepickerFrom, @RequestParam(值= 「datepickerUntil」,需要=假)最終字符串datepickerUntil, @RequestParam(值= 「月」,需要=假)最後字符串的個月,最終RedirectAttributes redirectAttributes, 最終的HttpServletRequest請求) 拋出異常 { String period = datepickerFrom +「 - 」+ datepickerUntil; if(periodType.equals(「monthly」)){period} = months; }

    redirectAttributes.addFlashAttribute("period", period); 
    
    return getSuccessView(); 
    

    }

  7. 當我使用的IntelliJ IDEA運行 「命令mvn碼頭:運行」 它完美運行,按提交按鈕後,它會重定向到accountStatementResult頁。

  8. 但是,當我創建demo.war並部署在tomcat它運行錯誤,在accountStatement頁面和按鈕後,結果是錯誤的。

  9. 我認爲錯誤出現在urlwriter.xml中,我曾經在我以前的辦公室使用appfuse 1.9創建應用程序,現在我想用appfus創建和銷售我自己的應用程序。非常感謝你的幫助。

我還在google代碼上創建了源代碼庫,如果需要查看完整的代碼,可以問我密碼。謝謝

+0

你找出了原因嗎? –

+0

還沒有Matt,當我運行http://appfuse.org/display/APF/AppFuse+QuickStart,並使用mvn jetty運行它:run,它在http:// localhost:8080中成功運行。 但是當我部署Tomcat作爲的webapps/demo.war當我打電話從控制器的頁面時,它總是重定向到根目錄,而不是根/演示。當我在tomcat/logs文件夾中看到localhost_acces_log時,問題是URL總是進入根目錄而不是root/demo目錄: 「POST/accountStatement HTTP/1.1」404 - 它應該到: 「POST/demo/accountStatement HTTP/1.1「404 - –

+0

我已經在此鏈接中將應用程序部署在amazone ec2中:http://ec2-54-175-88-32.compute-1.amazonaws.com:8080/demo當我們進入菜單:Informasi Rekening - > Mutasi Rekening,推動提交按鈕,就會報錯,當我們在本地使用命令mvn碼頭運行:運行完美運行 –

回答

1

在accountStatement.jsp,改變你的形式的「行動」是下列之一:

<form:form commandName="account" method="post" action="accountStatement" id="accountForm"> 

這將產生一個相對URL要提交給控制器。或者你可以指定一個絕對URL:

<form:form commandName="account" method="post" action="${ctx}/account/accountStatement" id="accountForm"> 

我測試過,並確保兩個解決方案的工作。

+0

非常感謝你馬特,它的工作原理,我會嘗試使用appfuse創建Web應用程序,然後出售它,再次感謝您 –