# HttpServlet

HttpServlet是Servlet的子接口,它继承了Servlet接口,并提供了对HTTP协议的支持。

# Forward and Redirect

public class RedirectAndForward {
  /**
   * forward
   * 
   * @param request
   * @param response
   */
  public void forward(HttpServletRequest request, HttpServletResponse response) {
    String url = "/target_url";
    request.getRequestDispatcher(url).forward(request, response);
  }

  public void redirect(HttpServletRequest request, HttpServletResponse response) {
    String url = "/target_url";
    response.sendRedirect(url);
  }

  public String redirect(HttpServletRequest request, HttpServletResponse response) {
    String url = "/target_url";
    return String.format("redirect:%s", url);
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# return JSON from String

import java.io.PrintWriter;

@RestController
@RequestMapping("/api")
class ResponseJson {

  @GetMapping("/json")
  public void getJson(HttpServletRequest request, HttpServletResponse response) {
    String data = "{\"key\":\"value\",\"type\":null}";
    response.setContentType("application/json");
    response.setCharacterEncoding("UTF-8");
    // Write data to the response body
    writeData(response, data);
  }

  @GetMapping("/some-data")
  public void getJsonFromOtherResponse(HttpServletRequest request, HttpServletResponse response) {
    RestTemplate restTemplate = new RestTemplate();
    String url = "https://api.domain.com/some-data";

    // String data = restTemplate.postForObject(url, String.class);

    ResponseEntity<String> res = restTemplate.exchange(url, HttpMethod.POST, null, String.class);
    String data = res.getBody(); // "{\"key\":\"value\",\"type\":null}"

    response.setContentType("application/json");
    response.setCharacterEncoding("UTF-8");
    // Write data to the response body
    writeData(response, data);
  }

  public static void writeData(HttpServletResponse response, String data) {
    PrintWriter out = response.getWriter();
    out.print(data);
    out.flush();
    out.close();
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

# return JSON from Object

@RestController
@RequestMapping("/api")
public class ResponseJsonFromObject {
  @GetMapping("/entity")
  public ResponseData getEntityData(HttpServletRequest request, HttpServletResponse response) {
    ResponseData data = new ResponseData(1, "success");
    return data;
  }
}
1
2
3
4
5
6
7
8
9
ResponseData
public class ResponseData {
  private int code;
  private String message;

  public ResponseData() {
  }

  public ResponseData(int code, String message) {
    this.code = code;
    this.message = message;
  }

  public int getCode() {
    return code;
  }

  public String getMessage() {
    return message;
  }

  public void setCode(int code) {
    this.code = code;
  }

  public void setMessage(String message) {
    this.message = message;
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28