`
liguiking
  • 浏览: 30632 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类

Spring3 MVC Restful 多请求类型(json,xml,k-v),多视图配置(Json,Xml,JSP,Freemarker,Volacity等)

阅读更多

如题,少废话

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
    http://www.springframework.org/schema/aop 
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">
   
    <context:component-scan base-package="com.xxx." />
    <aop:aspectj-autoproxy proxy-target-class="true" />
    <context:annotation-config />
    <import resource="classes/DataSource.xml"/>
    <import resource="classes/applicationContext.xml"/>
    <mvc:interceptors>
        <bean class="com.globeway.web.servlet.intercept.JsonGetInterceptor" />
    </mvc:interceptors>


    <bean id="defaultAnnotationHandlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" ></bean>
    <!-- 配置多请求数据类型,如json xml-->

    <bean id="annotationMethodHandlerAdapter"  class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >
        <property name="messageConverters">
            <list>

                <!-- 解析json请求数据,将json转换为java对象-->
                <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
                <!-- 解析xml请求数据,将xml转换为java对象-->

                <bean class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
                    <constructor-arg>
                        <bean class="org.springframework.oxm.xstream.XStreamMarshaller">
                           <property name="streamDriver" >
                               <bean class="com.thoughtworks.xstream.io.xml.DomDriver"/>
                           </property>
                           
                           <property name="autodetectAnnotations" ><value>true</value></property>
                           <!--可以与xml互换的对象,需要使用XStream的注解,注解的使用方法请参XStream官网-->

                           <property name="annotatedClasses">
                               <list>
                                   <value>com.xxx.XxxxDTO</value>
                               </list>
                           </property>
                          
                        </bean>
                    </constructor-arg>
                </bean> 
                <bean class="org.springframework.http.converter.FormHttpMessageConverter"/>
                <bean class="org.springframework.http.converter.BufferedImageHttpMessageConverter"/>
                <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
                <bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
                <bean class="org.springframework.http.converter.ResourceHttpMessageConverter"/>

                <!--可以增加其他数据类型,请参考spring的API-->
            </list>
        </property>
    </bean>    
  
    </bean>   
    <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">

      <!-- .ftl文件存放的根目录-->

      <property name="templateLoaderPath" value="/WEB-INF/ftl/"/>
      <property name="freemarkerVariables">
        <map>
          <entry key="xml_escape" value-ref="fmXmlEscape"/>
        </map>
      </property>

      <!--可以增加其他freemarker的配置,详情请参阅FreeMarkerConfigurerAPI-->
    </bean>
   
    <bean id="fmXmlEscape" class="freemarker.template.utility.XmlEscape"/>
       
    <bean
        class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
         <property name="defaultContentType" value="application/json" />
        <property name="mediaTypes">
            <map>
                <entry key="html" value="text/html" />
                <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.freemarker.FreeMarkerViewResolver">
                  <property name="cache" value="true"/>
                  <property name="prefix" value=""/>
                  <property name="suffix" value=".ftl"/>
                  <property name="exposeSpringMacroHelpers" value="true"/>
                </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>

                <!-- 可加入其他视图技术如 volacity jstl等-->                       
            </list>
        </property>
        <property name="defaultViews">
            <list>

                <!-- 输出为JSON数据-->
                <bean
                    class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
                </bean>

                <!-- 输出为xml数据-->
                <bean id="marshallingView" class="org.springframework.web.servlet.view.xml.MarshallingView">
                    <property name="marshaller">
                        <bean id="xStreamMarshaller" class="org.springframework.oxm.xstream.XStreamMarshaller" >                         
                            <property name="autodetectAnnotations" value="true"/>
                        </bean>
                    </property>
                    <property name="contentType" value="application/xml" />                   
                </bean>                
            </list>
        </property>
    </bean>

    <bean id="exceptionResolver"
        class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
       
        <property name="defaultErrorView" value="/commons/error" />
        <property name="exceptionMappings">
            <props>
            </props>
        </property>
    </bean>
</beans>

 

Controller:

@Controller
@RequestMapping("/register/person")
public class PersonController {

   
    @RequestMapping(method=RequestMethod.GET)
    public ModelAndView list() {
   
        HashMap<String,Object> model = new HashMap<String,Object>();
        model.put("pager", pager); 
        return new ModelAndView("/register/person/personList",model );
    }
}

 

  http://xxxx:pp/register/person

 

  ajax:
  jQuery.ajax({
                url: '/register/person',
                contentType: "application/json",//application/xml
                processData: true,//contentType为xml时,些值为false
                dataType: "html",//json--返回json数据类型;xml--返回xml
                data: {},
                success: function(data) {
                 
                },            
                error:function(e){
               
                }
  });

 

 

分享到:
评论
7 楼 liuweifeng 2010-08-26  
请问LZ,下面这句是虾米?
<mvc:interceptors>
        <bean class="com.globeway.web.servlet.intercept.JsonGetInterceptor" />
</mvc:interceptors>
6 楼 yangfuchao418 2010-08-26  
spring 还好。用struts2构建restful 真TMD 不方便。
5 楼 shiren1118 2010-08-26  
liguiking 写道
配置已经很详细了,不信可以试试,有问题一起研究研究



恩,好的,一定要试试,如果可以的话,你就是第一个吃的了这个螃蟹的人
4 楼 liguiking 2010-08-26  
<p>刚发现我们可爱的汉字居然变异???</p>
<p> </p>
<p>    &lt;bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"&gt;<br>      &lt;property name="templateLoaderPath" value="/WEB-INF/ftl/"/&gt;<br>      &lt;property name="freemarkerSettings"&gt;<br>          &lt;props&gt;<br>              &lt;prop key="defaultEncoding"&gt;UTF-8&lt;/prop&gt;<br>          &lt;/props&gt;<br>      &lt;/property&gt;<br>      &lt;property name="freemarkerVariables"&gt;<br>        &lt;map&gt;<br>          &lt;entry key="xml_escape" value-ref="fmXmlEscape"/&gt;<br>        &lt;/map&gt;<br>      &lt;/property&gt;<br>      <br>    &lt;/bean&gt;</p>
<p> </p>
<p>viewResolvers 中的FreeMarkerViewResolver</p>
<p>还要加入:</p>
<p>&lt;property name="contentType" value="text/html;charset=UTF-8"/&gt;</p>
3 楼 liguiking 2010-08-26  
public ModelAndView list(@RequestBody Xxxx xxx)
这样使用http.GET时带参数会有问题,需要修改
org.springframework.http.server.ServletServerHttpRequest.getBody()方法
2 楼 liguiking 2010-08-26  
配置已经很详细了,不信可以试试,有问题一起研究研究
1 楼 shiren1118 2010-08-26  
真能行得通?Freemarker,Volacity貌似之前都没有一个好的解决方案?楼主说的详细点吧

相关推荐

    spring-mvc-官方中文文档

    8. **视图解析**:Spring MVC 支持多种视图技术,如 JSP、FreeMarker、Thymeleaf 等。视图解析器(ViewResolver)会根据指定的视图名和前缀/后缀来生成实际视图的全路径。 9. **数据绑定**:Spring MVC 自动支持...

    springMVC 多视图配置(Jsp Freemarket Json)实例

    在这个"springMVC 多视图配置(Jsp Freemarket Json)实例"中,我们将探讨如何在 SpringMVC 中设置多种视图解析器来支持 Jsp、FreeMarker 和 Json 格式的响应。 **1. 视图解析器 (View Resolver)** 在 SpringMVC ...

    spring-mvc jar包

    Spring MVC支持多种视图技术,如JSP、FreeMarker、Thymeleaf等。视图解析器(如InternalResourceViewResolver)会根据视图名称找到对应的资源,并渲染输出。 对于依赖管理,"aopalliance"标签可能指的是AOP(面向切...

    Spring-mvc-showcase

    5. **视图解析**:Spring MVC 默认使用 JSP 作为视图技术,但也可以配置 FreeMarker、Thymeleaf 等其他模板引擎。视图解析器根据控制器返回的视图名找到对应的视图文件,并结合模型数据渲染输出。 6. **异常处理**...

    Spring-MVC-step-by-step2.rar

    Spring MVC 支持多种视图技术,如 JSP、FreeMarker、Thymeleaf 等,你可以根据项目需求选择合适的视图技术。 Spring MVC 还提供了数据绑定和验证功能。通过 ModelAttribute 注解,可以将请求参数自动绑定到控制器...

    spring-mvc-showcase.zip

    Spring MVC 支持多种视图技术,如JSP、FreeMarker、Thymeleaf等。在`@RequestMapping`方法中,可以使用`return "viewName"`来指定视图,Spring MVC会根据配置的视图解析器来生成实际的视图页面。 五、视图解析器...

    Spring.MVC学习指南.pdf

    - JSP,FreeMarker,Thymeleaf等视图技术可与Spring MVC集成,用于生成动态HTML页面。 - 使用ModelAndView或Model对象传递数据到视图。 6. **异常处理**: - `@ExceptionHandler` 注解可以在Controller中处理...

    Spring-mvc Srping-boot spring-jdbc

    此外,Spring MVC支持多种视图技术,如JSP、Thymeleaf和FreeMarker,提供了强大的数据绑定和校验功能。 **Spring Boot** Spring Boot是为了简化Spring应用程序的初始搭建和配置而诞生的。它内置了Tomcat或Jetty...

    精通Spring MVC4

    JSP、FreeMarker、Thymeleaf等都可以作为视图技术,Spring MVC支持多种视图技术的集成。 5. **模型数据:Model和ModelAndView** Model接口用于存储请求处理过程中产生的数据,这些数据可以通过Model.addAttribute...

    spring-mvc 项目

    - **View**:视图负责渲染模型数据,通常使用 JSP、FreeMarker 或 Thymeleaf 等模板技术。 - **Controller**:控制器处理用户的请求,调用业务服务,准备模型数据,并决定哪个视图来呈现结果。 - **...

    spring-webmvc-3.2.5.RELEASE

    Spring MVC支持多种视图技术,如JSP、FreeMarker、Thymeleaf等。3.2.5版本优化了视图解析过程,允许开发者自定义视图解析逻辑。 6. **数据绑定与验证**: Spring MVC提供了强大的数据绑定和验证机制,可以自动将...

    Spring mvc5.0.3 所有jar包

    5. **视图解析**: Spring MVC支持多种视图技术,如JSP、FreeMarker、Thymeleaf等。通过`viewResolver`配置,可以指定视图解析器,将视图名解析为实际的视图路径。 6. **RESTful风格的URL设计**: Spring MVC支持创建...

    Mastering Spring MVC 4(2015.09)源码

    此外,Spring MVC 4还支持RESTful风格的Web服务,通过@RequestMapping注解的produces和consumes属性,可以处理不同格式的HTTP请求和响应,如JSON、XML等。 总的来说,"Mastering Spring MVC 4(2015.09)源码"提供了...

    spring-mvc-step-by-step

    在Spring MVC中,你可以使用模型对象来传递数据,而视图可以通过模板引擎(如Thymeleaf、JSP等)来渲染。教程会展示如何创建模型对象,以及如何使用视图解析器来决定最终展示的页面。 5. **请求处理** 通过`@...

    spring in action mvc 第四版 中文版

    《Spring in Action: Spring MVC 第四版 中文版》是一本深入探讨Spring MVC框架的权威指南,适合Java开发者阅读。本书全面介绍了如何使用Spring MVC来构建健壮、高性能的Web应用程序。Spring MVC是Spring框架的核心...

    spring mvc

    11. **MVC配置**: 传统的XML配置方式逐渐被Java-based配置和注解配置取代,简化了配置过程,使得Spring MVC应用更易维护。 12. **RESTful风格**: Spring MVC 支持创建RESTful API,通过@RequestMapping配合HTTP动词...

    Spring MVC 1 资源文件

    Spring MVC 可以配合多种视图技术,如 JSP、FreeMarker、Thymeleaf 等,提供丰富的用户体验。 10. **Ajax 支持** 通过 JSON 或 XML 数据交换,Spring MVC 可以方便地与前端 JavaScript 进行异步交互。 这个...

    Spring MVC 4.3.4

    4. **视图解析**:Spring MVC支持多种视图技术,如JSP、Thymeleaf、FreeMarker等。视图解析器会根据指定的视图名称,找到对应的视图模板进行渲染。 5. **异常处理**:通过@ControllerAdvice和@ExceptionHandler注解...

    spring-mvc-master.zip

    View是用户界面,可以是JSP、FreeMarker、Thymeleaf等模板引擎,Spring MVC支持多种视图技术。 五、数据绑定与验证 Spring MVC 提供了强大的数据绑定功能,可以从请求参数自动绑定到JavaBean的属性上。同时,通过...

    spring-webmvc-3.1.1.RELEASE.jar.zip

    在3.1.1版本中,对这两者进行了优化,支持更多的视图技术,如JSP、FreeMarker、Thymeleaf等。 3. **HandlerMapping与HandlerAdapter**: 这两个组件负责映射HTTP请求到合适的处理器方法。Spring Web MVC 3.1.1提供...

Global site tag (gtag.js) - Google Analytics