SpringMVC实现ajax操作 DateTimeFormat格式化日期属性

假装没事ソ 提交于 2020-03-16 18:38:08

1.ajax复习

a)ajax是一种能够进行局部页面刷新的艺术. 变同步操作为异步操作.
b)原生ajax操作的步骤:
  • 创建对象XmlHttpRequest.
  • 监听事件onreadystatechange
  • 准备请求, 调用open方法
  • 发送请求, 调用send方法
  • 接收响应内容, responseText来接收响应文本信息
c)jquery对ajax的支持:
  • $.ajax({}), url, method, data, dataType, success, error, …
  • $.get(url, data, success, dataType), $.post(url, data, success, dataType), $.getJSON(url, data, success), $.getScript(url, success)
  • doc.load(url, data, function), 要求返回内容格式为html, 直接将返回的内容追加到doc元素内部.

2.SpringMVC实现ajax操作

  • 使用@ResponseBody注解可以使控制器方法不进行页面跳转, 而是直接响应内容.
  • 当响应内容是字符串时, SpringMVC会自动设置响应头为”text/html;charset=ISO-8859-1”, 需要通过produces属性进行修改;
  • 当响应内容是对象时, SpringMVC会尝试将对象转换为json格式. 此时需要依赖jackson的包. 同时, 自动设置响应头为”application/json;charset=UTF-8”.
@Controller
@RequestMapping("/demo")
public class DemoController {
    /**
     * ajax返回json格式的user对象
     *
     * @return
     */
    @GetMapping("/demo3")
    @ResponseBody
    public User demo3() {
        User user = new User();
        user.setId(123);
        user.setName("张三");
        user.setBirthday(new Date());
        return user;
    }

    /**
     * SpringMVC中ajax的实现
     * ResponseBody注解的作用是告诉SpringMVC, 不进行页面跳转, 而是进行数据输出
     * @param username
     * @return
     */
    @PostMapping(value = "/demo2", produces = "text/html;charset=UTF-8")
    @ResponseBody
    public String demo2(@RequestParam(defaultValue = "mvc") String username) {
        String msg = "<h2>hello " + username + "</h2>";
        return msg;
    }

    /**
     * 原生实现方式
     *
     * @param username
     * @param resp
     * @throws Exception
     */
    @PostMapping("/demo1")
    public void demo1(
            @RequestParam(defaultValue = "mvc") String username,
            HttpServletResponse resp) throws Exception {
        String msg = "<h2>hello " + username + "</h2>";
        resp.setContentType("text/html;charset=UTF-8");
        resp.getWriter().print(msg);
    }
}
public class User implements Serializable {
    private Integer id;
    @JsonProperty("username") // 设置转换时的名称
    private String name;
    @DateTimeFormat(pattern = "yyyy-MM-dd") // springmvc提供, 用于接收请求参数时日期的转换
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") // jackson提供,日期和json字符串转换时使用
    private Date birthday;
}
  • 可以使用@RestController简化配置, 从spring4开始提供, 表示当前控制器下所有的方法都被ResponseBody注解修饰.
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!