2014-10-07 21 views
2

我想写一个非常简单的应用程序使用Spring & AngularJs来理解这个概念。 我很努力地理解调度器servlet在这种情况下的表现。调度Servlet和AngularJs路由器

JSP页面位置

项目 - >的WebContent - > WEB-INF - >页面

的hello.jsp

view1.jsp

view2.jsp

调度程序Servlet

<mvc:annotation-driven /> 
<context:component-scan base-package="com.job.controller" /> 

<mvc:resources mapping="include/**" location="/include/" /> 
<mvc:resources mapping="app/**" location="/app/" /> 

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix"> 
     <value>/WEB-INF/pages/</value> 
    </property> 
    <property name="suffix"> 
     <value>.jsp</value> 
    </property> 
</bean> 

的HelloController

@Controller 
public class HelloController { 

    @RequestMapping(value="/welcome", method = RequestMethod.GET) 
    public String printWelcome(ModelMap model) { 
     model.addAttribute("message", "First Try for Sprinv MVC, Angular JS and BootStrap"); 
     return "hello"; 
    } 
} 

的hello.jsp - 只是AngularJs路由器代码。

var moduleConfig = function($routeProvider){ 
    $routeProvider.when('/', 
         { 
          controller: 'SimpleController', 
          templateUrl: 'view1.jsp' 
         }) 
       .when('/second', 
         { 
          controller: 'FirstController', 
          templateUrl: 'view2.jsp' 
         }) 
       .otherwise(
           { redirectTo: '/'} 
          ); 
}; 

myAppName.config(moduleConfig); 

呼叫

http://localhost:8080/job/welcome 

这带来了hello.jsp中,并尝试拨打templateUrl: 'view1.jsp'

,我得到这个错误:

GET http://localhost:8080/job/view1.jsp 404(未找到)

我尝试了所有组合,但无法将请求映射到适当的jsps。

我相信我在这里犯了一些根本性的错误。请指出。

+0

右... servlet不响应'javascript'路由。你不能通过javascript路由jsp的。 – 2014-10-07 07:48:27

+0

如果您是Spring和Angular的新成员,请查看[jhipster](http://jhipster.github.io/)...了解它是如何工作的。 – 2014-10-07 07:49:36

回答

0

您的angularjs路由器将尝试获取指向您网址的模板。

利用这种配置:

$routeProvider 
    .when('/', { 
    controller: 'SimpleController', 
    templateUrl: 'view1.jsp' 
    }) 
    .when('/second', { 
    controller: 'FirstController', 
    templateUrl: 'view2.jsp' 
    }) 
    .otherwise({ 
    redirectTo: '/' 
    }); 

AngularJS期待你的第一个模板位于http://localhost:8008/job/view1.jsp和你在http://localhost:8008/job/view2.jsp秒模板(我想这是http://localhost:8080/job访问你的应用程序的路径)。

使用您的spring mvc配置,这些url不会回应任何内容,这就是为什么当AngularJS尝试获取您的模板时您会看到错误404。你应该做的是可能指向真正的模板(纯HTML文件)。

第二个选项可能是指向由Spring管理的url,它只会用于为您的模板提供服务。

我同意评论,看一下jhipster项目来快速引导一个新项目并理解它是如何工作的。

+0

感谢大家指出正确的方向。 – NewProgrammer 2014-10-07 20:42:47

+0

不客气! – Mickael 2014-10-08 07:26:02