SpringMVC-3 类型转换器及控制层返回值

一、类型转换器

SpringMVC可以进行类型转换,默认已经实现了很多类型转换。但若要自定义一个类型转换器,则需:

1、实现Converter接口:Coverter<S,T>

​ S:指需要转换的类型

​ T:转换成的类型

以字符串转换日期为例

使用SimpleDateFormat:

public Date convert(String s) {
    if(s==null){
        throw new RuntimeException("请传入时间数据");
    }
    DateFormat af=new SimpleDateFormat("yyyy-MM-dd");
    try {
        Date date=af.parse(s);
        return date;
    } catch (ParseException e) {
        throw new RuntimeException("程序出错");
    }
}
2、转换函数完成后需要配置该转换类方可生效:

​ 使用标签配置类型转换器、关键字为ConversionServiceFactoryBean

<!--配置类型转换器-->
<bean id="typeTransform" class="org.springframework.context.support.ConversionServiceFactoryBean">
    <property name="converters">
        <set>
            <bean class="com.lijie.utils.typeTransform"></bean>
        </set>
    </property>
</bean>
3、配置完类型转换器后,需要开启该配置,使之生效。

在开启springMVC框架中,使用conversion-service关键字

<mvc:annotation-driven conversion-service="typeTransform"/>

二、响应的数据和结果视图

1、控制器返回一个字符串

​ 将控制器中要返回的数据存入到ModelMap,ModelMap的底层会将数据存入到request域中,前端使用EL语句或request.getAttribute方法即可调用该数据

2、控制器返回void

有两种情况:

​ 1、默认返回一个值

​ 2、控制器获得HttpServletResquest和HttpServletResponse对象,在控制器中进行请求转发或重定向。

​ 3、直接响应:response.getWriter.println()

3、关键字实现转发与重定向

使用关键字时,无需使用到视图解析器。

4、控制器返回ModelAndView

​ ModelAndView是SpringMVC框架提供的一个对象,该对象可以用作控制器方法的返回值

三、ResponseBody响应json数据

​ 由于配置了前端控制器,前端页面中的静态资源,控制器拦截。因此需要在Spring的配置文件中进行配置。使之取消拦截部分请求。

​ 关键标签:mvc:resources

<!--前端控制器不拦截的对象-->
<mvc:resources location="/js/" mapping="/js/**" ></mvc:resources>  <!--不拦截js-->
<mvc:resources location="/css/" mapping="/css/**" ></mvc:resources>  <!--不拦截css-->
<mvc:resources location="/images/" mapping="/images/**" ></mvc:resources>  <!--不拦截图片-->
1、前端发送一个json数据
<script>
$(function() {
    $("#ajax").click(function () {
        $.ajax({
            url:"user/testAjax",
            type:"post",
            contentType:"application/json;charset=UTF-8",
            dataType:"json",
            data:'{"username":"李杰","age":"20"}',
            success:function (data) {
            }
        });
    });
});
</script>

后端接收到:{“username”:“李杰”,“age”:“20”}这一个json对象。

​ 若使该json对象自动封装成一个属性值为username=李杰,age=20的JavaBean(user)对象,则需要引入SpringMVC提供的一组jar包:jackson

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-core</artifactId>
  <version>2.9.6</version>
</dependency>

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-annotations</artifactId>
  <version>2.9.0</version>
</dependency>

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.9.6</version>
</dependency>

​ 引入jar包后,在控制器参数列表中输入:@RequestBody User user 即可使json数据封装成一个JavaBean对象。

@RequestMapping("/testAjax")
public void testAjax(@RequestBody User user){
    System.out.println(user);
    System.out.println("执行了");
}
2、后端响应一个json数据

​ 后端响应json对象时,以往需要使用response和输出流的形式,将JavaBean转换成Json对象。而在SpringMVC中,使用@responseBody注解即可转换成Json对象。

@RequestMapping("/testAjax")
public @ResponseBody User testAjax(@RequestBody User user){
    System.out.println(user);
    System.out.println("执行了");
    return user;
}

​ 后端响应后,Ajax即可得到JavaBean的Json对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值