Study 40

AppConfig

관심사의 분리 애플리케이션을 하나의 공연이라 생각해보자. 각각의 인터페이스를 배역이라 생각하자. 그런데 실제 배역 맞는 배우를 선택하는 것은 누가 하는가? 로미오와 줄리엣 공연을 하면 로미오 역할을 누가 할지 줄리엣 역할을 누가 할지는 배우들이 정하는게 아니다. 이전 코드는 마치 로미오 역할(인터페이스)을 하는 레오나르도 디카프리오(구현체, 배우)가 줄리엣 역할(인터페이스)을 하는 여자 주인공(구현체 배우)을 직접 초빙하는 것과 같다. 디카프리오는 공연도 해야하고 동시에 여자 주인공도 공연에 직접 초빙해야 하는 다양한 책임을 가지고 있다. 관심사를 분리하여 위의 문제를 해결한다. 배우는 본인의 역할인 배역을 수행하는 것에만 집중한다. 디카프리오(구현체)는 어떤 여자 주인공(구현체)이 선택되더라도 똑같이 ..

Study/Java&Spring 2021.07.17

객체 지향 프로그래밍

객체지향의 특징 추상화 캡슐화 상속 다형성 - 클라이언트(역할)를 바꾸지 않아도 기능(구현)을 바꿀 수 있는 것. 유연하고 변경이 용이하게 하는 것 객체지향 프로그래밍을 잘하려면? 역할과 구현을 잘 분리해야한다. 인터페이스를 안정적으로 잘 설계하는 것이 중요하다. 스프링에서의 객체지향 다형성이 가장 중요 다형성을 극대화해서 이용할 수 있게 도와준다. 스프링에서 이야기하는 제어의 역전(IoC), 의존관계 주입(DI)은 다형성을 활용해서 역할과 구현을 편리하게 다룰 수 있도록 지원한다. 스프링을 사용하면 마치 레고 블럭 조립하듯이, 공연 무대의 배우를 선택하듯이, 구현을 편리하게 변경할 수 있다. 다형성 자바언어의 다형서 오버라이딩 오버라이딩 된 메서드가 실행된다. 다형성으로 인터페이스를 구현한 객체를 실행..

Study/Java&Spring 2021.07.15

어노테이션(Annotation)

어노테이션(Annotation)이란? 사전적 의미로는 주석이라는 뜻이다. 코드 사이에 주석처럼 쓰여서 특별한 의미, 기능을 수행하도록 하는 기술이다. 컴파일, 런타임 시에 해석이 될 수 있다. 어노테이션을 적용할 때는 어노테이션이 어디에 적용되며 언제까지 어노테이션 소스가 유지될 것인지를 설정하여야 하는데 소스코드에는 다음과 같이 어노테이션을 정의해 주면 된다. @Target({ElementType.[적용대상]}) @Retention(RetentionPolicy.[정보유지되는 대상]) public @interface [어노테이션명]{ public 타입 elementName() [default 값] ... } @Target에는 어떠한 값(ex : 클래스, 필드, 메서드 ...)에 어노테이션을 적용할 것이지..

Study/Java&Spring 2021.06.28

Maven plug in error

Spring Maven 프로젝트 생성시 Could not get the value for parameter encoding for plugin execution default-resources 위와 같은 오류가 발생할 경우 아래와 같은 방법 대로 순차적으로 실행해 보길 바란다. 이클립스를 닫아 줍니다. User 폴더의 .m2 폴더를 찾습니다. (예를들어, "C:\Users\사용자이름\.m2") repository 폴더를 지웁니다. 이클립스를 다시 열어 줍니다. 실행 할 Maven 프로젝트의 "Project" --> "Clean" 을 시켜줍니다.(Project 메뉴는 이클립스 상단 메뉴에 있습니다.) 프로젝트를 오른쪽 클릭을 한뒤 "Maven" --> "Update Project" 를 눌러줍니다. 이클립스..

Study/Java&Spring 2021.06.24

Scope

4가지 종류의 Scope 존재 Application : 웹 어플리케이션이 시작되고 종료될 때까지 변수가 유지되는 경우 사용 Session : 웹 브라우저 별로 변수가 관리되는 경우 사용 Request : http요청을 WAS가 받아서 웹 브라우저에게 응답할 때까지 변수가 유지되는 경우 사용 Page : 페이지 내에서 지역변수처럼 사용 Page Scope PageContext 추상 클래스를 사용한다. JSP 페이지에서 pageContext라는 내장 객체로 사용 가능 하다. forward가 될 경우 해당 Page scope에 지정된 변수는 사용할 수 없다. 사용방법은 Application scope나 Session scope, request scope와 같다. 마치 지역변수처럼 사용된다는 것이 다른 Scop..

Study/Java&Spring 2021.06.17

JSP

JSP 는 Servlet으로 바뀌어 작동한다. 다음과 같은 JSP 코드가 있다고 했을 때, 지시문 page language="java"를 통해 java로 작성된 다는 것을 알 수 있다. contentType="text/html; charset=UTF-8" 를 통해 UTF-8 형식을 가진 html 로 반환된다 라는 것을 알 수 있다. Scriptlet(스크립트릿) 자바 프로그래밍 코드를 사용할 수 있는 부분이다. 가장 일반적으로 많이 쓰이는 스크립트 요소 표현식(Expression) Java의 변수의 값을 화면에 출력하기 위해 사용합니다. out.parin(변수명) 이렇게 사용하던 것과 같은 결과를 나타낸다. 선언식(Declaration) 전역변수 선언 및 메소드 선언에 사용 주석 JSP 주석인 경우 Se..

Study/Java&Spring 2021.06.17

Request, Response

HttpServletRequest http프로토콜의 request정보를 서블릿에게 전달하기 위한 목적으로 사용합니다. 헤더정보, 파라미터, 쿠키, URI, URL 등의 정보를 읽어 들이는 메소드를 가지고 있습니다. Body의 Stream을 읽어 들이는 메소드를 가지고 잇습니다. 아래와 같은 방법으로 파라미터 이름을 이용하여 request를 할 수 있다. http://loclhost:8080/uri?파라미터이름=value 요청을 하면 아래 코드로 읽을 수 있다. request.getParameter("파라미터 이름"); 이 외에도 아래와 같은 것들이 있다. //URI 요청 request.getRequestURI(); //URL 요청 request.getRequestURL(); //Content 요청 req..

Study/Java&Spring 2021.06.17

Servlet(서블릿)

Servlet 이란? JAVA 웹 어플리 케이션의 구성요소 중 동적인 처리를 하는 프로그램의 역할 WAS에 동작하는 JAVA클래스 HttpServlet 클래스를 상속받아야 함 import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation ..

Study/Java&Spring 2021.06.11

Insert, Update, Delete, Create, Add, Drop, Change, Rename 문

Insert 테이블에 데이터를 저장할 때 사용. INSERT INTO 테이블명(필드1, 필드2, 필드3, 필드4, ...) VALUES (필드1의 값, 필드2의 값, 필드3의 값, 필드4의 값, ...); 또는 INSERT INTO 테이블명 VALUES (필드1의 값, 필드2의 값, 필드3의 값, 필드4의 값, ...); 필드명이 생략된 경우에는 모든 필드값을 넣어주어야 합니다. Update 테이블에 있는 데이터를 수정할 때 사용 UPDATE 테이블명 SET 필드1=필드1의값, 필드2=필드2의값, 필드3=필드3의값, ... WHERE 조건식 바꾸고자하는 필드에 대해서만 값을 입력 해주면 됩니다. WHERE 절이 없는 경우에는 모든 테이블의 데이터가 변경 됩니다. Delete 데이터를 삭제할 때 사용. D..

Study/SQL 2021.05.12

Select 문 정리

Select ▶ 전체 데이터 검색 테이블의 모든 데이터를 검색 할 때 사용한다. SELECT * FROM 테이블명; ▶ 특정 컬럼 검색 SELECT 뒤에 컬럼명을 콤마(,)로 구별해서 나열 SELECT 컬럼명1, 컬럼명2, 컬럼명3 FROM 테이블명; ▶ 컬럼에 Alias 부여 컬럼에 대한 ALIAS(별칭)을 부여해서 나타내는 칼럼의 HEADING을 변경할 수 있음 SELECT 컬럼명1 AS 별칭명1, 컬럼명2 AS 별칭명2, 컬럼명3 AS 별칭명3 FROM 테이블명; ▶ 컬럼의 합성(Concatenation) 문자열을 결합할때 사용 SLEECT CONCAT(컬럼명1, '-', 컬럼명2) AS '별칭1-별칭2' FROM 테이블명; ▶ 정렬하기 기본적으로는 오름차순으로 정렬한다. 내림차순으로 정럴하기 위해..

Study/SQL 2021.04.13