전체 글

오늘 할 일은 내일로 미루고 내일 할 일은 생각하지 말자
· BackEnd/Java
throws 예외클래스명; [접근제한자] [식별자] [리턴타입] 메소드명(매개변수) throws 예외클래스명 { // 예외 발생 코드 포함 작성 } throws 가 적용된 메소드를 호출할 때 try - catch 구문을 이용한 예외처리가 필요하다. 예외처리를 하지 않으면 대부분 문법에러가 발생한다. 사용자 정의 예외 만들기 API Exception 클래스들 이외에 추가적으로 예외 상황을 정의하는 클래스를 만드는 것. 개발자가 직접 예외 상황을 설정하고 클래스로 구현하는 것 Exception 클래스, RuntimeException 클래스를 상속받아 구현한다. class User { private int age; public int getAge() { return age; } public void setAg..
· BackEnd/Java
컴파일 타임 에러 (Compile-time Error) 컴파일 시점에 발생하는 에러 이클립스에서는 소스코드를 저장하는 즉시 주로 문법 에러(Syntax Error) 런타임 에러 (Runtime Error) 프로그램 수행 중 발생하는 에러 수행할 수 없는 작업을 시도할 때 발생 주로 Exception(예외) 처리 된다. NullPointerException : null 값을 참조해서 코드 수행 시 ArrayIndexOutOfBoundsException : 배열에 Index 지정을 잘못 했을 때 ArithmeticException : 불가능한 산술연산 수행 시 논리 에러 (Logical Error) 프로그램이 에러없이 잘 작동한다. 프로그램의 흐름, 동작이 개발자의 의도대로 수행되지 않을 때 ex) 무한루프..
· BackEnd/Java
try ~ catch 구문 MultiCatch try { // 예외가 발생할 수 있는 코드 } catch(Exception e) { // 예외 처리 코드 } finally { // finally 는 생략 가능하다. // 특수한 경우 사용하게 되는데, try단에서 예외가 발생하여 프로그램이 종료 된 경우 // 실행이 안된 남아있는 코드들 중 반드시 실행해야하는 코드를 finally에 넣는다. // 프로그램이 예외가 없어 종료되지 않아도 무조건 실행된다. // 주로 Checked Exception 에서 사용하는 경우가 많다. // 자원해제할 때 사용하는 코드. } 일반적인 try catch package kh20200312; public class Exception03_Try { public static v..
조인의 종류 순서는 Oracle 문법 - ANSI 문법 - Oracle 문법 - ANSI 문법 EQUI JOIN, 등가 조인 오라클 전용 구문 조인의 기본이 되며, FROM절에 조인 대상 테이블들을 ','(COMMA)로 나열한다. 조인 대상 테이블들의 공통데이터를 가지는 컬럼을 이용해 조인한다(WHERE 조건 = 조건) 조인 컬럼이 같은 값을 가질 때 조회될 수 있도록 WHERE 절에서 조인 조건을 적용한다. 가장 많이 사용되는 구문 형식이다. ANSI 표준 INNER JOIN, 내부 조인 EQUI JOIN과 같은 결과를 얻는다. 구문 형식 FROM 기본테이블 INNER JOIN 조인테이블 ON 조인조건절 INNER JOIN 키워드에서 INNER를 생략하고 JOIN만 사용해도 된다. NON..
조인, JOIN 2개 이상의 테이블을 한번에 SELECT 하기 위해 사용한다. Primary Key 와 Foreign Key를 이용하여 조인 조건을 설정한다. 조인 조건 : 두 개 이상의 테이블을 결합할 때 사용하는 조건 Primary Key 기본키(PK) 테이블의 각 행들을 구분하기 위한 식별값으로 쓰이는 컬럼 기본키 무결성 원칙 해당 컬럼은 테이블에서 고유한 값이어야 한다. - UNIQUE 해당 컬럼은 NULL 값을 가질 수 없다. NOT NULL Foreign Key 외래키(FK) 다른 테이블의 컬럼을 참조하고 있는 컬럼 다른 테이블의 Primary Key를 참조한다. 외래키 무결성 원칙 참조 테이블에 기본키가 존재하는 값만 가질 수 있다. 조인의 문법 종류 오라클 전용 문법 ANSI 표준 문법 A..
DML MERGE 오라클 전용 문법 SELECT 수행 결과에 따라 UPDATE 또는 DELETE 또는 INSERT 를 수행한다. SELECT 조회 결과가 '존재하면' UPDATE 또는 DELETE 수행한다. SELECT 조회 결과가 '존재하지' 않으면 INSERT 를 수행한다. -- MERGE 구문 형식 MERGE INTO TABLENAME USING ( SELECT 절 - 인라인 뷰(서브 쿼리) ) ON (조건절) WHEN MATCHED THEN 구문 WHEN NOT MATCHED THEN 구문; -- INTO : 삽입, 갱신, 삭제가 이루어지는 테이블 -- USING : 조건 비교할 소스테이블 또는 인라인 뷰(서브쿼리) -- ON : WHEN 절에서 반응하는 조건을 부여하..
태그의 기본 영역(레이아웃) 속성 block div(division) h1~h6 p ol ul 등 block의 요소들은 한 줄 전부를 차지하는 영역 속성을 가지고 있다. 화면에서 일부 영역을 차지하면서 구역 설정을 담당한다. 화면의 전체적인 구조를 구성할 때 사용된다. inline span a img 내용물(컨텐츠)의 영역을 나타내는 속성, 컨텐츠를 표현하기 위한 태그로 사용된다. block 요소의 내부에 포함시켜 작성한다. 태그없이 사용된 단순 텍스트도 inline 요소처럼 처리한다. 글자 관련 태그 h1 ~ h6 heading 태그라고 한다. 제목 표현 태그 h1이 제일 크고 h6로 갈수록 작아진다. p Paragraph의 약자 문단을 표현하는 태그이다. 공백문자(띄어쓰기, 탭, 개행)이 개별적으로 ..
· BackEnd/Java
서블릿의 동작 원리 클라이언트 요청 -> Apache Tomcat 서버(WEB + WAS) -> 서블릿 컨테이너 -> 서블릿 객체 -> service() 호출 -> doGet() 또는 doPost() 호출 -> 서블릿 컨테이너 -> Apache Tomcat 서버 -> 클라이언트 응답 서블릿 컨테이너, Servlet Container 서블릿 처리(동작) 환경을 구축하는 역할 서블릿을 생성하고 실행시켜주는 역할을 수행한다. WAS서버와 서블릿 객체 사이의 중간다리 역할을 수행한다. HttpServletRequest(HTTP 요청객체), HttpServletResponse(HTTP 응답객체) 두 가지를 생성하여 서블릿에 전달한다. 요청 URL-Pattern과 서블릿 객체를 1:1로 따로 매핑해놓고 요청을 기다..
· BackEnd/Java
세션, Session 서버가 클라이언트의 요청을 식별하는 방법 javax.servlet.http.HttpSession 객체를 사용한다 request(요청객체)를 통해서 HttpSession 객체를 얻어와 사용하게 된다 ex) HttpSession session = request.getSession(); 서버가 사용자의 정보를 유지하기 위한 기술 ex) 로그인 상태 쿠키보다 상태 정보에 대한 유지력, 보안성이 좋다 쿠키 정보는 클라이언트에 저장되고, 언제든 지워질 위험이 있다 세션 정보는 서버가 관리한다 클라이언트(브라우저) 별로 따로 관리한다 세션 정보는 기본적으로 메모리로 관리한다 세션의 동작 원리 클라이언트의 요청(첫 접속)이 들어오면 서버는 Session ID 를 생성한다. 서버가 응답하면서 Set..
· BackEnd/Java
쿠키, Cookie 웹 서버가 클라이언트(브라우저)에 정보를 저장하는 기술 웹 서버에서 필요할 때 쿠키 정보를 꺼내서 사용할 수 있게 만들어 준다 자바에서는 javax.servlet.http.Cookie 객체를 이용하여 관리한다. 쿠키 정보는 name = value 쌍으로 이루어진 정보이다. 여러개의 쿠키를 저장할 수 있다. 브라우저는 도메인별로 쿠키를 저장하고 관리한다. 쿠키는 유지시간(MaxAge)을 가지고 있다. - 쿠키 보관 기간 기본값은 무한이며 초단위로 설정 가능하다. 쿠키의 기본 동작 흐름 클라이언트(브라우저)는 서버에 요청을 보낼 때 항상 쿠키 정보를 포함하여 전달한다. 요청 정보에 포함 시킨다 없으면 보내지 않는다 서버는 클라이언트의 요청데이터에서 쿠키 정보를 확인할 수 있다. 응답 헤더..
Spring jUnit 테스트 Spring 테스트 환경 구축 spring-test, hamcrest-library, hamcrest-all, mockito-all Dependency 추가 작업 중이던 프로젝트 우클릭 - Build Path - Libraries 이동 - 오른쪽 메뉴에 Add Library 클릭 - jUnit 선택 - jUnit library version : jUnit 5 확인하고 Finish - Apply and Close 마이바티스를 연동해서 사용 중이라면 config.xml 파일에서 mappers 태그 지워주기 스프링 폴더의 root-context.xml 로 이동해서 sqlSessionFactory 에 소스 추가해주기 mybatis 폴더를 src/test/resources 로 복사 ..
Spring MVC Legacy Project 생성하고 구성하기 Eclipse > new > other > Spring > Spring Legacy Project Project name 설정 > Templates 영역 가장 하단에 Spring MVC Project 선택 Specific Setting 할 때 com.xxx.xxx 형식으로 주소를 입력해야하는데 최소한 3Depth 로 구성하는것이 좋다, 세번째 Depth 가 Context Path 로 지정된다 ex) com.heonil.project -> project 가 Context Path -> localhost:9999/project Tomcat 에 올리고 사용 pom.xml 환경설정 java 1.6 > java 1.8 SpringFramework 3..
Spring 첫 프로젝트 만들기 File - new - other 선택 Spring 폴더 찾기 Spring Legacy Project 선택 제일 밑에 Spring MVC Project 선택 프로젝트 이름 입력 Top-level Package 입력 3단계로 이루어진 기본 패키지 (xcode 에서 com.username.www ~~ 쓰는것과 똑같은 원리) Finish 스프링 프로젝트에 적용되어 있는 JRE 버전 바꾸기 프로젝트 폴더 우클릭 Build Path 메뉴 - Configure build path 클릭 왼쪽 사이드 메뉴 중에서 Project Facets 선택 Java 항목에서 1.6 을 1.8 로 변경 선택 Apply 변경 확인은 왼쪽 사이드 메뉴나 프로젝트 우클릭 - Build Path - Libr..
Spring Transaction 속성 @Transactional(readOnly=true, isolation=Isolation.DEFALUT, rollbackFor=Exception.class) propagation 이미 진행 중인 트랜잭션이 존재할 때 새로운 쿼리가 호출 될 경우 어떻게 처리할 지 설정한다 @Transactional(propagation=Propagation.REQUIRED) REQUIRED(기본값) - 진행중인 트랜잭션이 있다면 새로운 쿼리가 트랜잭션에 포함되고 진행중인 트랜잭션이 없다면 새로운 트랜잭션을 생성한다 REQUIRED_NEW - 항상 새로운 트랜잭션을 시작한다 SUPPORT - 이미 시작된 트랜잭션이 있으면 트랜잭션에 포함하고 없으면 트랜잭션 없이 진행한다 NOT_SUP..
· BackEnd/Java
일반화 프로그래밍, 제네릭 자바에서는 일반화 프로그래밍 이라는 용어는 많이 사용하지 않고 제네릭이라고 한다. 일반화 프로그래밍은 C언어 쪽에 더 가깝다. 일반화 프로그래밍 자료형을 일반화시켜 프로그래밍 하는 것 int double float boolean String(참조형 포함) Point Person .. 등등 위의 자료형들의 특성을 무시하고 데이터타입의 이름을 정해 일반화하고 개발하는 것 자바에서는 제네릭을 이용하여 구현한다. // ex) public void out (String var) { } public void out (Integer var) { } public void out (Boolean var) { } // 세개를 오버라이딩하는데 내용이 매우 흡사하다. // 이럴 때 제네릭을 사용한다..
헌일