Spring3.2.3 MVC多视图解析实例
2014-06-29 23:14
471 查看
这个架构当中,没有整合进数据库连接及事务管理等的配置,单纯介绍采用ContentNegotiatingViewResolver来做视图解析的一个配置实例,其它的一些配置,相信也难不倒各位亲。源代码实例见附件。
好了,我们接下来将按
项目构建-->配置文件-->后端实现-->前端实现 来讲解。下面先从构建项目开始
采用Gradle做项目构建
这里只描述一些基本的要用到的构建语法,基础的应用是很简单的。
1. 命令行下进入项目的根目录,即build.gradle配置文件所在的目录。
2. 执行命令:gradle eclipse 自动下载build.gradle配置中的依赖包并生成eclipse的环境配置文件如:.project等等。
3. 上步完成后,在eclipse导入现成项目即可。
如果您想进一步了解gradle,可访问博文:http://yidwo.iteye.com/blog/1848990
或访问其官方网站:http://gradle.org
Spring MVC的配置
web.xml:
Xml代码
<!-- Spring Web Dispatcher Configuration -->
<servlet>
<servlet-name>Dispatcher Servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring-web.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Dispatcher Servlet</servlet-name>
<url-pattern>/do/*</url-pattern>
</servlet-mapping>
重点标注url-pattern部分,url的请求匹配,只要是满足的,都会被Spring mvc 适匹器捕获并处理。
mvc的配置
下面只是列出了主要的ContentNegotiatingViewResolver的相关配置:
Xml代码
<bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1" />
<property name="favorParameter" value="false" />
<property name="ignoreAcceptHeader" value="true" />
<property name="defaultContentType" value="application/json" />
<property name="mediaTypes">
<map>
<entry key="atom" value="application/atom+xml" />
<entry key="html" value="text/html" /><!-- 真正静态页面,使用htm后缀(文件格式) -->
<entry key="json" value="application/json" />
<entry key="xml" value="application/xml" />
</map>
</property>
<property name="viewResolvers">
<list>
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
<!-- 页面请求时先找此配置,无的话再找jsp的视图配置 -->
<bean
class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="cache" value="true" />
<property name="prefix" value="" />
<property name="suffix" value=".ftl" />
<property name="exposeSpringMacroHelpers" value="true" />
<property name="exposeRequestAttributes" value="true" />
<property name="exposeSessionAttributes" value="true" />
<property name="contentType" value="text/html;charset=UTF-8" />
</bean>
<!--
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
</list>
</property>
<!-- view 接口 下的视图解析对象 -->
<property name="defaultViews">
<list>
<bean
class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" />
<!-- <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"
/> -->
<!-- XML View -->
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<constructor-arg>
<bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="packagesToScan">
<list>
<value>com.sample.model</value>
</list>
</property>
</bean>
</constructor-arg>
</bean>
</list>
</property>
</bean>
默认视图配置为json格式
Xml代码
<property name="defaultContentType" value="application/json" />
这么做是因为现今Ajax技术用得比较多。
查看spring-web.xml配置,里面有较详细的注释。
后端REST注解实现
后端的实现实例详见SimpleController.java
text/html
需要mediaType为text/html 的数据时,采用*.htm的uri请求,如:/do/sample.html请求sample.ftl页面或是sample.jsp页面,因为ftl的视图解析配置在jsp的视图解析之前,所以会先查找Freemarker的目录,没发现的话,则会继续查找jsp的目录。
application/json
因为默认配置数据格式为json,所以需要josn格式的数据时,uri可以不加后缀。以下json的请求都是有效的 /do/sample 和 /do/sample.json 请求处理完成后,直接返回客户端需要的数据对象,spring 会自动调用jackson组件将其转换成json格式。不用加 @ResponseBody注解,是不是更清爽呀。
application/xml
配置采用JAXB做为xml数据的转换组件,只需要在javabean对象的getter方法上加上xml相关注解(详见TestModel.java),在返回该对象及其包装对象时Spring自动转换成xml格式文档。
前端实现
由于我们在web.xml配置文件的url-pattern配置了/do/*. 所以在Controller的注解uri前面需要加上”/do”.
更详细的实现见index.jsp
参考:http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-multiple-representations
smvc.tar.gz (241.8 KB)
下载次数: 306
好了,我们接下来将按
项目构建-->配置文件-->后端实现-->前端实现 来讲解。下面先从构建项目开始
采用Gradle做项目构建
这里只描述一些基本的要用到的构建语法,基础的应用是很简单的。
1. 命令行下进入项目的根目录,即build.gradle配置文件所在的目录。
2. 执行命令:gradle eclipse 自动下载build.gradle配置中的依赖包并生成eclipse的环境配置文件如:.project等等。
3. 上步完成后,在eclipse导入现成项目即可。
如果您想进一步了解gradle,可访问博文:http://yidwo.iteye.com/blog/1848990
或访问其官方网站:http://gradle.org
Spring MVC的配置
web.xml:
Xml代码
<!-- Spring Web Dispatcher Configuration -->
<servlet>
<servlet-name>Dispatcher Servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring-web.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Dispatcher Servlet</servlet-name>
<url-pattern>/do/*</url-pattern>
</servlet-mapping>
重点标注url-pattern部分,url的请求匹配,只要是满足的,都会被Spring mvc 适匹器捕获并处理。
mvc的配置
下面只是列出了主要的ContentNegotiatingViewResolver的相关配置:
Xml代码
<bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1" />
<property name="favorParameter" value="false" />
<property name="ignoreAcceptHeader" value="true" />
<property name="defaultContentType" value="application/json" />
<property name="mediaTypes">
<map>
<entry key="atom" value="application/atom+xml" />
<entry key="html" value="text/html" /><!-- 真正静态页面,使用htm后缀(文件格式) -->
<entry key="json" value="application/json" />
<entry key="xml" value="application/xml" />
</map>
</property>
<property name="viewResolvers">
<list>
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
<!-- 页面请求时先找此配置,无的话再找jsp的视图配置 -->
<bean
class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="cache" value="true" />
<property name="prefix" value="" />
<property name="suffix" value=".ftl" />
<property name="exposeSpringMacroHelpers" value="true" />
<property name="exposeRequestAttributes" value="true" />
<property name="exposeSessionAttributes" value="true" />
<property name="contentType" value="text/html;charset=UTF-8" />
</bean>
<!--
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
</list>
</property>
<!-- view 接口 下的视图解析对象 -->
<property name="defaultViews">
<list>
<bean
class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" />
<!-- <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"
/> -->
<!-- XML View -->
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<constructor-arg>
<bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="packagesToScan">
<list>
<value>com.sample.model</value>
</list>
</property>
</bean>
</constructor-arg>
</bean>
</list>
</property>
</bean>
默认视图配置为json格式
Xml代码
<property name="defaultContentType" value="application/json" />
这么做是因为现今Ajax技术用得比较多。
查看spring-web.xml配置,里面有较详细的注释。
后端REST注解实现
后端的实现实例详见SimpleController.java
text/html
需要mediaType为text/html 的数据时,采用*.htm的uri请求,如:/do/sample.html请求sample.ftl页面或是sample.jsp页面,因为ftl的视图解析配置在jsp的视图解析之前,所以会先查找Freemarker的目录,没发现的话,则会继续查找jsp的目录。
application/json
因为默认配置数据格式为json,所以需要josn格式的数据时,uri可以不加后缀。以下json的请求都是有效的 /do/sample 和 /do/sample.json 请求处理完成后,直接返回客户端需要的数据对象,spring 会自动调用jackson组件将其转换成json格式。不用加 @ResponseBody注解,是不是更清爽呀。
application/xml
配置采用JAXB做为xml数据的转换组件,只需要在javabean对象的getter方法上加上xml相关注解(详见TestModel.java),在返回该对象及其包装对象时Spring自动转换成xml格式文档。
前端实现
由于我们在web.xml配置文件的url-pattern配置了/do/*. 所以在Controller的注解uri前面需要加上”/do”.
更详细的实现见index.jsp
参考:http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-multiple-representations
smvc.tar.gz (241.8 KB)
下载次数: 306
相关文章推荐
- Spring3.2.3 MVC多视图解析实例
- spring-mvc多视图解析配置实例 ContentNegotiatingViewResolver
- 【Java.Spring.MVC】解析视图
- SpringMVC+freemarker 视图解析最小实现
- Spring 4 官方文档学习(十一)Web MVC 框架之resolving views 解析视图
- spring视图解析——自定义解析器实例
- spring-mvc 视图模式之freemarker整合解析
- springMVC controller返回值void 视图解析器如何解析
- 从零开始学习 ASP.NET MVC 1.0 (五) ViewEngine 深入解析与应用实例
- (五) ViewEngine 深入解析与应用实例(mvc)
- ASP.NET MVC学习笔记-Routing及视图引挚解析原理
- 如何让 Spring MVC Controller 的同一个 URL 请求,根据逻辑判断返回 JSON 或者 HTML 视图?
- 从零开始学习 ASP.NET MVC 1.0 (三) Controller/Action 深入解析与应用实例
- struts2 mvc视图实例分析
- Spring mvc +jquery ajax+json的异步实例
- Spring MVC+Ajax创建实例
- Spring3 MVC Restful 多请求类型(json,xml,k-v),多视图配置(Json,Xml,JSP,Freemarker,Volacity等)
- Spring Acegi Security实例解析一
- struts2 mvc视图实例分析
- Spring MVC+Ajax创建实例