我有一个要在 CloudFoundry 上运行的基本 Spring Web 应用程序(Spring MVC 项目)。我采用了默认的 HelloWorld 项目并将其添加到其中。我已经安装了 CloudFoundry STS 扩展,创建了一个服务器,将我的应用程序发布到 CF 站点。“主页”页面同时显示在我的本地主机服务器和 CF 服务器上。都好。但是,当我单击唯一的链接将我带回 HomeController 到不同的方法/视图时,我在 CF 服务器上收到“资源不可用”错误,尽管它在我的 localhost(本地 PC)服务器上运行良好。
在我的本地 PC 上:
- 网址是:(
http://localhost:8080/myapp
正确) - 初始页面 (home.jsp) 显示一个链接:(
<a href="/myapp/property">Property</a>
正确) - 将鼠标悬停在链接上会在状态栏中显示:(
http://localhost:8080/myapp/property
正确) - 单击会将我带到映射到的方法
/property
并显示属性页 (property.jsp
)。(正确的)
在 CloudFoundry 上:
- 网址是:(
http://myapp.cloudfoundry.com/
正确) - 初始页面 (
home.jsp
) 显示与我的本地 PC 上的相同。(正确的) - 将鼠标悬停在链接上会在状态栏中显示:(
http://myapp.cloudfoundry.com/myapp/property
我认为是正确的)。 - 单击获取 '
esource not available
。 - 当我进入位置窗口并
myapp
从 url 中删除时,它可以工作。
下面是全部代码,不过我想这只是我自己对本地PC和CloudFoundry这两个环境的一些误解。希望有人可以教育我了解我在这里不知道的内容,以使应用程序在本地和 CloudFoundry 两种环境中都能正常工作。
这是 home.jsp 的 HTML,初始页面
<html>
<head></head>
<body>
<a href="/myspp/property">Property</a>
</body>
</html>
HomeController 是:
package com.myapp.app;
import java.util.Locale;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import com.myapp.services.PropertyServicesImpl;
/**
* Handles requests for the application home page.
*/
@Controller
public class HomeController {
private static final String VIEW_HOME = "home";
private static final String VIEW_PROPERTY = "property";
private static final String ACQUISITIONS = "acquisitions";
@Autowired private PropertyServicesImpl propertyServices;
/**
* Shows home view
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
public ModelAndView home(Locale locale, Model model) {
return new ModelAndView(VIEW_HOME);
}
/**
* Shows Property.jsp with jQuery tabs.
*/
@RequestMapping(value = "/property", method = RequestMethod.GET)
public ModelAndView property(Locale locale, Model model) {
return new ModelAndView(VIEW_PROPERTY);
}
}