我试图用Spring & AngularJs编写一个非常简单的应用程序来理解这个概念。我很难理解dispatcher servlet在这种情况下的行为。
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 -只是AngularJ的路由器代码。
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请求。
我相信我在这里犯了一些根本的错误。请指出。
发布于 2014-10-07 08:23:52
您的angularjs路由器将尝试获取指向您的url的模板。
使用此配置:
$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项目,可以非常快地启动一个新项目,并了解它是如何工作的。
https://stackoverflow.com/questions/26230992
复制相似问题