목록전체 글 (322)
날아라쩡글이의 블로그입니다.
의존성 주입의 수동 주입 방법 setter setter injection(setter메소드를 이요한 의존성 주입) 의존하는 객체를 담는 멤버변수를 정의한다. 멤버변수 갯수만큼 setter메소드를 정의한다. 스프링 bean설정파일에서 태그를 이용해서 의존하는 객체를 주입시킨다. //name : setter메소드이름, ref:setter메소드의 매개변수로 전달되는 객체의 빈 아이디 public class SampleController{ //의존성 주입을 통해서 전달받은 객체를 저장하는 변수 UserService userService; //멤버변수의 타입은 의존성 주입을 받는 객체의 부모타입이다. ProductService productService; //의존하는 객체를 전달받을 setter메소드 public..
Spring은 POJO기반의 javaEE 애플리케이션 개발을 지원하는 경량(light-weight)의 프레임워크이다. POJO plain old java object 평범한 옛날 자바 객체 plain 특별한 라이브러리, 특별한 실행환경이 필요하지 않은 객체 특정환경에 종속되지 않는 객체 개발하기 쉽다. 재사용성이 높다 테스트가 용이하다. old EJB등장이전의 평범한 자바객체로 개발하던시절 new키워드로 객체를 생성하고 사용하던 시절 특별한 실행환경이 필요없던 시절 특별한 환경 혹은 라이브러리에 종속되지 않는 재사용성이 높고, 테스트하기 쉬운 객체 특징 경량의 프레임워크다. 여러개의 라이브러리로 구성되어 있다. 필요없는 기능은 뺴버려도된다. 꼭 필요한 라이브러리로 구성할 수 있다. 경량의 프레임워크다. ..
UserController, UserServiceImpl는 기대하는 객체이다. context-2.xml에는 namespace라는 추가적인 파일을 사용할 예정이다. context를 체크하고, 으로 작성하는 방법이다. base-package는 사용할 파일이 있는 경로를 입력한다. com.sample이라고 작성하면 *라는 의미로 전체의 파일을 사용할 수 있다. 여러가지 class로 종류가 많다. spring Container도 많다. 클래스에 따라서 계층에 맞게 사용되도록한다. @Controller 컨트롤러를 표현한다. @Repository 데이터베이스를 영속화 한다. @Service 업무로직 프론트컨트롤러가 전달, 허용하는 곳에 전달해서 관리한다. Activates various annotations to ..
e-Gov-FramDev 국공기업 공공기관으로 프로젝트를 진행하게 되면 개발사, 셋팅, 환경, 라이브러리가 전부다 다르다. 그럼 유지보수를 하기 어렵기 때문에 표준프레임워크를 만들기 시작했다. spring 기반의 '2007'버젼, 무조건 프로젝트를 진행할 때 사용하며, 필수적으로 배워야한다. 프로젝트가 규모가 클때 라이브러리가 많아지고, 라이브러리를 관리하기 어렵다. 프로젝트 생성도구와 프로젝트 관리도구가 필요하고, 배포, 패키징 등 별도의 툴이 중요하다. maven, ant, gradle등의 tools이 중요하다. 대표적으로 프로젝트 빌드도구 tools은 1. maven(자바기반) 과 2. gradle(그루비기반)가 사용된다. 둘 다 사용해도 되지만, 우리는 maven을 사용할 예정이다. 그러면 위의 ..
먼저 vo객체인 user에 대해서 생성자 , setter, getter메소드를 설정한다. userService인 interface를 설정하고, implements를 해서 return으로 new User(매개변수 입력)한다. resources에는 spring의 의존성을 주입하기위한 context-1.xml파일을 생성한다. spring bean configuration으로 만든 파일로 생성하면 된다. 그리고 UserController에 의존성객체인 private UserService userService; 를 입력한다. 현재까지는 new로 새로운 객체를 생성했지만 이제부터는 singleton객체로 만들어진 UserService로 사용할 예정이다. 싱글턴패턴은 원래 private static UserServi..
한마디로 정의하면 객체를 생성하는 공장, 생성된 객체를 조립하는 어셈블러이다. 어셈블러 : 기계어 형태로 오브젝트 코드를 해석해주는 컴퓨터 언어번역 프로그램 객체를 생성하고 조립하는 공장이 spring이다. 우리는 지금까지 표현계층, 서비스계층, 영속화계층에서 클래스를 사용할 때는 new라는 키워드로 생성했다. 소스파일, 다시코딩하면 다시 컴파일을 진행했다. DB시스템 종류에 따라서 혹은 클라이언트의 통신방법에 따라서 업무로직이 변경되는데, 여러 곳에서 사용시 종류가 달라서 유지보수가 힘들다는 단점이 존재했다. 어느패키지에서 어느 클래스를 생성할 껀지, spring에게 알려주면 환경 설정 파일을 통해 어떤 패키지 인지 명시를 하면, 자바클래스를 읽어서 객체를 생성하게 된다. 이를 spring 환경설정파일..
이클립스에서 사용하면 help -> eclipse market -> 이것을 다운받으면 spring 프레임워크와 동일한 환경이 완성된다. spring 4부터는 Jsp를 지원하지 않아 encoding에서도 html, jsp를 확인할 수 없다. 우리나라는 jsp기반의 개발을 많이하기 때문에 설치해주어야하는 것이 한개 더 있다. 이tool을 설치한 뒤, accept클릭 후 설치, 그러면 encoding을 UTF-8로 모두 설정해준다. 그럼 수업들을 준비는 완료 되었다. spring은 timeleaf를 더 많이 사용하도록 권장하고 있다.
jQuery는 ajax을 처리하기 위한 다양한 메소드를 지원한다. jQuery의 ajax처리를 위한 주요 메소드는 3가지로 존재한다. $.get(url, data,function(responseData){...}, responseDataType); *url: 요청URL data: 서버로 보내는 데이터, 보낼게 없으면 생략가능 {page:1, no:14} ->요청URL?page=1&no=14 "page=1&no=14" ->요청URL?page=1&no=14 위아래 둘중에 하나로 보내도 상관없다. 위처럼 보내도 아래처럼 변환되어 전송된다. *function(responseData) {...} : 서버로부터 성공적인 응답이 왔을 때 jQuery가 실행하는 메소드다. responseDate에는 서버가 응답으로 보..
부모 /형제/조상 선택자 찾는 메소드 자식 선택자 찾는 메소드 사용자가 필요한 값을 쉽게 읽어오기 위하여 정의할 수 있다. data-xxx이다. 에서 값 읽어오기 var 값 = $(선택자).data('xxx'); .data() 메소드로 데이터 읽어오기 var 구매금액 = $("#order-price").data("order-price"); var 추가금액 = $("#add-price").data("add-price"); var 총결제금액 = $("#total-price").data("total-price"); data의 경우 앞의 data-는 제외하고 데이터를 읽어오면 된다. .attr()메소드로 데이터 읽어오기 var 구매금액 = $("#order-price").attr("data-order-price..
깃을 설치 하고, 사용자명, 사용자의 이메일을 등록해주어야한다. 이상태가되면 CMD창과 이클립스에서 사용가능하다. 스테이징 git이 해당파일의 변화를 추적하기 시작한다. 스냅샷에 해당파일이 포함된다. commit 명령을 통해서 파일의 현재상태가 로컬저장소에 저장될 준비가 되었다. 로컬저장소 파일의 변경이력이 로컬저장소에 부여된다. 각 스냅샷마다 고유한 아이디가 부여된다. 커밋이 완료된 스냅샷은 원격저장소에 저장될 수 있다 원격저장소 로컬저장소에 저장된 스냅샷을 원격저장소에 저장한다. 특정시점의 소스코드 원격저장소에 저장된 스냅샷을 git clone ,fork를 통해서 사용자에게 공유된다. git pull은 원격저장소의 최신소스를 로컬저장소로 내려받고, 병합이 필요한 겨우 병합작업을 수행한다. 스테이징, ..
click이 발생하면 이벤트핸들러가 동작하면서 HTML을 조작한다. HTML DOM조작 엘리먼트, 엘리먼트의 속성, 엘리먼트의 컨텐츠를 조회/변경/추가/삭제 작업과 관련된 기능을 제공한다. 대칭성을 갖고 있다. 조회기능 $(selector).text() 엘리먼트의 텍스트 컨텐츠를 반환 태그가 제외된 상태로 반환된다. p태그의 중심의 text를 반환한다. $(selector).html() 엘리먼트의 html컨텐츠를 반환한다. 태그가 포함된 상태로 반환한다. $(selector).val() 폼요소의 값을 반환한다. $(selector).prop(name) 엘리먼트의 프로퍼티의 값을 반환한다. checked, disable, readOnly $(selector).attr(name) 엘리먼트의 속성값을 반환한다..
이벤트 처리 엘리먼트에서 특정 이벤트 발생시 실행될 콜백함수를 구현하고, 엘리먼트에 부착시키는 처리이다. 이벤트처리는 사용자와의 상호작용으로 이뤄지며, 엘리먼트안에 있는 이벤트 속성을 이용하는 방법이다. 이벤트를 발생시키는 방법들 function eventHandler(){ alert("버튼이 클릭되었습니다."); } 함수로 설정하고 해당 엘리먼트 객체에 onclick="eventHandler()"이벤트함수에 설정한 함수를 작성하는 방법 var btn2 = document.getElementById("btn-2"); btn2.onclick = eventHandler; btn-2엘리먼트를 찾아서 onclick프로퍼티에 eventHandler함수를 등록한다. var btn3 = document.getElem..
jQuery라이브러리에서 가장 중요한 부분이다. HTML문서에서 엘리먼트를 조작하기 위해서 반드시 선행되어야 하는 작업은 조작 대상이 되는 엘리먼트를 선택하는 작업이다. 모든 jQuery 작업의 시작은 $(select)함수로부터 시작한다. 기본선택자 *, #id, .class , tag 등이 있다. 아이디 선택자 $("#page-title").css("color", "red"); 클래스 선택자 $(".col").css("border","1px solid black"); 태그 선택자 $("h3").css("color",'green'); 기본 필터 선택자 :first, :last, :even, :odd 등이 있다. 선택자가 2개 있는 것이다. :first는 선택된 엘리먼트 중에서 첫번째 엘리먼트를 선택한다...
경량의 자바스크립트 라이브러리이다. 크로스 브라우징을 지원한다. 브라우져의 종류에 상관하지 않고, 똑같이 동작한다는 것을 의미한다. 내부적으로 어떤 브라우져인지를 판단하여, 결과값을 모든 브라우져에 동일하게 만들어준다. css3 선택자를 지원한다. 자바스크립트의 코드는 html자체를 조작하기 위해서 조작대상을 선택해야했다. id, name, tag name 은 제한적이다. jQuery는 선택자함수라는 기능이 존재한다. css선택자처럼 똑같이 적으면 해당아이디, class가 선택하는 것이다. ex) css h1{color:red;} #intro{border:1px solid black;} .from-control{margin-top:5px;} script var el = document.getElement..
일반 Http통신(동기식 통신) 요청시에는 컨텐츠가 표시되지 않음 새 요청을 보낼 수 없음 서버와 클라이언트가 동기식 통신을 하기 때문에 화면 전체가 리로딩 된다. 컨텐츠가 표시되지 않은다. 따로 누를 수 있는게 없다. 응답이 올 때까지 대기상태이다. 요청->응답->요청->응답의 순서로만 동작한다. 무조건 응답이 와야한다. 서버도 요청이 오지 않으면 응답을 보낼 수 없다. 웹브라우저가 요청보내기와 응답받기를 담당한다. 전체에서 이 방식을 사용한다. 컨텐츠가 표시되지 않는 시간이 존재하지 않는다. 화면표시가 되어 있기 때문에 언제든지 새로운 요청을 할 수 있다. 화면전체가 리로딩 되지 않는다. 요청에 대한 응답을 기다리지 않고, 새요청을 웹서버로 보낼 수 있다. 요청->응답->요청->응답 순서를 지켜서 서..
javascript object Notition 의 줄임말이다. 데이터 표기 법( 표기 형식 ) 동종 혹은 이종 시스템간의 데이터 교환을 위해 경량의 데이터 교환용 표기법이다. 경량은 가볍다는 의미로 주고받는 데이터의 크기가 작고, 사용시 시스템 부하가 작은걸 의미한다. 데이터의 양이 작고, 쉽게 만들고, 쉽게 해석하는 게 필요하다. 이것이 JSON의 탄생이다. 사람이 읽고 쓰기 쉽다. 기계 혹은 소프트웨어가 분석하거나 생성하기 쉽다. 다양한 프로그램언어들이 JSON 표기법을 지원한다. 자바의 객체 -> JSON형식의 텍스트 JSON형식의 텍스트를 자바의 객체로 아주 쉽게 바꿀 수 있다. 기계 혹은 소프트웨어가 분석하거나 (text -> 객체) 생성(객체 -> text)하기 쉽다. 분석 JSON 형식의 ..
Date 시스템의 현재 날짜와 시간 정보가 포함된 정보 획득하기 var now = new Date(); console.log(now); //Fri Dec 17 2021 10:48:25 GMT+0900 (한국 표준시) Date의 주요 메소드 console.log("년", now.getFullYear()); console.log("월", now.getMonth() + 1); //월은 0 ~ 11 console.log("일", now.getDate()); console.log("시", now.getHours()); console.log("분", now.getMinutes()); console.log("초", now.getSeconds()); console.log("유닉스타입", now.getTime()); c..
자바의 경우 public class Date{ public Date(){}//생성자 메소드 ->객체의 초기화를 담당 //기타메소드 //기타메소드 } 클래스파일( Date.class설계도 )로 객체를 생성하고, 생성자 메소드를 실행한다. 자바는 객체를 생성하기 위해서 클래스 파일이 필요하다. 그리고 this는 나자신을 가르킨다. 자바스크립트 name : "홍길동" 리터럴이다. : 을사용한다. key : value로 표현한다. this.name="홍길동" 함수이다. 수행문 작성을 한다. 배열 리터럴 [10, 20, 30] 배열 수행문 var x = []; x[0] = 100; 기능도 값이 된다. 자바스크립트에서 객체 생성하기 객체 리터럴을 사용하기 배열, 숫자, 상수를 표현하는 것이다. var obj = {..
배열 Map(함수) 지정된 함수가 반환하는 값이 포함된 배열을 생성한다. 원본배열을 이용해서 새로운 배열을 만들 때 사용되는 메소드이다. Map은 가공을 한다라는 의미로 생각하면 된다. 학생들의 성적정보가 저장된 배열, 데이터가 존재한다. var data = [ {name:"홍길동", kor:100, eng:70, math:70}, {name:"김유신", kor:90, eng:90, math:60}, {name:"강감찬", kor:70, eng:50, math:40}, {name:"이순신", kor:80, eng:70, math:70}, {name:"류관순", kor:100, eng:80, math:80} ]; 학생의 성적정보 배열 var names = data.map(function(student, i..
배열에서는 반복문을 사용하는 방법은 3가지가 존재한다. 1번 for(var a = 0; a totalScore += parseInt(el.value)); console.log("합계", totalScore); elements.forEach(el => totalScore += parseInt(el.value)); 화살표함수를써서 간단하게 forEach메소드를 사용한다. 배열.filter(함수) 지정된 함수를 배열의 갯수만큼 실행한다. 함수가 true를 반환하는 값만 포함된 배열을 반환한다. var names = ['김수영', '한올', '민수', '옥상달빛', '서자영', ' 김사월']; var shortNames = names.filter(function(name){ return name.length =..