我正在尝试使用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。
我确信我在这里犯了一些根本性的错误。请指出。
答案 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项目,以便快速启动一个新项目,并了解它是如何工作的。