Time does not change us. It just unfolds us.

Web/Else 15

log4j 취약점

https://news.naver.com/main/read.naver?mode=LSD&mid=sec&sid1=105&oid=029&aid=0002710894 IT기업들 `로그4j` 헬프데스크 가동 LG CNS·더존비즈온 동시 대응 해커 공격대비해 비상근무체제 보안워룸… 고객 문의사항 답변 유사한 보안 이슈 발생도 서비스 LG CNS, 더존비즈온 등 IT기업들이 최근 치명적인 보안 취약점이 발견 news.naver.com 현재 log4j의 취약점때문에 얘기가 많았다. 우리 프로젝트도 2.16.0으로 버전을 변경하여 다시 배포하였다. 취약점의 원인은 아래 나무위키의 내용을 참고하여 이해하였다. https://namu.wiki/w/Log4j%20%EB%B3%B4%EC%95%88%20%EC%B7%A8%EC%95..

Web/Else 2021.12.20

[Maven]빌드하여 jar 파일 만들기

아래 Inflearn의 JPA 유료강의를 듣다가 나는 gradle이 아닌 maven을 이용하여 따라해보고자 build 방법을 기록해둔다. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-JPA-%ED%99%9C%EC%9A%A9-1/lecture/24279?tab=curriculum&speed=1.25 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 - 인프런 | 학습 페이지 지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요.... www.inflearn.com 1. Maven 설치 http://maven.apache.org/download.cgi Maven – Dow..

Web/Else 2021.11.16

[Web]HttpSessionListener, AtomicInteger

HttpSessionListener를 이용해 중복로그인을 방지할 수 있는데, 이번 프로젝트에는 HttpSessionListener를 통해 session 만료 시간이 되면 WebSocket을 통해 message를 전달하여 자동 로그아웃시키는 기능을 구현하였다. HttpSessionListener의 객체는 Session이 생성되거나 제거될 때 발생하는 이벤트를 제공해주어 등록만해주면 세션을 통제할 수 있다. @WebListener //@RequiredArgsConstructor public class SessionConfig implements HttpSessionListener { @Override public void sessionCreated(HttpSessionEvent hse) { //세션 생성시 ..

Web/Else 2021.11.15

[Web]Token 기반 인증

지난 Feign Client 공부에 이어서 HeaderCoonfiguration을 왜 설정해주는지 이해하기 위해 공부하다가 session과 token 기반의 인증 특징들에 대해 알게되었다. https://x-ojm.tistory.com/12?category=978307 [Web]Feign Client 이번 프로젝트에서 FeignClient를 이용하여 개발해서 개념을 이해하고자 공부해보았다. 특히 공통 헤더를 추가하기 위해 커스터마이즈한 Configuration을 설정하는 부분에 대해 정리하였다. Feign Client x-ojm.tistory.com 기존 RestTemplate을 적용하여 Client.java를 구현하였을 때는 함수 내 header에 직접 token을 넣어 작성했는데, FeignClien..

Web/Else 2021.11.11

[Web]Maven LifeCycle

Maven은 정해진 라이프사이클에 의하여 작업 수행하며, 전반적인 프로젝트 관리 기능까지 포함하고 있다. 프로젝트의 빌드(Build)를 자동화해 주는 빌드 툴로서 컴파일하고 패키징하여 배포까지 자동으로 해주는 도구이다. Maven에서 제공하는 build 단계(LifeCycle)이 존재하며, 메이븐에 내장된 라이프사이클은 default, clean, site 3가지가 있다. * 라이프 사이클 mvn process-resources : resources:resources의 실행으로 resource 디렉토리에 있는 내용을 target/classes로 복사한다. mvn compile : compiler:compile의 실행으로 src/java 밑의 모든 자바 소스를 컴파일해서 target/classes로 복사 ..

Web/Else 2021.11.04

[Web]multipart/form-data

프로젝트를 진행하면서 view에서 controller로 deb, tar, jpg 등의 파일을 보내주는 경우가 굉장히 많았다. 처음에는 임시로 String으로 이름만 받다가 서버 쪽에 전송을 해야하여 multipart/form-data를 이용하였다. 내가 작성한 소스를 먼저 살펴보고 개념을 하나씩 정리해 봐야겠다. .ftl 파일 설치 Modal DT 설치 파일 설치 파일을 첨부하세요. 저장 닫기 .js 파일 var form = $('#install_form')[0]; var data = new FormData(form); $.ajax({ type: "PUT", enctype: 'multipart/form-data', url: "/install", data: data, processData: false, c..

Web/Else 2021.10.28

[Web]Url 주소 가져오기

웹 프로젝트에서 페이지에 해당하는 목록을 표시할 때 Url 주소를 가져와 인식하였다. 네이버 페이지로 예시를 보자면, 아래와 같이 책방에 관련된 페이지를 보고 있을 때 책방 메뉴를 시각적으로 표현해주는 기능을 구현했다. url을 주소를 가져오는 함수들은 다음과 같다. 예) http://localhost:8080/project/list.jsp 함수 예시 내용 request.getContextPath() /project 프로젝트 Path만 가져온다 request.getRequestURI() /project/list.jsp 프로젝트 + 파일경로까지 가져온다. request.getRequestURL() http://localhost:8080/project/list.jsp 전체 경로를 가져온다. request.S..

Web/Else 2021.10.25

[Web]사용자 정의 예외 클래스

앞서 예외처리하는 방법에 대해 공부했다면, 이번에는 그 예외를 정의한 부분에 대해 이해해보고자 한다. https://x-ojm.tistory.com/25 [Web]@ContollerAdvice, @ExceptionHandler 예외처리 @RestController public class MyRestController { ... @ExceptionHandler(NullPointerException.class) public Object nullex(Exception e) { System.err.println(e.getClass()); return "myService"; } } @Exce.. x-ojm.tistory.com 프로젝트에 사용된 예시로 해당 유저가 존재하지 않을 때 발생하는 예외다. Excepti..

Web/Else 2021.10.25

[Web]@ContollerAdvice, @ExceptionHandler 예외처리

@RestController public class MyRestController { ... @ExceptionHandler(NullPointerException.class) public Object nullex(Exception e) { System.err.println(e.getClass()); return "myService"; } } @ExceptionHandler같은 경우는 @Controller, @RestController가 적용된 Bean내에서 발생하는 예외를 잡아서 하나의 메서드에서 처리해주는 기능을 한다. 즉, 메소드 위에 선언되며, 등록한 예외를 Catch하여 처리할 수 있다. 위 예제와 같이 @ExceptionHandler라는 어노테이션을 쓰고 인자로 캐치하고 싶은 예외클래스를 등록하..

Web/Else 2021.10.22

[Web]WAS

WAS란 Web Application Server약자로 웹서버와 웹컨테이너가 결합된 개념이다. 일종의 미들웨어로, 클라이언트의 요청 중 보통 웹 애플리케이션이 동작하도록 지원하는 목적을 가진다. 즉, 동적 페이지 제공. WAS는 Servlet(HttpServlet을 상속받은 클래스)을 사용하여 동적인 페이지를 생성할 수 있다. Web Container 유무로 WEB 서버와 WAS를 구분할 수 있다. 또 다른 차이로는 WEB 서버는 HTML 문서와 같은 정적 컨텐츠를 처리하는 것이고 (HTTP를 통해 읽힐 수 있는 문서), (정적 데이터) WAS는 asp,php,jsp 등 개발 언어를 읽고 처리하여 동적 컨텐츠, 웹 응용 프로그램 서비스를 처리한다. (동적 데이터) 따라서 DB와 연결되어 데이터를 주고 받..

Web/Else 2021.10.22

[Web]RESTful

REST란? HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미 REST는 Representational State Transfer라는 용어의 약자로서 웹의 장점을 최대한 활용할 수 있는 아키텍처 최근의 서버 프로그램은 다양한 브라우저와 안드로이폰, 아이폰과 같은 모바일 디바이스에서도 통신을 할 수 있어야 한다. REST 아키텍처는 Hypermedia API의 기본을 충실히 지키면서 범용성을 보장한다. REST의 특징 1. Uniform (유니폼 인터페이스) Uniform Interface는 URI로 지정한 리..

Web/Else 2021.10.22

[Web]MSA

MSA란 마이크로 서비스 아키텍처(Micro Service Architecture)의 약자로 단일 프로그램을 각 컴포넌트 별로 나누어 작은 서비스의 조합으로 구축하는 방법이다. MSA는 API를 통해서만 상호작용할 수 있다. 즉, 마이크로 서비스는 서비스의 end-point(접근점)을 API 형태로 외부에 노출하고, 실질적인 세부 사항은 모두 추상화한다. 내부의 구현 로직, 아키텍처와 프로그래밍 언어, 데이터베이스, 품질 유지 체계와 같은 기술적인 사항들은 서비스 API에 의해 철저하게 가려진다. vs MSA 장점 기존 monolithic architecture과 비교해보면 빌드/테스트 시간이 길다. 선택적 확장이 불가능 (전체 확장필요) 하나의 서비스가 모든 서비스에 영향 한 Framework와 언어에..

Web/Else 2021.10.22

[Web]Spring Boot 관련 개념 참고 링크

이번 프로젝트를 진행하면서 사용한 기능들의 기본 개념이해를 위해 참고한 링크들이다. 구동 시점에 특정 코드 실행 https://www.daleseo.com/spring-boot-runners/ ApplicaitionRunner : SpringBootApplication이 포함된 프로그램에서 특정 Bean을 Application 실행 후 실행하도록 하는 인터페이스 https://jinseongsoft.tistory.com/238 스프링 어플리케이션 시작 종료 시 https://zepinos.tistory.com/41 [Spring Boot] 애플리케이션 실행 후 특정 코드를 수행하는 방법 (Application Runner 사용법) 들어가며 필요에 따라 스프링부트 애플리케이션이 처음 실행되고 난 시점에 특..

Web/Else 2021.10.22

[Web]ResponseEntity

HTTP(HyperText Transfer) 프로토콜 구조 하이퍼텍스트(HTML) 문서를 교환하기 위해 만들어진 TCP/IP 기반 protocol(통신 규약). 웹상에서 네트워크로 서버끼리 통신을 할때 어떠한 형식으로 서로 통신을 하자고 규정해 놓은 "통신 형식" 혹은 "통신 구조" Stateless 요청/응답 (request/response) 구조 start line / headers / body 로 구성 headers : general / request / entity header 로 구성 https://velog.io/@teddybearjung/HTTP-%EA%B5%AC%EC%A1%B0-%EB%B0%8F-%ED%95%B5%EC%8B%AC-%EC%9A%94%EC%86%8C Web에서 HTTP 프로토콜..

Web/Else 2021.10.22