http的使用主要是三個類:HttpServletRequest(向客戶端取數據),HttpServletResponse(向客戶端發數據),HttpSession(記錄瀏覽器和服務器的長期交互)。瀏覽器
取出http的請求頭的參數和cookie數據:服務器
1 @RequestMapping(path= {"/request"}) 2 @ResponseBody 3 public String request(HttpServletRequest request, 4 HttpServletResponse response, 5 HttpSession session) { 6 StringBuilder sb = new StringBuilder(); 7 Enumeration<String> headerNames = request.getHeaderNames(); 8 while(headerNames.hasMoreElements()) { 9 String name = headerNames.nextElement(); 10 sb.append(name + " ::::::::::::::::::::::::::::: " + request.getHeader(name) + "<br/>"); 11 } 12 for (Cookie cookie : request.getCookies()) { 13 sb.append("Cookie: "); 14 sb.append(cookie.getName()); 15 sb.append(":"); 16 sb.append(cookie.getValue()); 17 sb.append("<br>"); 18 } 19 return sb.toString(); 20 }
顯示結果:cookie
添加cookie並在頁面上顯示:session
1 @RequestMapping(value= {"/response"}) 2 @ResponseBody 3 public String response( @CookieValue(value = "cookieid", defaultValue = "cookieId") String cookieId, 4 @RequestParam(value = "key", defaultValue = "key") String key, 5 @RequestParam(value = "value", defaultValue = "value") String value, 6 HttpServletResponse response) { 7 response.addCookie(new Cookie(key, value)); 8 //response.addHeader(key, value); 9 return "cookievalue: " + cookieId; 10 }
顯示結果:app
備註:在url中把key寫入cookieid,顯示時,cookieid就會顯示value值,隨value的改變而改變。函數
若訪問/redirect/301,就永久跳轉到/hello下(301),不通過判斷。不然暫時性跳轉(302)。ui
1 //301永久性跳轉 2 //302暫時性跳轉 3 @RequestMapping(path = {"/redirect/{code}"}) 4 @ResponseBody 5 public RedirectView redirect(@PathVariable("code") int code, 6 HttpSession session) { 7 RedirectView red = new RedirectView("/hello", true); 8 if (code == 301) 9 red.setStatusCode(HttpStatus.MOVED_PERMANENTLY);//301跳轉 10 //session,記錄瀏覽器和服務器長期的交互。 11 session.setAttribute("msg", "jump from redirect"); 12 return red; 13 }
其次,/hello路徑:url
1 @RequestMapping(path = {"/hello"}) 2 @ResponseBody 3 public String Hello_World(Model model, 4 HttpSession session) { 5 model.addAttribute("aaa", "naive"); 6 model.addAttribute("l", "<br/>"); 7 List<String> ls = Arrays.asList(new String[] {"1","111", "2323a"}); 8 model.addAttribute("liststring", ls); 9 model.addAttribute("user", new User("aw12")); 10 logger.info("yeah,finally i learn how to use logger"); 11 //顯示session的msg信息。 12 return "session" + session.getAttribute("msg") + sss.show(); 13 }
當key的值不是admin時,拋出異常,在exception函數中處理異常。spa
1 //異常 2 @RequestMapping(path = {"/admin"}) 3 @ResponseBody 4 public String error(@RequestParam(value = "key", required = false) String key) { 5 if ("admin".equals(key)) 6 return "hello admin"; 7 throw new IllegalArgumentException("Key 錯誤"); 8 } 9 //處理異常 10 @ExceptionHandler 11 @ResponseBody 12 public String exception(Exception e) { 13 return "error" + e.getMessage(); 14 }
結果一,key=‘admin"時:3d
結果二,key!="admin"時: