首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >调度器Servlet和AngularJs路由器

调度器Servlet和AngularJs路由器
EN

Stack Overflow用户
提问于 2014-10-07 07:43:31
回答 1查看 3.2K关注 0票数 2

我试图用Spring & AngularJs编写一个非常简单的应用程序来理解这个概念。我很难理解dispatcher servlet在这种情况下的行为。

JSP页面位置

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

hello.jsp

view1.jsp

view2.jsp

调度程序Servlet

代码语言:javascript
运行
复制
<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

代码语言:javascript
运行
复制
@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 -只是AngularJ的路由器代码。

代码语言:javascript
运行
复制
 var moduleConfig = function($routeProvider){
    $routeProvider.when('/',
                        {
                            controller: 'SimpleController',
                            templateUrl: 'view1.jsp'
                        })
                .when('/second',
                        {
                            controller: 'FirstController',
                            templateUrl: 'view2.jsp'
                        })
                .otherwise(
                                { redirectTo: '/'}
                            );
};

myAppName.config(moduleConfig);

调用

代码语言:javascript
运行
复制
http://localhost:8080/job/welcome

这就启动了hello.jsp,并尝试调用templateUrl:'view1.jsp‘

我得到了一个错误:

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-07 08:23:52

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

使用此配置:

代码语言:javascript
运行
复制
$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配置,这些url不会响应任何内容,这就是为什么当AngularJS试图获取模板时会看到错误404的原因。您应该做的可能是指向真正的模板(普通的html文件)。

第二个选项可能是指向spring管理的url,它只用于服务您的模板。

我同意你的意见,看看jhipster项目,可以非常快地启动一个新项目,并了解它是如何工作的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26230992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档