목록꿈 : 멋진 개발자 🧸/Java (28)
혜야의 코딩스토리
1. 문제 발견접속 IP에 따라 접근을 허용/차단하는 기능을 개발하면서 이상한 점을 발견했습니다.✅ 초기 코드import javax.servlet.http.HttpServletRequest;request.getRemoteAddr();❌ 예상과 다른 결과어떤 IP로 접속하든 항상 같은 IP가 찍혔습니다. 예를 들어:99.1.99.2 - - [07/Mar/2025:13:01:03 +0900] "HEAD / HTTP/1.1" 200 - "-" "-"Apache 웹서버의 로그에서도 클라이언트 IP가 아닌 99.1.99.2만 기록되었습니다.2. 원인 분석: 리버스 프록시와 로드 밸런서현재 우리는 리버스 프록시와 로드 밸런서를 사용 중이므로, 요청이 여러 장비를 거쳐 들어옵니다.🔍 원인실제 클라이언트는 X-For..

이번 포스팅에선 웹 어플리케이션 성능 테스트 오픈 소스인 JMeter에 대해서 알아보겠습니다. 📌JMeter란?Apache에서 만든 자바로 만들어진 웹 어플리케이션 성능 테스트 오픈 소스입니다. JMeter를 이용해서 아래와 같은 테스트를 할 수 있습니다. - 웹 - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …)- SOAP / REST 웹 서비스- FTP- JDBC- LDAP- JMS - Message-oriented middleware (MOM)- Mail - SMTP(S), POP3(S) and IMAP(S)- Native commands or shell scripts- TCP- Java Objects Swing으로 제작한 GUI와 CLI 방법을 지원하고 있습니다. ..

https -> http로 redircet되는 것을https -> https로 redircet되도록 설정이 필요함 각 환경에 따라 다르겠지만,dispatcher-servlet.xml파일에redirectHttp10Compatible "false" 설정 추가해야함 예시1)예시2) 참고https://iamfreeman.tistory.com/entry/Spring-mvc%EC%97%90%EC%84%9C-redirect-https-http-redirect-%EB%AC%B8%EC%A0%9C-%ED%95%B4%EA%B2%B0

📌 Interceptor(인터셉터) - 요청을 가로채는 작업( 메인 액션 전,후)매개변수 - HttpServletRequest, HttpServletResponse 용도 - 로그인 처리, pc웹/모바일웹 분기 처리 등ex) 로그인 세션체크 파일을 각 페이지마다 include하지 않고 인터셉터로 대체하면 좋음 📌실행순서 Filter > DispatcherServlet => Interceptor = > AOPFilter(필터) - DispatcherServlet 이전에 실행 📌 AOP@Around => ProceedingJoinPoint 객체 사용@Before, @After => JoinPoint 객체 사용 📌 요청형식(파일 등)에 따른 웹서버에서의 처리 hello.html 통과 hell..
웹페이지에서 json으로 request한 파라미터들을 java에서 받으려면 java Object로의 변환이 필요하며, response시에도 java Object에서 json으로 변환이 필요하다. 이런 작업들을 해주는것이 @RequestBody 와 @ResponseBody 이다. 컨트롤러에 두 어노테이션을 쓰게 되면 JSON이나 key/value 방식의 xml등으로 송수신 할 수 있다.@RequestBody : HTTP요청의 body내용을 자바 객체로 매핑하는 역할@ResponseBody : 자바 객체를 HTTP요청의 body내용으로 매핑하는 역할 💡 정리 클라이언트에서 =>서버로 필요한 데이터를 요청하기 위해 json데이터를 요청 본문에 담아서 서버로 보내면 서버에서는 @RequestBody를 사..

📌 AOP (Aspect Oriented Programming)- 관점(관심) 지향 프로그래밍- 횡단 관심사(cross-cutting concern )에 따라 프로그래밍 하는 것- 객체지향 프로그래밍(Object Oriented Programming, OOP)를 보완하는 확장적인 개념- 장점 : 중복되는 코드 제거, 효율적인 유지보수, 높은 생산성, 재활용성 극대화, 변화 수용의 용이성📌 Aspect (측면, 관점, 관심) 핵심적인 비즈니스 로직은 아니지만 반드시 해야 하는 부가기능(인프라 로직) **인프라 로직 - 애플리케이션의 전 영역에서 나타날 수 있음 - 중복코드를 만들어낼 가능성때문에 유지보수가 힘들어짐 - 비즈니스 로직과 함께 있으면 비즈니스..