Back-end 68

SessionStatus, @SessionAttributes, @SessionAttribute

1.SessionStatus란 SessionStatus는 @SessionAttributes를 활용해 Session에 남긴 데이터를 정리하는데 활용을 하는 인터페이스이다. model.addAttribute("dutch", "hello"); 일반적으로 위 코드 처럼 "dutch" 라는 키로 model에 세팅하면 응답 이후 값이 삭제 된다. 하지만 컨트롤러 클래스 상단에 @SessionAttribues 를 세팅 후 사용한다면 동작이 변경되게 된다. @RequestMapping("dutch") @Controller @SessionAttributes("dutch") public class DutchController @SessionAttributes선언 후 model.addAttribute 를 호출한다면 해당 k..

Jsp- jstl

1. value는 필수적으로 입력해야 하는 속성으로 화면에 출력할 값 적는다. escaperXml 속성은 기본적으로 true https://lifejusik1004.tistory.com/entry/JSP-JSTL-cout-%ED%83%9C%EA%B7%B8-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0 [JSP] JSTL c:out 태그 사용하기 c:out 태그란? c:out 태그는 자바에서의 System.out.println 메서드, JSP와 비슷한 역할을 가지고 있습니다. 어떤 값을 입력받던지 간에 콘솔이 아닌 화면에 문자열로 바꾸어서 보여주는 역할입니다. 얼핏 lifejusik1004.tistory.com 2. document.listForm.action = ""; function..

Spring MVC <component-scan>, <annotation-config>, <annotation-driven>

Spring MVC framework provides different configuration elements that are helping or instructing the Spring container to effectively manage the beans and inject the beans when required. 1. 있으면 필요없음. - spring version2.5에 나왔다. - context:component-scan element in the spring configuration file would eliminate the need for declaring all the beans in the XML files. (과거에는 XML file에 bean들 일일이 등록했어야 했다.) -..

Web.xml, DispatcherServlet, ContextLoaderListener 각각의 역할 및 관계

1. DispatcherServlet : - FirstController로 한 개의 WebApplicationContext를 가지며, 또한 여러 개의 DispatcherServlet 가질 수 있다. - 그러나, DispatcherServlet 간(각각 별도의*. xml파일 설정)에는 객체 서로 공유되지 않는다. - 순서는 순서으로 준다. 2. ContextLoaderListener : - DispatcherServlet에서 공통 빈을 필요로 하는 경우 ContextLoaderListener에 설정해주면 된다.(아래 예시) - 통상적으로 여기에는 datasource, springsecurity 등을 설정해준다. contextConfigLocation /WEB-INF/spring/appServlet/root..

OAuth 2.0(Open Authorization 2.0)

1. OAuth 2.0란?OAuth 2.0을 사용하면 대부분의 로그인, 개인정보 관리 책임을 서드파티 애플리케이션(Google, Facebook, Kakao 등)에게 위임할 수 있다.(단, 사용자가 기존에 서드파티 서비스에 회원가입 되어있어야 함.) 뿐만 아니라 각 서드파티가 가지고 있는 사용자의 리소스를 조회 등을 내 애플리케이션에서 수행할 수 있다. 2. OAuth 2.0의 구성요소1) Client : OAuth 2.0을 사용해 서드파티 로그인 기능을 구현할 자사 또는 개인 애플리케이션 서버다.2) Resource Owner : 서드파티 애플리케이션 (Google, Facebook, Kakao 등)에 이미 개인정보를 저장(회원가입)하고 있으며 Client가 제공하는 서비스를 이용하려는 사용자를 의미한..

Spring Security- JWT AccessToken, RefreshToken

AccessToken : 인증 -> 인가로 특정 리소스 접근 용도 RefreshToken : 만료된 AccessToken 발급받는 용도(DB 저장) 과정 사용자는 access_token이 만료되었을 때 만료 됐다는 응답을 받으면 클라이언트에서 다시, access_token과 refresh_token을 서버에 보냅니다. 서버에서는 refresh_token이 유효하다면, 클라이언트에게 다시 새로운 access_token을 발급해줍니다. [글로벌 회사들의 토큰 정책] 액세스 토큰을 발급할 때, Refresh 도 새로 발급해서, 계속계속 보안성을 가져가면서 무한 로그인을 유지한다던가 Refresh 의 기간이 끝나면 새로 로그인을 하도록 한다던가 Refresh를 아예 사용하지 않는다거나 (애플의 정책) Refre..

DTO(DataTransferObject) vs. VO(Value Object)

1. DTO와 VO 차이는 무엇인가? 1. DTO (데이터 전달용 객체) Data Transfer Object 각 계층(레이어) 간 데이터 교환을 위한 객체 (Controller, Service) 값이 변할 수 있다. DTO dto1(1)!= DTO dto2(1) 데이터 접근 이외의 기능을 가지지 않음(정렬, 직렬화 등 데이터 표현을 위한 기능은 가질 수 있음) 로직을 갖고 있지 않는 순수한 데이터 객체이며, getter/setter 메서드만 보유한 클래스 하지만 DB에서 꺼낸 값을 임의로 변경할 필요가 없기 때문에 DTO클래스에는 setter가 없다..? (대신 생성자를 통해 속성 값들을 초기화 하게 만들어 불변 객체로 만들면 DTO가 전달 과정 중에 변조되지 않음을 보장할 수 있다.) 속성값이 모두 ..

SpringBootServletInitializer

War vs. Jar 배포상의 차이 @SpringBootApplication public class SuperApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(SuperApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(SuperApplication.class); } } 보통 SpringBoot 웹 애플리케이션을 배포할 때는 embedded..

직렬화(Serialization)

1. 의미 객체를 컴퓨터에 저장했다가 다음에 다시 꺼내 쓸 때 혹은 네트워크를 통해 컴퓨터 간에 서로 객체를 주고받을 때 직렬화를 통해 가능하다.(직렬화 한 후에 저장하거나 전송하고 필요할 때 역직렬화해서 꺼내 쓴다.) 직렬화란 객체를 데이터 스트림(Byte형태로 변환)으로 만드는 것을 의미한다. 다시 말해 객체에 저장된 데이터를 스트림에 쓰기(write) 위해 연속적인(serial) 데이터로 변환하는 것을 말한다. 반대로 스트림으로부터 데이터를 읽어서 객체를 만드는 것을 역직렬화(deserialization)라고 한다. ◇객체란? 클래스에 정의된 인스턴스 변수의 집합(클래스 변수나 클래스 메서드가 포함되지 않음)을 의미한다. 따라서 객체를 저장한다고 하는 것은 객체의 모든 인스턴스 변수의 값을 저장한다..