Dispatcher Servlet和AngularJs路由器

时间:2014-10-07 07:43:32

标签: java angularjs spring jsp

我正在尝试使用Spring& amp编写一个非常简单的应用程序。 AngularJs理解这个概念。 我很难理解调度程序servlet在这种情况下的表现。

JSP页面位置

项目 - > Web内容 - > WEB-INF - >页

的hello.jsp

view1.jsp

view2.jsp

Dispatcher 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'

我收到此错误:

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

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

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

1 个答案:

答案 0 :(得分: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配置时,这些网址没有响应任何内容,这就是为什么当AngularJS尝试获取模板时看到错误404的原因。你应该做的可能是指向真正的模板(普通的html文件)。

第二个选项可能是指向由spring管理的网址,该网址仅用于提供模板。

我同意评论,看看jhipster项目,以便快速启动一个新项目,并了解它是如何工作的。