본문 바로가기

분류 전체보기27

[Spring]client IP 를 얻기 위한 X-Forwarded-For(XFF) http header 회사 브랜드 페이지를 리뉴얼하게 되면서 기존에 없던 기능이 추가되었다. 당사 서비스를 휴대폰 번호만 입력받아 가상 체험할 수 있게끔 해주는 기능인데, 휴대폰 번호를 입력받으면 해당 휴대폰번호로 문자가 발송되는 시스템이였다. 해당 체험서비스 개발 완료 직전에 남용 방지를 위해 동일번호는 하루 2번, 같은 IP로는 하루 3번 제한을 두자는 정책이 나와 적용하기로 했다. HttpRequest에 들어있는 header를 통해 client ip를 구하는 소스가 있어 이를 활용하였다. public class IPaddress { public static String getIPaddress(HttpServletRequest req){ String clientIp = req.getHeader("HTTP_X_FORWARD.. 2020. 1. 9.
[Spring] lombok library 를 활용한 Annotation 얼마 전 새로운 회사로 이직을 하게 된 뒤 스프링으로 프로젝트를 만드는 중이다. 기존에 개발하던 방식처럼 파라미터가 들어오는 경우 ValueObject를 만들어서 get하는 방식으로 사용중이였는데 개발이 계속 진행되다 보니 해당 VO에 추가되는 값이 있을때 마다 값을 새로 추가해주고, getter, setter 를 추가하고 toString에도 추가해주는게 너무 귀찮았다. 앞으로도 계속 추가되고 변경될때마다 수정하는게 너무 번거로울듯 싶어서 그냥 lombok을 이용해서 어노테이션으로 처리하기로 결정했다. 기존의 VO는 이런 형식이였다. 이클립스에서 단축키 Alt + Shift + S 로 자동생성이 된다고 해도 변경될 때마다 저걸 새로 추가해주는건 너무 낭비였다. 좀더 쉽고 깔끔하게 만들어보자. 일단 lom.. 2019. 12. 5.
[ORA-01861] literal does not match format string 어제 외부에서 DB서버 작업을 하고 난 뒤로 관리자페이지에서 잘 작동하던 페이지가 안되는 현상이 발생했다. 모든페이지가 작동을 안하는게 아니라 신규로 추가된 부분만 안되길래 로그를 뒤져보니 쿼리문에서 에러가 떨어졌다. 응..? 그전까지 잘 돌아가던 쿼리가 갑자기..? 혹시나 싶어서 운영서버랑 개발서버 모두 확인해봤지만 둘 다 저 에러가 발생하는 상황. 신규로 추가한 부분은 업로드 이후에 건드렸던 적이 없기에 이상해서 로컬에서 돌려봤더니 로컬에서는 너무너무 잘돌아가네..? 열심히 구글링을 하던 도중, OS의 LANG 설정이 달라서 문자열을 묵시적으로 변환 못한다는 글을 발견했다. https://blog.naver.com/PostView.nhn?blogId=hanccii&logNo=220992089311&c.. 2019. 10. 15.
[Spring] RestTemplate을 적용하여 CORS 이슈 해결 웹에서 차트를 구현했던적이 있었는데 이를 위해 받아오는 데이터가 외부도메인인 탓에 CORS 정책때문에 삽질을 하던 적이 있었다. 그 때 사용했던게 Spring의 RestTemplate이였다. RestTemplate은 Spring의 HTTP 통신 템플릿인데 이를 이용하여 서버 내부적으로 호출 한 뒤 컨트롤러 단에서 데이터를 다시 전송하는 방식으로 구현했었다. 예제를 위해 간단한 Test code를 올려둔다. 일단 pom.xml에 http관련 라이브러리를 추가한다. org.apache.httpcomponents httpclient 4.5.8 org.apache.httpcomponents httpcore 4.4.10 org.apache.httpcomponents httpasyncclient 4.0-beta3 .. 2019. 9. 26.