ホームページ  >  記事  >  Java  >  Spring Bootにおける各種リクエストやレスポンスの処理方法は何ですか?

Spring Bootにおける各種リクエストやレスポンスの処理方法は何ですか?

PHPz
PHPz転載
2023-05-15 21:25:041706ブラウズ

1. HttpServletRequest と HttpServletResponse

ブラウザ入力: http://localhost:8080/community/alpha/http?code=10

@RequestMapping("/http")
public void http(HttpServletRequest request, HttpServletResponse response) {
    // 获取请求数据
    System.out.println(request.getMethod());
    System.out.println(request.getServletPath());
    Enumeration<String> enumeration = request.getHeaderNames();
    while (enumeration.hasMoreElements()) {
        String name = enumeration.nextElement();
        String value = request.getHeader(name);
        System.out.println(name + ": " + value);
    }
    System.out.println(request.getParameter("code"));
    // 返回响应数据
    response.setContentType("text/html;charset=utf-8");
    try {
        PrintWriter writer = response.getWriter();
        writer.write("<h2>nowcoder</h2>");
    } catch (IOException e) {
        e.printStackTrace();
    }
}

フロントエンド ページの表示: nowcoder

同時に、IDEA コンソール出力:

GET
/alpha/http
host: localhost:8080
connection: keep -alive
sec-ch-ua: " ブランドではありません";v="99", "Google Chrome";v="97", "Chromium";v="97"
sec-ch -ua- mobile: ?0
sec-ch-ua-platform: "Windows"
upgrade-insecure-requests: 1
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML、Gecko など) Chrome/97.0.4692.99 Safari/537.36
accept: text/html,application/xhtml xml,application/xml;q=0.9,image/avif,image/webp,image/apng ,*/ *;q=0.8,application/signed-exchange;v=b3;q=0.9
sec-fetch-site: none
sec-fetch-mode: navigate
sec-fetch-user : ?1
sec-fetch-dest: document
accept-encoding: gzip、deflate、br
accept- language: zh-CN,zh;q=0.9
cookie: Idea-10659edd= 72fa12c3-9b68 -4da6-8b68-38a81c822aa0##​​#10

2. GET タイプのリクエスト

AlphaControllerGET を処理するメソッドを追加します。 リクエストのタイプ。

2.1 /students?current=1&limit=20

ブラウザ入力: http://localhost:8080/community/alpha/students?current=1&limit=100

@GetMapping("/students")
@ResponseBody
public String getStudents(
        @RequestParam(name = "current" ,required = false, defaultValue = "1") int current,
        @RequestParam(name = "limit" ,required = false, defaultValue = "10") int limit) {
    System.out.println(current);
    System.out.println(limit);
    return "some students";
}

フロントエンド ページに表示される内容: 一部の学生

同時に、IDEA コンソールの出力:

1

100

2.2 /student/123

ブラウザ入力: http://localhost:8080/community/alpha/student/123

@GetMapping("/student/{id}")
@ResponseBody
public String getStudent(@PathVariable("id") int id) {
    System.out.println(id);
    return "one student";
}

フロントエンド ページが表示されます。 1 人の生徒

同時に、IDEA コンソールの出力:

123

3. POST タイプのリクエスト

AlphaControllerPOST タイプのリクエストを処理するメソッドを追加します。

ブラウザ入力: http://localhost:8080/community/html/student.html

@PostMapping("/student")
@ResponseBody
public String saveStudent(String name, int age) {
    System.out.println(name);
    System.out.println(age);
    return "success";
}

resources/static/html/student.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>增加学生</title>
</head>
<body>
  <form method="post" action="/community/alpha/student">
    <p>
      姓名:<input type="text" name="name">
    </p>
    <p>
      年龄:<input type="text" name="age">
    </p>
    <p>
      <input type="submit" value="保存">
    </p>
  </form>
</body>
</html>

フロントエンドページ 名前、年齢、保存ボタンの 2 行からなるフォームを表示します。

「Lebron」と「38」を入力後、「保存」をクリックすると「成功」と表示されます。

4. HTML 形式のデータに応答する

ブラウザへの

HTML 形式のデータに応答するメソッドを AlphaController に追加します。

4.1 ModelAndView を使用する

ブラウザ入力: http://localhost:8080/community/alpha/Teacher

@GetMapping("/teacher")
public ModelAndView getTeacher() {
    ModelAndView mav = new ModelAndView();
    mav.addObject("name", "Lebron");
    mav.addObject("age", 38);
    mav.setViewName("/demo/view");
    return mav;
}

フロントエンド ページの表示:

Lebron

38

4.2 モデル

を使用するブラウザ入力: http://localhost:8080/community/alpha/school

@GetMapping("/school")
public String getSchool(Model model) {
    model.addAttribute("name", "xx大学");
    model.addAttribute("age", 100);
    return "/demo/view";
}

resources /templates/demo/view.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Teacher</title>
</head>
<body>
    <p th:text="${name}"></p>
    <p th:text="${age}"></p>
</body>
</html>

フロントエンド ページには、

xx University

100

5 が表示されます。 JSON 形式のデータ

AlphaController

にメソッドを追加して、JSON 形式のデータでブラウザに応答します。 5.1 単一セットのデータ

ブラウザ入力: http://localhost:8080/community/alpha/emp

@GetMapping("/emp")
@ResponseBody
public Map<String, Object> getEmp() {
    Map<String, Object> emp = new HashMap<>();
    emp.put("name", "Kitty");
    emp.put("age", 20);
    emp.put("salary", 12000.00);
    return emp;
}

フロントエンド ページ表示:

{"name":"Kitty","salary":12000.0,"age":20}

5.2 複数のデータセット

ブラウザ入力: http :/ /localhost:8080/community/alpha/emps

@GetMapping("/emps")
@ResponseBody
public List<Map<String, Object>> getEmps() {
    List<Map<String, Object>> list = new ArrayList<>();
    Map<String, Object> emp = new HashMap<>();
    emp.put("name", "Tom");
    emp.put("age", 20);
    emp.put("salary", 12000.00);
    list.add(emp);
    emp = new HashMap<>();
    emp.put("name", "Jerry");
    emp.put("age", 18);
    emp.put("salary", 15000.00);
    list.add(emp);
    emp = new HashMap<>();
    emp.put("name", "Leo");
    emp.put("age", 25);
    emp.put("salary", 8000.00);
    list.add(emp);
    return list;
}

フロントエンド ページには次のように表示されます:

[{"name":"Tom","salary":12000.0 ,"年齢": 20},{"名前":"ジェリー","給与":15000.0,"年齢":18},{"名前":"レオ","給与":8000.0,"年齢":25 }]

以上がSpring Bootにおける各種リクエストやレスポンスの処理方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。