0

我想问一下如何在tomcat等应用服务器中部署应用程序,我使用SpringMVC并使用jetty在idea中运行,当我在localhost:8080中运行时,它可以工作,但是在tomcat中使用war部署时,url会像localhost :8080/app,显示登录,但是当控制器调用新页面失败时,请帮助我

我复制 Appfuse 的步骤是:

  1. 按照http://appfuse.org/display/APF/AppFuse+QuickStart,运行生成的 mvn 命令
  2. mvn appfuse:完整源代码
  3. 直到这一步,当我运行“mvn jetty:run”时,它运行正常,或者我使用“mvn jetty:run-war”创建战争并且有 demo.war 并且我部署到 tomcat 仍然可以
  4. 我添加了一些菜单和页面,其中之一是 accountStatement.jsp 和 accountStatementResult.jsp 及其控制器。accountStatement 页面选择期间日期,然后单击 ext 按钮后会有 accountStatement 的结果。
  5. accountStatement.jsp 的结果如下: 帐单 您可以在此链接中尝试,我已经部署在 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( value = "datepickerUntil", required = false) final String datepickerUntil, @RequestParam(value = "months", required = false) final String months, final RedirectAttributes redirectAttributes, final HttpServletRequest request) throws Exception { String period = datepickerFrom + " - " + 日期选择器直到;if (periodType.equals("monthly")) { period = months; }

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

    }

  7. 当我使用“mvn jetty:run”从 intellij Idea 运行时,它运行完美,按下提交按钮后,它将重定向到 accountStatementResult 页面。

  8. 但是当我创建 demo.war 并在 tomcat 中部署时,它运行错误,在 accountStatement 页面和按钮之后,结果是错误。

  9. 我认为错误出在 urlwriter.xml 中,我曾经在以前的办公室使用 appfuse 1.9 制作过应用程序,现在我想使用 appfus 创建和销售我自己的应用程序。非常感谢你的帮助。

我还在google代码上创建了源代码的存储库,如果您需要查看完整代码,可以向我询问密码。谢谢

4

1 回答 1

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">

我测试并确保两种解决方案都有效。

于 2015-01-25T18:37:08.103 回答