# 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
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
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
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
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