2021-02-22 springmvc_ajax_json

服务器返回的对象转换成json格式 中文乱码:

1,注解RequestMapping中produces属性可以设置返回数据的类型以及编码,可以是json或者xml

@RequestMapping(value = "xxx",produces = "application/json;charset=utf-8")

@RequestMapping(value = "xxx",produces = "application/xml;charset=utf-8")

2,xml中配置

<mvc:annotation-driven>
        <!--JSON格式乱码处理方式-->
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <constructor-arg value="UTF-8"/>
            </bean>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="objectMapper">
                    <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
                        <property name="failOnEmptyBeans" value="false"/>
                    </bean>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

Jackson:

UserController.java

@Controller
public class UserController {
    @RequestMapping("json1")
    //@RequestMapping(value = "json1",produces = "application/json;charset=utf-8")
    @ResponseBody //将服务器返回的对象转换成jsong格式响应回去
    public String json1() throws JsonProcessingException {
        //需要一个Jackson的对象映射器  使用它可以直接将对象转换为json字符串
        ObjectMapper mapper = new ObjectMapper();
        User user = new User("zs",23,"男");
        System.out.println(user);
        //将Java对象转换为json字符串
        String s = mapper.writeValueAsString(user);
        System.out.println(s);
        return s;
    }
    @RequestMapping(value = "json2",produces = "application/json;charset=utf-8")
    //produces  指定响应体返回类型和编码
    @ResponseBody //将服务器返回的对象转换成jsong格式响应回去
    public String json2() throws JsonProcessingException {
        User user = new User("zs",23,"男");
        System.out.println(user);
        return new ObjectMapper().writeValueAsString(user);
    }
    @RequestMapping("json3")
    @ResponseBody //将服务器返回的对象转换成jsong格式响应回去
    public String json3() throws JsonProcessingException {
        List<User> list = new ArrayList<>();
        User user1 = new User("zs",23,"男");
        User user2 = new User("ls",24,"女");
        User user3 = new User("ww",25,"女");
        User user4 = new User("zl",26,"男");
        list.add(user1);
        list.add(user2);
        list.add(user3);
        list.add(user4);
        return new ObjectMapper().writeValueAsString(list);
    }
    @RequestMapping("time1")
    @ResponseBody //将服务器返回的对象转换成jsong格式响应回去
    public String time1() throws JsonProcessingException {
        Date time = new Date();
        System.out.println(time);
        //时间默认返回的json字符串变成了时间戳的格式
        return new ObjectMapper().writeValueAsString(time);
    }
    @RequestMapping("time2")
    @ResponseBody //将服务器返回的对象转换成jsong格式响应回去
    public String time2() throws JsonProcessingException {
        ObjectMapper mapper = new ObjectMapper();
        //关闭时间戳功能     mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
        //自定义时间格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
        //指定mapper时间格式为SimpleDateFormat
        mapper.setDateFormat(sdf);
        Date time = new Date();
        System.out.println(time);
        //时间默认返回的json字符串变成了时间戳的格式
        return mapper.writeValueAsString(time);
    }
    //编写一个工具类JsonUtils
    @RequestMapping("time3")
    @ResponseBody //将服务器返回的对象转换成jsong格式响应回去
    public String time3() throws JsonProcessingException {
        return JsonUtils.getJson(new Date());
    }
}

JsonUtils .java

public class JsonUtils {

    public static String getJson(Object object){
        return getJson(object,"yyyy-MM-dd HH:mm:ss");
    }

    public static String getJson(Object object,String dateFormat){
        ObjectMapper mapper = new ObjectMapper();
        //关闭时间戳功能
        mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
        //自定义时间格式
        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
        //指定mapper时间格式为SimpleDateFormat
        mapper.setDateFormat(sdf);

        //时间默认返回的json字符串变成了时间戳的格式
        try {
            return mapper.writeValueAsString(object);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return null;
    }
}


idea tomcat控制台中文乱码:

1.在vm中设置编码方式 -Dfile.encoding=UTF-8
在这里插入图片描述
2.File->Setting ,设置File Encodings ,检查Default Encodings 是否是UTF-8.

3.打开Idea的安装文件,用记事本打开这两个配置文件,在每一个文件后,添加
-Dfile.encoding=UTF-8
在这里插入图片描述
在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值