在Java web应用程序中将RESTful URL映射到静态HTML页面
我有一个在JBoss中运行的Java web应用程序。我正在使用AngularJS添加一个申请工作的新网页,我希望它响应这个(RESTful)URL:在Java web应用程序中将RESTful URL映射到静态HTML页面,java,spring,angularjs,spring-mvc,Java,Spring,Angularjs,Spring Mvc,我有一个在JBoss中运行的Java web应用程序。我正在使用AngularJS添加一个申请工作的新网页,我希望它响应这个(RESTful)URL:/job//apply 因为我是Angular的新手,所以我试图找出如何路由用户对URL的请求,如: GET/job/1/apply(其中“1”是作业id) 到我的web应用程序中的静态HTML页面,如src/main/webapp/job/apply.HTML。我的计划是在apply.html模板中指定ng app和ng controller,这
/job//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
”
我想出了几种可能的方法来实现这一点,但它们似乎都不是很简单或直接:
apply.html
。(我甚至还没有在这个web应用程序中使用Spring MVC……还没有。)/job/apply.html
apply.html
重命名为justindex.html
(这样它就会自动获取)。例如,用户请求/job/apply?jobId=1
,它映射到webapp/job/apply/index.html
我最不确定的是请求URL中的作业ID是否可用于我的angular controller代码,以便从后端获取有关该作业的数据。在不请求文件时,将每个请求服务器端重定向到index.html,并使用ng route(.$route)加载正确的模板,如
app.config(['$routeProvider',
function($routeProvider) {
$routeProvider.
when('/job/:jobid/apply', {
templateUrl: '/job/apply.html'
}).
otherwise({
redirectTo: '/'
});
}
]);
如果你能利用ngLocation(.$location)的“html5模式”,对最终用户来说会更干净。我的web应用在src/main/webapp根目录中已经有一个
index.hmtl
文件,所以如果我要按照你的指示操作,我就必须给它取个别的名字,或者把它放在一个子目录中“不请求文件时,将每个请求服务器端重定向到index.html。”我如何知道何时“不请求文件”"? 也就是说,我如何确保对/job/1/apply
的请求转到index.html
,而对其他资源的请求仍像以前一样继续?您可以将servlet配置为在与请求中的*.html
匹配时为真实文件提供服务?例如,我不这么做。您能否提供一个web.xml
配置或servlet的示例?