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註解修飾.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章