@GetMapping 과 @PostMapping

BackEnd

기존에 사용하던 @RequestMapping 대신 @GetMapping , @PostMapping으로 사용이 가능하다

 

기존에는 url이 겹치는 경우 에러가 발생하는데 위 이미지처럼 GET/POST 방식을 다르게 작성하면 에러없이 사용 할 수 있다

 

또한 맵핑될 URL의 공통된 부분을 따로 빼서 상단에서 @RequestMapping으로 클래스 적용이 가능하다

 

이게 무슨 말이냐면 /register라고 위에서 적용해줌으로써 그 밑에 작성된 /add 앞에 일괄적으로 /register가 붙게되는 것이다

 

예를들어 회원가입을 위한 코드를 작성할 경우 register를 위에서 잡아주고

 

작성은 get 등록은 post로 적어줘서 코드의 효율성을 올릴 수 있게된다

 

겟방식은 바디가 없어서 가벼운대신 용량제한이있고 URL에 값이 노출되어서 

 

보통 공유하기 목적이나 쇼핑몰 링크같은 경우 사용하기 용의하다 단순한 작업

 

반면 포스트방식은 URL에 노출되지 않고 용량제한이 없으며 바디안에 값이 담겨서 조금 더 보안적이지만 

 

겟방식에 비해 조금 무겁다는 단점이 있다 

 

이번에는 URL패턴에 대한 내용으로

서블릿과 스프링은 기본적으로 같으나 패턴은 위와같이 차이가 있다

 

다시한번 적는 것이지만 서블릿의 진화 형태가 스프링임을 잊지말자 근본적으로 같은 것이다

 

우선순위로 보면 

 

가장먼저 정확한 일치

그리고 경로맵핑

제일 후순위가 확장자 맵핑이다

 

1번이 없으면 2번

2번이 없으면 3번

3번이 없으면 404 NOT FOUND에러가 나온다

 

그리고 URL인코딩 - 퍼센트 인코딩에 대해서 배워보자

 

 

 

URL 인코딩 그리고 디코딩이라는 것이 있는데

 

위 예시 이미지처럼 남궁성 이라는 글자를 인코딩하면 퍼센트가 붙어서

UTF-8로변환되어 숫자로 들어가게되고 앞과 뒤에는 "" 로 감싸지게 된다 

 

문자열이 되는 것이다 

 

반대로 해당 문자열을 디코딩하게 되면 한글로 남궁성이라는 글자가 나오게 된다 

 

저렇게 퍼센트로 인코딩하는 이유가 뭘까? 

 

인터넷은 전세계 어디서든 사용가능한데 우리만 알아볼 수 있게 하면 다른 컴퓨터에서

 

다른 사용자가 어떤 방식으로 인코딩할지 알 수 없기 때문에 만국공통어처럼 

누구라도 해당  코드를 받아서 본인이 원하는 쪽으로 인코딩 할 수 있도록 하기 위해서라고 이해하면 된다

 

여기서 base64와 비슷해보이는 부분 때문에 혼동이 생길 수 있는데 

 

base64는 바이너리를 텍스트로 변환하는 것이고

 

6비트로 만들어져서 대문자 A부터 Z 소문자 a부터z 숫자 0부터 9 이런식으로 변환되는 것이고 

 

근본적으로 둘은 같지않다

 

url인코딩 디코딩은 문자코드(숫자)를 문자열로 바꾸고 문자열을 문자코드(숫자)로 바꾸는 것임을 잊지말자

 

 

 

또한 아스키코드에서 사용되지 않는 문자를 문자코드 16진수 문자열로 변환하기도 한다 

 

 



클라이언트가 회원가입을 하기 위해 본인의 이름을 입력하면 GET방식은 URL에 보여지고 바디가 없고

POST방식은 URL에 보여지지 않고 바디에 담겨지는데 둘다 위에서 보이는 것 처럼 문자코드로 넘어가게 된다

 

이렇게 서버에 요청을 하면 그 요청값을 디코딩을 하기위해서 request.set~ 코드를 매번 적어줘야한다 필수로

 

하지만 매번 적어주는 것이 여간 귀찮지 않을 수 없기에 우리는 필터를 추가해서 한번에 해결하는 방법을 택했다

 

web.xml에가서

<!-- 한글 변환 필터 시작 -->
<filter>
   <filter-name>encodingFilter</filter-name>
   <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
   <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
   </init-param>
   <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
   </init-param>
</filter>

<filter-mapping>
   <filter-name>encodingFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 한글 변환 필터 끝 -->

아래쪽에 위에 작성된 필터코드를 입력해주고 저장해주면 매번 적어주지 않아도 된다

 

 

 

 

'BackEnd' 카테고리의 다른 글

MVC 패턴  (0) 2023.01.01
redirect와 forward  (0) 2022.12.22
URL 호출 시 경로설정 편리하게 하기  (0) 2022.12.21
@ModelAttribute 그리고 WebDataBinder  (1) 2022.12.21
@RequestParam 에 대한 정리  (0) 2022.12.18