3/14 TIL

큰모래·2023년 3월 14일
0
post-custom-banner

스프링부트


프로젝트 생성

https://start.spring.io/

스프링부트 3.0 이상은 jvm 버전 17 이상이어야 한다.


dependency 추가

  • SpringBoot DevTools
    • 브라우저로 전송되는 코드가 변경되면, 자동으로 재시작해준다.
  • Spring Web
    • 웹 어플리케이션을 만들기 위한 기본적인 기능들 제공
      • Spring MVC 프레임워크
      • Spring WebFlux 프레임워크
      • 내장형 서버 (Tomcat, Jetty, Undertow) 지원
      • HTTP 요청/응답 처리를 위한 Spring Web의 기본 컴포넌트
  • Lombok
    • 어노테이션을 통해 반복적인 코드 작성을 줄여준다.
  • Thymeleaf
    • 동적인 웹페이지를 만들기 위한 템플릿

어노테이션


@Controller

해당 클래스가 Controller로 사용됨을 스프링 프레임워크에 알린다.


@ResponseBody

자바 객체를 HTTP 응답 본문으로 매핑하는 역할을 한다.

이를 통해 자바 객체를 JSON 등의 형식으로 변환하여 클라이언트에게 전송할 수 있다.


@GetMapping(url)

해당 url 주소로 Get 요청을 한다.


@RequestParam

HTTP 요청 파라미터를 컨트롤러 메서드의 파라미터와 매핑하는 역할을 한다.

여기서, HTTP 요청 파라미터는 URL 쿼리 스트링, HTML 폼을 의미한다.


@AllArgsConstructor, @Getter, @Setter

  • @AllArgsConstructor
    • 모든 필드 값을 받는 생성자를 만들어준다.
  • Getter , Setter
    • Getter, Setter 메서드 자동 생성

API 생성


추가

  • url 예시
    • /home/addPerson?name=손승완&age=25
  • 쿼리 스트링으로 받은 매개변수와 스태틱 변수로 설정해놓은 count를 증가시켜 person 객체를 만든다.
  • person 객체를 personList에 저장
	@GetMapping("/home/addPerson")
    @ResponseBody
    public String addPerson(@RequestParam String name, @RequestParam int age) {
        Person person = new Person(++count, name, age);
        personList.add(person);

        return count + "번 사람이 추가되었습니다.";
    }

삭제

  • url 예시
    • /home/removePerson?id=2
  • 쿼리 스트링으로 받은 id 를 토대로 findById 메서드를 실행시켜 person 객체를 찾아 반환받는다.
  • personList 에서 person 객체를 삭제
	@GetMapping("/home/removePerson")
    @ResponseBody
    public String removeList(@RequestParam int id) {
        Person person = findById(id);
        if (person == null) {
            return "응답 : " + id + "번 사람이 존재하지 않습니다.";
        }

        personList.remove(person);

        return "응답 : " + id + "번 사람이 삭제되었습니다.";
    }

		private static Person findById(int id) {
		        for (Person person : personList) {
		            if (person.id == id) {
		                return person;
		            }
		        }
		        return null;
		    }

수정

  • url 예시
    • /home/modifyPerson?id=3
  • findById 메서드를 통해 id를 통해 찾은 person 객체를 반환받는다.
  • person 객체의 nameage 값을 쿼리스트링을 통해 받은 값으로 초기화한다.
	@GetMapping("/home/modifyPerson")
    @ResponseBody
    public String modifyList(@RequestParam int id, @RequestParam String name, @RequestParam int age) {
        Person person = findById(id);
        if (person == null) {
            return "응답 : " + id + "번 사람이 존재하지 않습니다.";
        }

        person.setName(name);
        person.setAge(age);

        return "응답 : " + id + "번 사람이 수정되었습니다.";
    }

쿠키 발행

  • HttpServletRequest : 브라우저에서 서버에 요청한 내용
  • HttpServletResponse : 서버에서 브라우저에 보낼 내용
  • request.getCookies : HTTP 요청에 포함된 쿠키를 배열 형태로 반환
  • response.addCookie : HTTP 응답에 쿠키를 추가해 응답한다
	@GetMapping("/home/cookie/increase")
    @ResponseBody
    public int showCookieIncrease(HttpServletRequest request, HttpServletResponse response) {
        int countCookie = 0;

        if (request.getCookies() != null) {
            for (Cookie cookie : request.getCookies()) {
                if (cookie.getName().equals("count")) {
                    countCookie = Integer.parseInt(cookie.getValue());
                }
            }
        }

        int newCountCookie = countCookie + 1;

        response.addCookie(new Cookie("count", newCountCookie + ""));

        return newCountCookie;
    }
profile
큰모래
post-custom-banner

0개의 댓글