Web

    Spring] IoC (1)

    Inversion of Control 일반적인 (의존성에 대한) 제어권 : "내가 사용할 의존성은 내가 만든다." class OwnerController{ ​ private OwnerRepository repository = new OwnerRepository(); } IoC : "내가 사용할 의존성을 누군가 알아서 주겠지." 내가 사용할 의존성의 타입(또는 인터페이스)민 맞으면 어떤거든 상관없다. 그래야 내 코드 테스트 하기도 편하지. class OwnerController{ ​ private OwnerRepository repo; ​ public OwnerController(OwnerRepository repo){ ​ this.repo = repo; ​ } //repo를 사용합니다. } class O..

    Spring Web Layer(스프링 웹 계층)

    Spring Web Layer(스프링 웹 계층) Web Layer 흔히 사용하는 컨트롤러(@Controller)와 JSP /Freemaker 등의 뷰 템플릿 영역. 이외에도 필터(@Filter), 인터셉터, 컨트롤러 어드바이스(@ControllerAdvice) 등 외부 요청과 응답에 대한 전반적인 영역을 이야기함. Service Layer @Service에 사용되는 서비스 영역. 일반적으로 Controller와 Dao의 중간 영역에서 사용됨. @Transaction이 사용되어야 하는 영역. Repository Layer Database와 같이 데이터 저장소에 접근하는 영역. Dao(Data Access Object) 영역으로 이해하면 쉬울 것. Dtos Dto(Data Transfer Object)는 계..

    Spring-boot에서 build.grade 속성

    Spring boot에서의 build.grade 속성 build.gradle에 있는 내용을 그저 따라서 타이핑한 경험은 많지만, 어떤 의미인지 고민해보고 찾아본 경험은 없었다. 책을 사서 따라해보는 과정중에, 간단한 설명이 일부 있어서 코드와 함께 주석으로 정리해본다. 12345678910111213141516171819202122232425262728293031323334353637383940414243buildscript { // ext라는 키워드는 build.gradle에서 사용하는 전역변수를 설정하겠다는 의미. 여기서는 springBootVersion 전역변수를 생성하고 그 값을 '2.1.7.RELEASE'로 하겠다는 의미. // 즉, spring-boot-gradle-plugin라는 스프링 부트..

    IntelliJ에서 gradle(버전) distributionURL 변경하기

    IntelliJ에서 gradle distributionURL 변경하기 Test를 위한 code를 작성했는데, 원인 모를 상황에 부딪혔다. 매우 간단한 코드라 gradle.build에서도 오류를 찾지 못하고, code 오타도 없었다. 문제는 gradle버전. 새로 받은 버전은 ver5로 되어있어서, ver4로 낮춰주어야 한다더라. Project -> gradle -> wrapper -> gradle-wrapper.properties 여기서 distributionURL이 gardle 5... 로 되어있다면 버전을 낮춰서 시도하는 것도 하나의 방법일 것이라 생각한다. 윈도우 기준으로 alt + F12를 눌러서 gradlew wrapper --gradle-version 4.10.2를 입력해주면 된다. 끗-

    JSP (3) - JSP 기본객체

    JSP (3) JSP 기본객체와 활성범위 JSP 기본객체 JSP에서는 표현식(expression), 스크립트릿(scriptlets)에서 코드를 심플하게 만들어 주기 위해서 기본객체라는 것을 지원하고 있다. 내장객체는 "자동 정의된 변수(autinatucally defined variables)"라고 불리기도 하는데, 서블릿 패키지내의 클래스 혹은 인터페이스라고 보면 된다. 결국 그러한 서블릿 내의 클래스나 인터페이스를 선언하고 초기화 해주는 일을 미리 jsp가 특정한 이름으로 대신해 준다는 의미이다. 한가지 주의할 점은 JSP 기본객체는 선언부(declaration) 에서는 사용할 수 없다. 기본 객체는 JSP가 Servlet으로 자동 변환된 코드 내에서 _jspService 메소드 내에 선언된 파라미터..

    JSP (2) - Directive Tag(지시자 태그)

    JSP (2) 지시자(Directive) 태그 지시자(Directive) 태그는 현재의 JSP 페이지 자체에 대해서 JSP 엔진 및 컨테이너에게 각종 처리정보를 전달하고 수행해야 할 기능을 정하는 역할을 한다. 1. page Directive 태그 컨테이너에게 현재 JSP 페이지를 어떻게 처리할 것인가에 대한 정보를 제공하는데 사용된다. 2. include Directive 태그 여러 JSP페이지에서 공통적인 내용이 있을 때 매번 공통적인 내용을 작성하지 않고 파일로 저장 후 필요할 때 JSP 페이지에서 파일을 삽입하여 사용할 수 있다. 3. taglib Directive 태그 사용자에 의해서 만든 커스텀 태그(custom tag)를 이용할 때 사용되며, JSP 페이지 내에 불필요한 자바 코드를 줄일일 ..

    JSP (1)

    JSP (1) JSP 개요 1) JSP의 특징 JSP는 Java Server Pages의 약어로 웹 페이지를 동적으로 처리할 수 있는 기술 중의 하나로 서블릿 프로그램의 기능을 HTML 파일 내에 스크립트 형식으롤 구현할 수 있다. 프리젠테이션 로직과 비즈니스 로직의 분리 브라우저 화면에서의 표현을 꾸미는 절차 및 기능을 프리젠테이션 로직(presentation Logic)이라고 하며, 사용자의 요청에 대한 내부적인 처리 절차 및 기능을 비즈니스 로직(Business Logic)이라고 한다. JSP는 이러한 프리젠테이션 로직과 비즈니스 로직을 효울적으로 분리하여 동적 웹 사이트를 구축할 수 있는 훌륭한 서버 스크립트이다. 특히 비즈니스 로직은 자바빈즈(Javabeans) 컴포넌트 모델을 통하여 구현할 수..

    Servlet (4) - Session

    Servlet - 세션(Session) 1. 세션의 개념과 처리방식 HTTP 프로토콜의 특성상 연속된 연결은 존재할 수 없다. 왜냐하면 HTTP는 데이터의 전송이 긑나면 곧바로 연결을 끊어버리기 때문이다. 즉, 연결에 대한 영속성(persistence)이 없다. 이러한 방식은 부족한 네트워크 자원을 효울적으로 사용할 수는 있지만, 웹 서비스를 위한 사용자 인증 및 유 지와 같은 사용자 정보를 관리하는데 문제가 있다. 물론, 쿠키를 사용하면 사용자 인증을 만들 수 있지만 쿠키를 이용한 사용자 인증은 관리의 책임이 모두 프로그래머에게 있고, 쿠키를 브라우저 설정에 따라 사용하지 못할 수도 있기 때문에 완벽한 사용자 관리를 할 수 없다. 그래서, 서블릿에서는 세션 관리를 위한 전반적인 기능을 제공해주는 Htt..