반응형
12-24 00:25
Today
Total
«   2024/12   »
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
관리 메뉴

개발하는 고라니

[Spring] URL Encode : 공백을 '+'이 아닌 '%20' 본문

Framework/Spring

[Spring] URL Encode : 공백을 '+'이 아닌 '%20'

조용한고라니 2020. 12. 17. 18:39
반응형

* '코드로 배우는 스프링 웹 프로젝트' 교재를 1.5회(?) 완독 후, 스스로의 힘으로 게시판을 구현해보았다.

물론 미흡한 점이 심심찮게 발견되어 수정의 수정을 거듭했다. 그렇게 3~4주를 보내고 나니 다음엔 무엇을 만들어볼까 하던 차에, 문득 떠오른 것이 있다.

 

'무수히 많은 치킨 브랜드가 있고, 그 많은 메뉴들을 한 곳에서 모아보면 어떨까?'

 

 그래서 프로젝트라고 하기엔 뭣하지만 원하는 작업을 구현해보며 모르는 부분이 있으면 배워가고, 알던 내용이 있으면 다시 되새기는 목적을 가지고 시도해보려 한다.

 

 먼저 '푸라닭' 사이트에서 메뉴 정보들을 크롤링해 뿌려주는 식으로 시작해보고 결과가 괜찮으면 다른 브랜드들도 시도해보는 식으로 점차 넓혀가겠다.


* 교촌치킨의 메뉴 중 '교촌라이스세트'라는 메뉴의 이미지 src값은 다음과 같다.

* <img src="/uploadFiles/TB_ITEm/300x250_교촌라이스 (2).png">

 

* "교촌라이스 (2).png"를 URLEncoding 해야하는데, 이를 있는 그대로 인코딩 해보자.

> 300x250_%EA%B5%90%EC%B4%8C%EB%9D%BC%EC%9D%B4%EC%8A%A4+%282%29.png

가 될 것이다. 앞부분은 전혀 문제되지 않는다. 다만 '+'뒤로는 우리가 의도하는 인코딩이 되지 않는다.

 

> 한글 파일명을 지원하기 위해 URLEncoder를 지원하는데, 이것이 공백을 '+'문자로 변환시켜버리기 때문이다.

 

> '+' 문자가 '%20'으로 바뀌어야 저 이미지를 얻을 수 있다.

 

# replaceAll()

* String객체가 제공하는 replaceAll() 메서드를 이용하면 매우 간단하게 처리할 수 있다.

 

1. URL = /uploadFiles/TB_ITEm/300x250_교촌라이스 (2).png 의 파일 이름을 추출

2. 추출한 파일 이름을 URL Encode 함

3. URL에서 파일이름을 인코딩한 문자열로 대체(Replace)

4. 인코딩 된 URL에서 '+'를 '%20'으로 대체(ReplaceAll)

 

* '+'는 정규식에서 수량에 쓰이는 문자이므로 역슬래시를 붙여줘야한다.

 

> 위와 같이 '%20'으로 대체된 것을 볼 수 있다.

반응형
Comments