spring在Java web应用程序中将RESTful URL映射到静态HTML页面
我有一个在JBoss中运行的Java web应用程序。我正在使用AngularJS添加一个新的求职网页,我希望它响应这个(RESTful)URL:/job/<job id>/apply
因为我是Angular的新手,所以我试图找出如何路由用户对URL的请求,如:
GET /job/1/apply
(其中“1
”是作业id)
到我的web应用程序中的静态HTML页面,如src/main/webapp/job/apply.html
。我的计划是在apply.html
模板中指定一个ng-app
和ng-controller
,这将调用返回服务器,以获取要在视图中呈现的JSON
那么,如何在基于Java的web应用程序中配置路由,以便请求/job/1/apply
生成/job/apply.html
,并且apply.html
加载的控制器JS代码可以轻松访问URL参数“1
”
我想出了几种可能的方法来实现这一点,但它们似乎都不是很简单或直接:
- 使用SpringMVC,编写一个侦听RESTfulURL的@Controller,并将请求转发到
apply.html
。(我甚至还没有在这个web应用程序中使用Spring MVC……还没有。)李> - 使用SpringMVC和^{
} 或^{} 元素将请求的URL映射到HTML页面李> - 使用web筛选器将传入URL重写为
/job/apply.html
李> - 放弃使用RESTful URL,将作业ID改为查询参数,并将我的
apply.html
重命名为justindex.html
(这样它会被自动拾取)。例如,用户请求/job/apply?jobId=1
,它映射到webapp/job/apply/index.html
李>
我最不确定的是请求URL中的作业ID是否可用于我的angular controller代码,以便从后端获取关于该作业的数据
# 1 楼答案
将服务器端的每个请求重定向到索引。在不请求文件时使用html,并使用ng route(http://docs.angularjs.org/api/ngRoute.$route)加载具有以下内容的正确模板
如果你能利用ngLocation(http://docs.angularjs.org/guide/dev_guide.services.$location)的“html5模式”,那对最终用户来说就更干净了