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

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注解修饰.
发布了320 篇原创文章 · 获赞 152 · 访问量 64万+

猜你喜欢

转载自blog.csdn.net/hello_word2/article/details/104875116