Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java web应用程序中将RESTful URL映射到静态HTML页面_Java_Spring_Angularjs_Spring Mvc - Fatal编程技术网

在Java web应用程序中将RESTful URL映射到静态HTML页面

在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,这

我有一个在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
,这将调用服务器获取JSON以在视图中呈现

那么,如何在基于Java的web应用程序中配置路由,以便请求
/job/1/apply
生成
/job/apply.html
,并且
apply.html
加载的控制器JS代码可以轻松访问URL参数“
1

我想出了几种可能的方法来实现这一点,但它们似乎都不是很简单或直接:

  • 使用SpringMVC,编写一个@Controller侦听RESTful URL,并将请求转发到
    apply.html
    。(我甚至还没有在这个web应用程序中使用Spring MVC……还没有。)
  • 使用SpringMVC和or元素将请求的URL映射到HTML页面
  • 使用web筛选器将传入URL重写为
    /job/apply.html
  • 放弃使用RESTful URL,改为将作业ID作为查询参数,并将我的
    apply.html
    重命名为just
    index.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的示例?