• spring mvc 第三天【注解实现springmvc Handler返回值为Object 的配置】


    这里使用的是在前台发起请求Handler,后台伪造数据响应给前台,

    解决方案:将之前的viewResolver抹掉,配置对应(request)请求的Handler信息如下

    之前Handler返回的都直接就是逻辑视图名,并且需要配置相对应的固定的视图解析器,不太方便,这次需要返回Object,使Handler更灵活。

    既然return 之后的值不再是逻辑视图名称了,那么就让@ResponseBody来帮忙吧

    这里有两个新的注解:

    @RequestBody 将HTTP请求正文转换为适合的HttpMessageConverter对象。

    @ResponseBody 将内容或对象作为 HTTP 响应正文返回,并调用适合HttpMessageConverter的Adapter转换对象,写入输出流。

    HttpMessageConverter接口,需要开启<mvc:annotation-driven  />。 
    AnnotationMethodHandlerAdapter将会初始化7个转换器,可以通过调用AnnotationMethodHandlerAdaptergetMessageConverts()方法来获取转换器的一个集合 List<HttpMessageConverter> 

    List<HttpMessageConverter> 

    引用
    ByteArrayHttpMessageConverter 
    StringHttpMessageConverter 
    ResourceHttpMessageConverter 
    SourceHttpMessageConverter 
    XmlAwareFormHttpMessageConverter 
    Jaxb2RootElementHttpMessageConverter 
    MappingJacksonHttpMessageConverter

    可以理解为,只要有对应协议的解析器,你就可以通过几行配置,几个注解完成协议——对象的转换工作!

    PS:Spring默认的json协议解析由Jackson完成。 

     1 @Controller
     2 public class MyController {
     3    //处理器方法
     4     @RequestMapping(value="/first.do")
     5     @ResponseBody
     6     public Object doFirst(){
     7         return 1;
     8     }
     9       
    10     //处理器方法-----String
    11     @RequestMapping(value="/second.do",produces="text/html;charset=utf-8")
    12     @ResponseBody
    13     public Object doSecond(){
    14         
    15         return "汉字";
    16     }
    17     
    18     
    19     //处理器方法-----UserInfo
    20         @RequestMapping(value="/third.do")
    21         @ResponseBody
    22         public Object doThird(){
    23             UserInfo info=new UserInfo();
    24             info.setAge(12);
    25             info.setName("Happy");
    26             return info;
    27         }
    28         
    29         //处理器方法-----map
    30         @RequestMapping(value="/four.do")
    31         @ResponseBody
    32         public Object doFour(){
    33             UserInfo info=new UserInfo();
    34             info.setAge(12);
    35             info.setName("Happy");
    36             
    37             
    38             Map<String,UserInfo> map=new HashMap<String,UserInfo>();
    39             map.put("info", info);
    40             return map;
    41         }
    42         
    43         //处理器方法-----list
    44         @RequestMapping(value="/five.do")
    45         @ResponseBody
    46         public Object doFive(){
    47             UserInfo info=new UserInfo();
    48             info.setAge(12);
    49             info.setName("Happy");
    50         
    51         
    52         List<UserInfo> list=new ArrayList<UserInfo>();
    53          list.add(info);
    54             return list;
    55         }
    56 }

    上面的这些Handler都是适用于ajax请求的。不用指定返回视图信息。

  • 相关阅读:
    高计数率下的梯形成形算法的计数率矫正
    梯形成形算法
    就业还是和一起创业?
    努力,还是会前进,世界一定是越来越好。
    一日黑客,SQL注入
    钱,money,人生
    一些技术生词记录
    江苏省计算机C语言考试记录
    NVIDIA显卡设置
    大二寒假 之 丢失的13天
  • 原文地址:https://www.cnblogs.com/john69-/p/6087461.html
Copyright © 2020-2023  润新知