>  기사  >  Java  >  Spring Boot에서 다양한 요청과 응답을 처리하는 방법은 무엇인가요?

Spring Boot에서 다양한 요청과 응답을 처리하는 방법은 무엇인가요?

PHPz
PHPz앞으로
2023-05-15 21:25:041653검색

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: " Not;A Brand";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; /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-언어: zh-CN,zh;q=0.9
cookie: Idea-10659edd= 72fa12c3-9b68-4da6-8b68- 38a81c822aa0
10

2. GET 유형 요청

AlphaController에 메서드를 추가하여 GET 유형 요청을 처리하세요.

AlphaController中增加方法,处理GET类型的请求。

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";
}

前端页面显示: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";
}

前端页面显示:one students

同时,IDEA控制台输出:

123

3. POST类型的请求

AlphaController中增加方法,处理POST类型的请求。

浏览器输入: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>

前端页面显示一个表单,包含两行:姓名、年龄,还有一个 “保存” 按钮。

输入 “Lebron”、38 后,点击 “保存” 后,显示 “success”。

4. 响应HTML格式的数据

AlphaController中增加方法,向浏览器响应HTML格式的数据。

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 使用Model

浏览器输入: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大学
100

5. 响应JSON格式的数据

AlphaController中增加方法,向浏览器响应JSON2.1 /students?current=1&limit=20

브라우저 입력: http://localhost:8080/community/alpha/students?current=1&limit=100

@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;
}

프런트 엔드 페이지 표시: 일부 학생

동시에 IDEA 콘솔 출력:

1

100

2.2 /student/123

브라우저 입력: http://localhost:8080/community/alpha/student/123
@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;
}

Front-end 페이지 표시: 학생 1명
🎜🎜동시에 IDEA 콘솔 출력: 🎜🎜🎜123🎜🎜🎜3. POST 유형 요청🎜🎜 AlphaController에 메소드를 추가하여 POST를 처리합니다. 유형 요청이 묻습니다. 🎜🎜브라우저 입력: http://localhost:8080/community/html/student.html🎜rrreee🎜resources/static/html/student.html🎜rrreee🎜프런트 엔드 페이지에는 이름, 나이라는 두 줄이 포함된 양식이 표시됩니다. , "저장"버튼도 있습니다. 🎜🎜"르브론"과 38을 입력한 후 "저장"을 클릭하면 "성공"이 표시됩니다. 🎜🎜4. HTML 형식의 데이터에 응답🎜🎜 HTML 형식의 데이터에 브라우저에 응답하려면 AlphaController에 메서드를 추가하세요. 🎜🎜4.1 ModelAndView 사용🎜🎜브라우저 입력: http://localhost:8080/community/alpha/teacher🎜rrreee🎜프런트 엔드 페이지 표시: 🎜🎜🎜Lebron🎜38🎜🎜🎜4.2 Model🎜🎜Browser 입력 사용: http ://localhost:8080/community/alpha/school🎜rrreee🎜resources/templates/demo/view.html🎜rrreee🎜프런트 엔드 페이지에는 다음이 표시됩니다. 🎜🎜🎜xx University🎜100🎜🎜🎜5. JSON 형식🎜🎜 JSON 형식의 데이터로 브라우저에 응답하려면 AlphaController에 메서드를 추가하세요. 🎜🎜5.1 단일 데이터 집합🎜🎜브라우저 입력: http://localhost:8080/community/alpha/emp🎜rrreee🎜프런트 엔드 페이지 표시: 🎜🎜🎜{"name":"Kitty","salary": 12000.0, "age":20}🎜🎜🎜5.2 여러 데이터 세트🎜🎜브라우저 입력: http://localhost:8080/community/alpha/emps🎜rrreee🎜프런트 엔드 페이지 표시:🎜🎜🎜[{"name ":"톰 ","salary":12000.0,"age":20},{"name":"Jerry","salary":15000.0,"age":18},{"name":"Leo", "급여": 8000.0,"나이":25}]🎜🎜

위 내용은 Spring Boot에서 다양한 요청과 응답을 처리하는 방법은 무엇인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제