【SpringMVC系列四】 springMVC 视图整合(1)
Spring为在Web MVC应用程序中很可能要用到的大多数视图技术提供了一流的支持。 SpringMVC同时支持多视图例如JSP,Velocity,Freemarker等。通过不同的请求路径配置规则,映射到不同的视图文件。通过Controller返回的视图模型将页面显示出来。 JSP JSP被编译为servlet并拥有完整的java语言能力,因
Spring为在Web MVC应用程序中很可能要用到的大多数视图技术提供了一流的支持。
SpringMVC同时支持多视图例如JSP,Velocity,Freemarker等。通过不同的请求路径配置规则,映射到不同的视图文件。通过Controller返回的视图模型将页面显示出来。
JSP
JSP被编译为servlet并拥有完整的java语言能力,因此领域逻辑甚至数据访问逻辑都可以方便的被编码为JSP。应用程序的JSP都被放在war文件的WEB-INF目录中,客户访问不到。也就是JSP将Controller生成的模型显示出来。
上一篇博客写过了访问WEB-INF目录下JSP的配置。
Controller的模型代码:
@RequestMapping("/add")
public String addStudent(Student student,HttpServletRequestrequest){
studentBean.save(student);
return"/list";
}
在配置访问JSP的配置文件的时候,需要配置id为ViewResolver的属性,它制定将要使用的View实现类,并指定将要加在逻辑名称前后的前缀和后缀。因此当DispatcherServlet请求解析器的View的名称时,后者就会返回一个包装JSP的对象,JSP定位在/WEB-INF/jsp/list.jsp中。
模板技术
Velocity和Freemarker都是模板技术。他们是纯碎基于文本的引擎,两者都广泛用于产生文本输出的各种应用程序中。
与JSp不同的是,模板不被编译到Java类中,而是由其各自的模板引擎来解释。
优点:使得表现层和业务逻辑层分离。
模板+数据模型=输出。模板只负责数据在页面中的表现,不涉及任何的逻辑代码,所有的逻辑由数据模型处理。
不能轻易突破模板语言而编写Java代码。
缺点:需要修改模板后,如果不及时更新HTML页也会出旧数据。
配置:
<!--velocity配置 start 刘腾腾-->
<beanid="velocityResolver"
class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
<property name="prefix"value=""/>
<property name="suffix"value=".vm"/>
</bean>
<!--velocity配置 end 刘腾腾-->
<!--freemarker配置 start 刘腾腾-->
<beanid="freemarkerResolver"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="prefix"value=""/>
<property name="suffix"value=".ftl"/>
</bean>
<!--freemarker配置 end 刘腾腾-->
总结:
SpringMVC对多视图层的支持还是很灵活的,除了支持JSp,Velocity,Freemarker这种模板之外,还可以写自己的视图类型。这些视图原理上也是大同小异,通过不同的配置,最终将想要的结果显示出来。
下面继续写具体的实现,敬请期待!
更多推荐
所有评论(0)