전체 글

오늘 할 일은 내일로 미루고 내일 할 일은 생각하지 말자
· BackEnd/Java
서블릿, Servlet Servlet = Server + Applet 즉, 서버에서 동작하는 애플릿 프로그램이다. 애플릿이란? 위키피디아 자바언어로 개발되어 바이트코드 형태로 배포되는 '실행 가능 형태'의 프로그램 JVM만 존재한다면 애플릿 프로그램을 실행할 수 있다. 주로 JVM이 포함된 웹서버(톰캣), 애플릿 실행기등에서 동작한다. 플러그인 형태로 JVM을 포함하고 있는 브라우저에서도 동작 가능 실행 가능 형태의 프로그램으로 배포되어 악성코드에 노출 될 이용자들을 위해 실행가능 형태의 프로그램 배포를 중단하고 서버에 올려서 사용하게 되었다, 서버와 Applet 의 합성어가 Servlet 이다. 웹 어플리케이션을 개발하기 위한 자바의 기술(Spec) 서블릿 스펙 (Servlet Spec)..
· Engineering
싱글톤 패턴, Singleton 객체를 여러 번 생성하려고 시도하더라도 하나의 인스턴스(객체)가 유지되도록 고안한 패턴 객체 생성에 필요한 자원의 요구 정도가 높은 객체를 빈번히 생성하지 않고 딱 한 번 만들어두고 계속 사용하기 위해서 적용 싱글톤 패턴이 적용되는 위치 리소스를 많이 사용하는 자원을 로드할 때 1번과 같은 자원들을 지속적으로 사용될 때 ex) JDBC 드라이버, Log(로그) 객체, static 블록, 초기화 블록, Initialization Block 클래스의 코드가 로드될 때 딱 한번만 수행하는 코드 블록 객체 생성(인스턴스화, 생성자 호출, new 객체()) 과는 무관하게 수행된다. 클래스 변수(정적 변수, static 변수)를 초기화할 때 사용한다. 클래스 변수에 단순 값 대입(초..
· BackEnd/Java
MVC 패턴 프로그램을 세가지 파트(역할)로 구분하여 개발하는 방법론 MODEL 2 기반의 MVC패턴을 적용한다 Model, View, Controller 의 약자 Model 데이터베이스(저장소)의 데이터를 처리하는 파트 데이터베이스(저장소)의 데이터를 관리 DAO, DTO 가 Model 에 해당한다. View 사용자가 보는 화면을 구성하는 파트 프레젠테이션 로직 Controller 사용자의 입력처리, 프로그램 흐름제어, 사용자와의 상호작용 비지니스 로직 웹 프로그래밍에서는 Controller의 역할을 나누어 Service Layer를 둔다. Service 계층은 비지니스 로직의 일부 Controller 의 역할 사용자의 입력 처리 데이터베이스 데이터 처리(가공)하기 도메인(Domain) 객체를 처리하는..
· Engineering
디자인 패턴, Design Pattern 잘 알려진 알고리즘들을 정리한 것 프로그램 설계 상 발생하는 문제(issue)에 대한 해답을 문서화한 것 프로그램을 개발하면서 자주 마주치는 상황(문제점)을 해결하기 위한 설계 노하우를 적용시킨 형태
· Engineering
프로그래밍 아키텍쳐, Architecture 프로그램 작성 구조 프로그램 코드의 기능별 구성 모델 1 비지니스 로직과 프레젠테이션 로직을 하나로 합쳐놓은 구조 모델 2 비지니스 로직과 프레젠테이션 로직을 분리해놓은 구조 비지니스 로직, Business Logic 클라이언트(사용자)한테 보이지 않는 부분 데이터를 처리(가공)하는 응용프로그램의 일부 영역 주로 데이터베이스 처리 작업을 수행한다 ex) 로그인 데이터 (id, password) 인증, 게시글 조회결과 가져오기 프레젠테이션 로직, Presentation Logic 클라이언트(사용자)한테 보이는 부분 출력 화면을 구성하는 응용프로그램의 일부 영역 모델 1 아키텍처, MODEL 1 비지니스 로직 + 프레젠테이션 로직을 하나의 파일로 구현한 것 장점과..
· BackEnd/Java
Execute 메소드의 종류 매개변수로 전달받은 SQL 구문을 수행하는 메소드 ResultSet executeQuery(String sql); SELECT Query 결과를 ResultSet 으로 반환, ResultSet에는 조회된 모든 행을 담고 있다. ResultSet객체.next() 호출할 때마다 결과집합의 각 행을 나타낸다. int executeUpdate(String sql); 영향받은 행의 수를 int형으로 반환 주로 INSERT, UPDATE, DELETE를 수행할 때 사용한다. boolean execute(String sql); 반환 값 : true, false true - ResultSet 객체를 반환하는 쿼리를 수행했을 때(SELECT) false - ResultSet 객체를 반환하지 ..
· BackEnd/Java
DAO, Data Access Object 데이터베이스의 데이터에 접근하기 위해 작성되는 객체 데이터베이스에 수행할 SQL 구문 하나를 하나의 메소드로 구현한다. Interface 와 Class 로 나눠 작성하는것이 좋다. interface에서 구현된 메소드들의 목록을 간편히 확인할 수 있다. interface에 메소드마다 주석을 작성해놓는 것이 좋다 전체적인 개요를 한눈에 볼 수 있다. class에는 실제 구현 코드를 작성한다. interface는 개발하는 시점에 메소드 형식에 대한 가이드가 된다.
· BackEnd/Java
DTO, Data Transmission Object 데이터 전송 객체 계층(Layer) 간 데이터 교환을 위해 작성되는 자바 클래스 DTO 작성 규칙 멤버 필드는 모두 Private 접근 제한자를 적용한다. 메소드는 getter, setter, toString 만 작성한다. 추가적인 일반메소드는 작성하지 않는다. 데이터 이외의 추가 기능을 넣지않고 데이터에만 집중한다. 클래스명을 데이터베이스의 테이블명으로 하는것이 좋다. 클래스의 필드명은 데이터베이스의 컬럼명으로 작성하는 것이 좋다. DTO 와 유사한 VO, Value Object 데이터를 저장하기 위해 작성되는 자바 클래스 VO와 DTO는 거의 동일하지만 큰 차이점은 VO는 데이터를 저장하기 위한 객체, DTO는 데이터 교환을 위한 객체라고 생각하면..
JDBC, Java DataBase Connectivity 자바에서 데이터베이스에 접속/관리할 수 있게 해주는 드라이버(API) 자바로 작성된 프로그램으로 DB와 관련된 작업을 처리할 수 있도록 제공되는 기능(코드)들을 모아놓은 것 OJDBC - Oracle 에서 제공하는 오라클 DB를 관리할 수 있도록 도와주는 JDBC이다. OJDBC & Oracle 버전 OJDBC6 - JDK 6 이상 - 오라클 11gR2 -- 나는 이것을 사용한다. OJDBC5 - JDK 5 이상 OJDBC14 - JDK 1.4 이상 OJDBC13 - JDK 1.3 이상 OJDBC12 - JDK 1.2 이상 자바 프로젝트에 OJDBC 설치하기(적용하기) Dynamic Web Project에서 ojdbc6.jar 를 복사하여 추가한..
정규 표현식, Regular Expression 정규 표현식 테스트 사이트 특정 규칙을 가진 문자열이나 문자열 집합을 표현하는 데 사용하는 형식 언어(Formal Language) 문자열에서 특정 패턴의 문자열을 검색하거나 치환할 때 사용한다 형식에 맞는 데이터를 입력했는지 검증할 때 사용한다(검증, Validation) 정규식 이라고도 불린다. 정규 표현식 생성 방법 정규식 리터럴 상수 정규식을 '/'(슬래쉬)로 감싸는 방법으로 표현한다. ex) var regEx = /abc/ RegExp 객체를 생성 RegExp 객체의 생성자 함수를 호출하는 방법으로 표현한다. ex) var regObj = new RegExp("abc") 정규 표현식 사용 패턴 단순 패턴 완전히 일치하는 문자열을 대응..
노드 스타일 다루기 $("객체").css("스타일속성") 스타일 속성의 값을 가져온다 $("객체").css("스타일속성", "스타일값") 스타일 속성의 값을 지정한다. $("객체").css(["속성1번", "속성2번", "속성3번", ... ]); 여러개의 스타일 속성의 값을 한번에 가져와서 출력한다. (배열) 배열(Array) 타입으로 입력한다. 객체(Object) 타입으로 반환한다. $("객체").css({"속성1":"1번의 속성값", "속성2":"2번의 속성값", ... }) 여러개의 스타일 속성의 값을 지정하여 설정한다. (객체) 객체(Object) 타입으로 입력한다. 속성 다루기 $("객체").attr("속성이름") 객체의 속성값 얻어오기 $("객체").attr("속성이름", "속성값") 객체의..
jQuery Event 전부 쌍으로 이루어져 있고, Deprecated 되어있다. bind unbind live die delegate undelegate load unload 지금 사용하고 있는 이벤트 리스너 등록/해제 함수는 on / one(등록) $("객체").on("이벤트이름", function() { // 이벤트 처리코드 작성 }); $("객체").on("이벤트이름", "Selector", function() { // 동적으로 추가되는 객체의 부모요소에 사용한다. // 셀렉터 부분을 알맞게 수정해준다. }); $("객체").on({ "이벤트명1": function() {}, "이벤트명2": function() {} // 이런식으로 여러 개의 이벤트 리스너를 한번에 등록할 수 있다. }); off..
노드의 여러가지 명령어 $("노드텍스트"); $("div") // div태그 객체가 생성된다. // $("div") - div태그 객체가 생성된다. // $(div) - div태그 객체를 선택한다. // 구분 잘 해야한다. $("객체").clone() - 객체를 복사하여 반환한다 var $div2 = $("#myDiv").clone(); // 깊은 복사(Deep Copy)로 새로운 사본이 만들어진다. // 자식노드까지 함께 묶음으로 복사된다. 노드 이동/추가 $부모노드.append($추가노드) $추가노드.appendTo($부모노드) 부모노드의 마지막 자식으로 추가노드를 삽입한다, 이미 다른 위치에 존재하던 노드라면 이동이 된다 $부모노드.prepend($추가노드) $부모노드.prependTo($추가노드)..
다양한 노드접근 방식 $("객체").eq(index) - index(숫자)번째 노드를 jQuery DOM 객체로 변환한다. $("객체").get(index) - index번째 노드를 JS DOM 객체로 반환한다. jQuery DOM 객체에 [index]를 적용하면 get(idx)와 같은 동작을 한다. $("p")[2] == $("p").get(2) 순차적으로 노드에 접근하기(반복문) $(객체).each(function(index, element) { // 요소마다 각각 반복 될 코드 }) // index : 객체의 인덱스 // element : 해당 반복의 JS DOM 객체 $("p").each(function(i, e) { console.log("-- " + i + " --") console.log(e..
jQuery API jQuery Core jQuery 문법이 적용되었음을 알리는 키워드 jQuery $ ex) document.getElementById("idname") 와 같은코드를 jQuery("#idname"), $("#idname") 으로 사용할 수 있다. jQuery Core 키워드는 변수에 저장하여 사용할 수 있다. var J = jQuery; --> J("#idname") jQuery 스타일의 DOM 객체 이용 코드 $(document).ready(function() { } ) == window.onload = function() { } jQuery 노드객체 찾기 -> jQuery에서 가장 중요한 파트 $("CSS셀렉터") $(jsDOM객체) 순수 JS API를 적용할 수 있는 객체를 js..
헌일