我想问一下如何在应用程序服务器(例如tomcat)中部署应用程序,我使用SpringMVC并在码头上运行时运行想法,当我在localhost:8080中运行时,它可以工作,但是当在warcat中使用war进行部署时,URL将像本地主机:8080 / app,显示登录信息,但是当控制器调用新页面失败时,请帮助我
我复制Appfuse的步骤是:
在http://appfuse.org/display/APF/AppFuse+QuickStart之后,运行生成的mvn命令
mvn appfuse:完整来源
直到这一步,当我运行“ mvn jetty:run”时,它运行正常,或者我使用“ mvn jetty:run-war”创建战争,并且有demo.war并部署到tomcat仍然可以
我添加了一些菜单和页面,其中之一是accountStatement.jsp和accountStatementResult.jsp及其控制器。 accountStatement页面选择期间日期,然后单击ext按钮后,将显示accountStatement的结果。
accountStatement.jsp的结果如下:
您可以在此链接中尝试一下,我已经在amazonaws.ec2服务器中进行了部署:
http://ec2-54-175-88-32.compute-1.amazonaws.com:8080/demo/
用户名是用户/用户或管理员/管理员
我使用提交按钮,在AccountStatementController.java内部,一些重要的代码如下所示:
public AccountStatementController() {
setCancelView("redirect:home");
setSuccessView("/accountStatementResult");
}
@RequestMapping(method = RequestMethod.POST)
公共字符串onSubmit(
@RequestParam(value =“ periodType”,required = false)最终字符串periodType,
@RequestParam(value =“ datepickerFrom”,required = false)最终字符串datepickerFrom,
@RequestParam(value =“ datepickerUntil”,required = false)最终字符串datepickerUntil,
@RequestParam(value =“ months”,required = false)最终的字符串月份,最终的RedirectAttributes redirectAttributes,
最后的HttpServletRequest请求)
抛出异常
{
字符串句号= datepickerFrom +“-” + datepickerUntil;
如果(periodType.equals(“每月一次”)){
期限=几个月;
}
redirectAttributes.addFlashAttribute("period", period);
return getSuccessView();
}
当我使用“ mvn jetty:run”从intellij Idea运行时,它运行完美,按下“提交”按钮后,它将重定向到accountStatementResult页面。
但是,当我创建demo.war并在tomcat中部署它时,运行错误,在accountStatement页面和按钮之后,结果是错误。
我认为错误出在urlwriter.xml中,我曾经在以前的办公室中使用appfuse 1.9制作了应用程序,现在我想使用appfus创建和出售自己的应用程序。非常感谢你的帮助。
我还在Google代码上创建了源代码的存储库,如果您需要查看完整的代码,可以问我密码。谢谢
最佳答案
在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">
我测试并确保两种解决方案都有效。