Spring3.2.3 MVC多视图解析实例

2024-01-04 10:08

本文主要是介绍Spring3.2.3 MVC多视图解析实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这个架构当中,没有整合进数据库连接及事务管理等的配置,单纯介绍采用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代码   收藏代码
  1. <!-- Spring Web Dispatcher Configuration -->  
  2.     <servlet>  
  3.         <servlet-name>Dispatcher Servlet</servlet-name>  
  4.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  5.         <init-param>  
  6.             <param-name>contextConfigLocation</param-name>  
  7.             <param-value>  
  8.                 /WEB-INF/spring-web.xml  
  9.             </param-value>  
  10.         </init-param>  
  11.         <load-on-startup>1</load-on-startup>  
  12.     </servlet>  
  13.   
  14.     <servlet-mapping>  
  15.         <servlet-name>Dispatcher Servlet</servlet-name>  
  16.         <url-pattern>/do/*</url-pattern>  
  17. </servlet-mapping>  


重点标注url-pattern部分,url的请求匹配,只要是满足的,都会被Spring mvc 适匹器捕获并处理。 
mvc的配置 
下面只是列出了主要的ContentNegotiatingViewResolver的相关配置: 
Xml代码   收藏代码
  1. <bean  
  2.         class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">  
  3.         <property name="order" value="1" />  
  4.         <property name="favorParameter" value="false" />  
  5.         <property name="ignoreAcceptHeader" value="true" />  
  6.   
  7.         <property name="defaultContentType" value="application/json" />  
  8.   
  9.         <property name="mediaTypes">  
  10.             <map>  
  11.                 <entry key="atom" value="application/atom+xml" />  
  12.                 <entry key="html" value="text/html" /><!-- 真正静态页面,使用htm后缀(文件格式) -->  
  13.                 <entry key="json" value="application/json" />  
  14.                 <entry key="xml" value="application/xml" />  
  15.             </map>  
  16.         </property>  
  17.         <property name="viewResolvers">  
  18.             <list>  
  19.                 <bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />  
  20.                 <!-- 页面请求时先找此配置,无的话再找jsp的视图配置 -->  
  21.                 <bean  
  22.                     class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">  
  23.                     <property name="cache" value="true" />  
  24.                     <property name="prefix" value="" />  
  25.                     <property name="suffix" value=".ftl" />  
  26.                     <property name="exposeSpringMacroHelpers" value="true" />  
  27.                     <property name="exposeRequestAttributes" value="true" />  
  28.                     <property name="exposeSessionAttributes" value="true" />  
  29.                     <property name="contentType" value="text/html;charset=UTF-8" />  
  30.                 </bean>  
  31.     <!--   
  32.                 <bean  
  33.                     class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
  34.                     <property name="viewClass"   value="org.springframework.web.servlet.view.JstlView" />  
  35.                     <property name="prefix" value="/WEB-INF/jsp/" />  
  36.                     <property name="suffix" value=".jsp" />  
  37.                 </bean>  
  38.             -->  
  39.                 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">   
  40.                     <property name="prefix" value="/WEB-INF/jsp/" />   
  41.                     <property name="suffix" value=".jsp" />   
  42.                 </bean>   
  43.             </list>  
  44.         </property>  
  45.         <!-- view 接口 下的视图解析对象 -->  
  46.         <property name="defaultViews">  
  47.             <list>  
  48.                 <bean  
  49.                     class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" />  
  50.                 <!-- <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"   
  51.                     /> -->  
  52.                 <!-- XML View -->  
  53.                 <bean class="org.springframework.web.servlet.view.xml.MarshallingView">  
  54.                     <constructor-arg>  
  55.                         <bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller">  
  56.                             <property name="packagesToScan">  
  57.                                 <list>  
  58.                                     <value>com.sample.model</value>  
  59.                                 </list>  
  60.                             </property>  
  61.                         </bean>  
  62.                     </constructor-arg>  
  63.                 </bean>  
  64.             </list>  
  65.         </property>  
  66.     </bean>  

默认视图配置为json格式 
Xml代码   收藏代码
  1. <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多视图解析实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/568977

相关文章

Spring三级缓存解决循环依赖的解析过程

《Spring三级缓存解决循环依赖的解析过程》:本文主要介绍Spring三级缓存解决循环依赖的解析过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、循环依赖场景二、三级缓存定义三、解决流程(以ServiceA和ServiceB为例)四、关键机制详解五、设计约

Redis实现分布式锁全解析之从原理到实践过程

《Redis实现分布式锁全解析之从原理到实践过程》:本文主要介绍Redis实现分布式锁全解析之从原理到实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、背景介绍二、解决方案(一)使用 SETNX 命令(二)设置锁的过期时间(三)解决锁的误删问题(四)Re

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

Golang HashMap实现原理解析

《GolangHashMap实现原理解析》HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持高效的插入、查找和删除操作,:本文主要介绍GolangH... 目录HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Python利用ElementTree实现快速解析XML文件

《Python利用ElementTree实现快速解析XML文件》ElementTree是Python标准库的一部分,而且是Python标准库中用于解析和操作XML数据的模块,下面小编就来和大家详细讲讲... 目录一、XML文件解析到底有多重要二、ElementTree快速入门1. 加载XML的两种方式2.

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

java解析jwt中的payload的用法

《java解析jwt中的payload的用法》:本文主要介绍java解析jwt中的payload的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解析jwt中的payload1. 使用 jjwt 库步骤 1:添加依赖步骤 2:解析 JWT2. 使用 N