这个架构当中,没有整合进数据库连接及事务管理等的配置,单纯介绍采用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:
<!-- 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的相关配置:
<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格式
<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
分享到:
相关推荐
** Jersey2.13 + Spring3.2.3入门实例详解** 本文将深入探讨如何结合Jersey 2.13和Spring 3.2.3框架构建一个入门级的Web服务应用。首先,我们来了解这两个关键组件的核心功能。 **Jersey** 是Java语言中最流行的...
7. **Spring MVC**:Spring的Web MVC框架简化了构建Web应用程序的过程,它提供了Model、View和Controller的分离,使得开发者可以更专注于业务逻辑的实现,而不用关心视图的呈现和请求的处理。 8. **Maven或Gradle...
Struts2、Hibernate和Spring(通常简称为SSH)是Java Web开发中的三个核心框架,分别用于处理MVC(模型-视图-控制器)架构、对象关系映射(ORM)和依赖注入(DI)。将这三个框架整合在一起,可以构建出高效、可维护...
5. **MVC框架**:Spring MVC是Spring提供的Web开发框架,提供了模型-视图-控制器模式的实现,帮助开发者构建高性能、松耦合的Web应用。 6. **消息支持**:Spring框架包含Spring Messaging模块,提供对消息传递系统...
Struts2、Spring和Hibernate是Java Web开发中的三大...Struts2负责请求调度和视图渲染,Spring管理应用的组件和事务,而Hibernate则负责数据持久化。这样的架构既保证了开发效率,也提高了系统的可扩展性和可维护性。
Spring 是一个轻量级的全面应用程序框架,提供依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)以及大量的集成工具。而 Hibernate 则是一个 ORM(对象关系映射)框架,它简化了数据库操作,使得开发者可以...
这里提到的是一组完整的Spring库,包括`spring-core`、`spring-context`、`spring-webmvc`、`spring-web`、`spring-beans`、`spring-test`、`spring-jdbc`、`spring-orm`、`spring-aop`和`spring-tx`,它们都是3.2.0...
Struts2、Spring和MyBatis是Java Web开发中三个重要的框架,它们分别负责MVC模式中的Action层、业务逻辑层和服务数据访问层。而jQuery UI则是一个前端库,提供了丰富的用户界面组件,如对话框、日期选择器、拖放功能...
Struts2、Spring3.2.4和MyBatis3.2.3是Java开发中的三个核心框架,它们各自承担着不同的职责,并且可以协同工作,构建高效的企业级应用。这个压缩包文件的标题和描述暗示了它们在实现通用分页功能时的应用,特别是...
13.5. 视图与视图解析 13.5.1. 视图解析器 13.5.2. 视图解析链 13.5.3. 重定向(Rediret)到另一个视图 13.5.3.1. RedirectView 13.5.3.2. redirect:前缀 13.5.3.3. forward:前缀 13.6. 本地化解析器 13.6.1. ...
13.5. 视图与视图解析 13.5.1. 视图解析器 13.5.2. 视图解析链 13.5.3. 重定向(Rediret)到另一个视图 13.6. 本地化解析器 13.6.1. AcceptHeaderLocaleResolver 13.6.2. CookieLocaleResolver 13.6.3. ...
10.4.1 Spring通过单实例化Bean简化多线程问题 10.4.2 启动独立线程调用事务方法 10.5 联合军种作战的混乱 10.5.1 Spring事务管理器的应对 10.5.2 Hibernate+Spring JDBC混合框架的事务管理 10.6 特殊方法成漏网之鱼...
13.5. 视图与视图解析 13.5.1. 视图解析器(ViewResolver) 13.5.2. 视图解析链 13.5.3. 重定向(Rediret)到另一个视图 13.6. 本地化解析器 13.6.1. AcceptHeaderLocaleResolver 13.6.2. ...
13.5. 视图与视图解析 13.5.1. 视图解析器 13.5.2. 视图解析链 13.5.3. 重定向(Rediret)到另一个视图 13.6. 本地化解析器 13.6.1. AcceptHeaderLocaleResolver 13.6.2. CookieLocaleResolver 13.6.3. ...
13.5. 视图与视图解析 13.5.1. 视图解析器(ViewResolver) 13.5.2. 视图解析链 13.5.3. 重定向(Rediret)到另一个视图 13.6. 本地化解析器 13.6.1. AcceptHeaderLocaleResolver 13.6.2. ...
10.4.1 Spring通过单实例化Bean简化多线程问题 10.4.2 启动独立线程调用事务方法 10.5 联合军种作战的混乱 10.5.1 Spring事务管理器的应对 10.5.2 Hibernate+Spring JDBC混合框架的事务管理 10.6 特殊方法成漏网之鱼...
- **1.2.2.5 Web**:提供了构建Web应用程序的所有功能,包括MVC控制器、视图解析器、表单标签库等。 - **1.2.2.6 Test**:提供支持测试Spring组件的JUnit和TestNG集成。 - **1.2.3 Usage Scenarios 使用场景** ...
1.1 实例化Spring IoC容器 1 1.1.1 问题 1 1.1.2 解决方案 1 1.1.3 工作原理 3 1.2 配置Spring IoC容器中的Bean 4 1.2.1 问题 4 1.2.2 解决方案 4 1.2.3 工作原理 4 1.3 调用构造程序创建Bean 14 ...
1.1 实例化Spring IoC容器 1 1.1.1 问题 1 1.1.2 解决方案 1 1.1.3 工作原理 3 1.2 配置Spring IoC容器中的Bean 4 1.2.1 问题 4 1.2.2 解决方案 4 1.2.3 工作原理 4 1.3 调用构造程序创建Bean 14 ...
4. **spring-webmvc-4.3.2.RELEASE.jar**:这是Spring MVC的部分,提供了一个模型-视图-控制器的Web应用架构。它负责处理HTTP请求,映射到相应的控制器方法,进行视图渲染,以及数据绑定和验证。 5. **spring-web-...