@InitBinder 스프링프레임워크에서의 바인딩이란 모델 클래스(오브젝트)의 프로퍼티(메서드 set)에 값을 넣는 것을 말한다. 두가지 바인딩을 제공하는데.. 첫 번째는 xml설정 파일을 통해 의 에 값을 넣는 것이다. 하지만 xml자체가 문자열이기 때문에 해당 빈클래스의 property값이 기본형 타입이나 String이라면 괜찮지만 그 외의 타입이라면 바인딩 하기전에 적절한 변환이 필요하다. 두번째는 Http를 통해 전달되는 헤더, 쿠키, 파라미터 같은 정보인데 이런 것들도 전부 문자열로 전달되는 값이다. 해서 이 경우에도 특정 타입으로 매칭시키려면 바인딩 과정 중에 적절한 변환이 필요하다. 컨트롤러 메서드에서는 @RequestParam, @PathVariable, @ModelAttribute등이 메..
JUnit은 자바에서 제공하는 표준 테스트 도구이다. 스프링도 JUnit을 발판으로 테스트를 하면서 만들어졌다고 한다. JUnit을 실행하는 방법 대부분의 자바 개발자가 사용하는 이클립스는 JUnit테스트를 지원하는 기능을 제공하고 있다.@Test가 들어있는 클래스를 선택 - Run - Run as - JUnit Test를 선택하면 실행할 수 있다. JUnit은 한번에 여러 테스트 클래스를 동시에 실행 할 수도 있다. 이클립스 왼쪽 소스폴더 트리의 프로젝트나 패키지 디렉토리를 선택해서 위에서 설명한 실행방법 대로 하면 JUnit테스트를 한번에 실행해준다. 테스트 클래스 작성방법 JUnit이 하나의 테스트 클래스를 가져와 테스트 하는 방식(과정)1. 테스트 클래스 내부에서 메서드 레벨에 @Test가 붙고 ..
제네릭스 - 메서드나 컬렉션클래스에 대해 컴파일시 타입체크를 해주는 기능. 장점 - 컴파일 시 의도하지 않는 타입객체가 저장되는 것을 막으므로 타입안정성 제공 - 타입의 체크와 형변환을 생략할 수 있기 때문에 코드의 간략화 > 제네릭클래스 기본형태 class Student{ private T name; List list = new ArrayList(); public void setName(T name){ this.name=name; list.add(name); } public T getName(){ return this.name; } } 제네릭 클래스를 만드는 방법은 클래스 명옆에 를 붙이고 이 T와 같은 타입을 가지는 곳에 똑같이 T를 써주면 된다. T를 '타입변수'라고 하며, Type의 첫글자를 의미..
기본적으로 로그파일은 var/log 라는 디렉토리 하위에 존재한다. /var/log/maillog메일과 관련된 로그를 기록하며, 이 파일을 이용하여 어떤 메일들이 오고 가는지 확인할 수 있다.메일이 오고 간 시간, 호스트, 데몬 유저, 메일 크기 등. /var/log/messages메일, 뉴스 등을 제외한 전체적인 로그를 기록하는 파일. /var/log/secure유저의 접속 기록을 표시 /var/log/lastlog각각의 계정에 대하여 마지막으로 로그인한 정보를 기록하는 파일이다.lastlog명령어로 확인 할 수 있다. /var/log/boot.log부팅시 서비스 데몬들의 실행 상태 기록 /var/log/dmesg시스템이 부팅할 때 출력되는 메세지가 기록되어 있다. /var/log/croncron과 관..
시스템 종료와 재부팅 - shutdwon 명령어shutdown [옵션] [시간] [메세지] shutdwon -h 1010분후에 시스템을 종료shutdwon -r now바로 시스템 재부팅shutdown -c시스템종료 예약 취소 명령 - init 명령어리눅스 시스템이 가동되는 방법에는 0~6까지 7개가 있다. 이를 런레벨(Run Level)이라고 한다.0 - 종료모드1 - 단일 사용자 모드(시스템 복구시 사용)2 - 다중 사용자 텍스트 모드(NFS 사용불가)3 - 다중 사용자 텍스트 모드4 - 사용안함5 - 다중 사용자 그래픽 모드6 - 재부팅 모드 init 0 시스템을 종료한다.init 6 시스템을 재부팅 한다.init 3 다중사용자 텍스트 모드로 전환한다. 현재 사용되고 있는 init모드를 설정하거나 확..
익명클래스는 인스턴스 생성시 이름이 없는 클래스이다. 익명 클래스는 클래스, 인터페이스가 그 대상이 된다. 클래스의 선언과 인스턴스 생성을 동시에 하기 때문에 한번만 사용되며, 하나의 객체만을 생성한다는 특징이 있다. 익명클래스 형태 new 조상클래스이름{} new 인터페이스이름{} 이름이 없기 때문에 생성자도 가질 수 없다. 일반적인 클래스와는 달리 상속과 구현을 동시에 할 수 없으며 오로지 하나의 인터페이스를 구현하거나 하나의 클래스를 상속 받을 수 있다.System.out.println(new Layout(){ void test(){ System.out.println(i); } void tests(){ System.out.println(222); } }); 위의 결과는 패키지명,메인클래스이름$1@1..
jsp 개발환경 구축 ○ java 설치 및 설정 - java se jdk 다운로드(본인은 1.8 버전받음)http://www.oracle.com/technetwork/java/javase/downloads - FTP를 열어서 다운받은 jdk파일 올린다. - java jdk1.8.~ 압축파일 해제 (tar -xvf 파일명) - mv 명령어로 압축을 해제한 jdk1.8.~디렉토리를 /usr/local/ 경로로 이동시킨다. - jdk 경로설정을 쉽게 알아보기 위해 jdk1.8.~디렉토리의 심볼릭링크를 java이름으로 변경> ln -s /usr/local/jdk.1.8~ java - 콘솔에서 자바를 컴파일, 실행하기 위해 환경변수를 설정한다.1. 수정을 위해 profile파일을 연다(vi 모드)> vi /etc..
1. 구글 리캡차 api key 발급https://www.google.com/recaptcha/admin#list label : 이름domain : URL입력 (로컬이라면 localhost 입력) owner : 소유자 이메일 발급받은 후 sitekey, secretkey 복사 2. 메이븐 의존성 주입net.tanesha.recaptcha4jrecaptcha4j0.0.7 3. jsp 엘리먼트 작성 siteKey는 발급받은 것 적으면 됨 4. 자바스크립트 메서드 작성(본인은 ajax 처리) $.ajax({ url : '/member/captchaAjax', type : 'post', data : { recaptcha : document.getElementById("g-recaptcha-response").v..
열거형은 사용자 정의 타입이다. 기본형 중에서도 숫자와 관련된 타입(int, long, double, short 등등)을 상속받아 정의할 수 있다. 기본형식은[접근제한자] enum enum명{ 식별자1, 식별자2, 식별자3 .......}처럼 사용 enum Today : byte { Monday, Tuesday, Wednesday } enum Olympians { Zeus, Hera, Poseidon = 10, Athena, Ares = 20, Aphrodite } 다음은 enum을 정의한 것으로Today와 Olympians이다. Today처럼 상속을 받으면 해당 기본형타입을 토대로 사용하며, 상속받는 타입이 없을 경우(Olympians경우)에는 기본적으로 int(System.Int32)를 상속받는다. ..
저장 프로시저는.. 하나 이상의 sql문을 후에 사용하기 편하게 저장해둔 것. mysql 4.x 이하 버전에서는 프로시저를 지원하지 않는다. mysql 5.x 부터 지원.. 저장 프로시저를 사용하는 이유? - 복잡한 작업을 하나의 단위로 묶어 쉽게 사용하기 위해 - 같은 코드를 반복할 필요없이 프로시저를 만들어 놓고 재활용 하기 위해 - 테이블의 칼럼이름이나 로직 등이 변경 되었을 때 저장 프로시저만 변경하면 되므로 사용하는 입장에서는 신경을 쓸 필요가 없다 - 저장 프로시저는 컴파일된 형식으로 저장되기 때문에 DBMS가 명령을 수행하는 작업이 보다 적어지므로 성능의 향상을 기대해 볼 수 있다. 간단한 사용법(사용프로그램 토드 FOR MYSQL) 1 2 3 4 5 6 7 8 9 10CREATE PROCE..
- delegate는 함수(메서드)를 담을 수 있는 타입이다.- 타입이기 때문에 메서드의 매개변수나 리턴타입 같은 곳에도 delegate타입을 선언 할 수 있다.- 델리게이트에 메서드를 여러개 담을 수 있다. 다음은 델리게이트의 사용 예이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 delegate void OperDelegate(int n1, int n2); class Oper { public void Add(int n1, int n2) { Console.WriteLine(n1 + n2); } public void Sub(int n1, int n2) { Console.WriteLine(n1 - n2); } publi..
연산자 오버로딩이란?- 피연산자가 하나 또는 둘 모두가 사용자 정의 클래스거나 구조체 형식일 때 해당 클래스나 구조체 안에 사용자 정의 연산자를 구현할 수 있는 것 예를 들어 코드를 보겠다.class Kilogram { int kg; public int Kg { get { return kg; } } public Kilogram(int kg) { this.kg = kg; } public int Add(Kilogram k) { return this.kg + k.kg; } public static Kilogram operator +(Kilogram k1, Kilogram k2){ return new Kilogram(k1.kg + k2.kg); } } class Program { static void Main(..
Object는 모든 클래스의 최상위 조상이다.c#도 모든 객체지향언어가 그렇듯 단일 상속만을 지원하는데..만약 클래스 A와 클래스 B가 있는데클래스 A는 부모클래스클래스 B는 자식클래스라 하자. c#컴파일러는 컴파일시 아무것도 상속 받고 있지 않는 클래스에 대해 System.Object클래스를 상속한다.클래스 B의 부모는 A클래스이지만 클래스 A의 부모는 아무것도 없기 때문에 결국 컴파일시 class A : Object{ }같이 변한다. 종국에는 상속관계도에 따라Object class - A class - B class와 같이되므로 A와 B 클래스 둘 전부 Object를 최고 조상 클래스로 갖게된다. Object클래스는 참조형식이지만 값형식이 되기도 한다.값형식일 경우는 System.ValueType을 ..
is 와 as 키워드와 비슷한 기능을 하는 것을 JAVA로 말한다면 instanceof키워드를 들 수 있다. is - 참조변수와 인스턴스를 비교해 형변환이 가능하다면 true 형변환이 불가하다면 false를 반환.as - 참조변수와 인스턴스를 비교해 형변환이 가능하다면 해당 인스턴스를 반환 아니라면 null을 반환 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58namespace ObjectApplication { class TestParent { internal..
자바와 같이 c#도 객체지향언어이며, 상속개념이 있다.상속은 부모타입의 멤버들을 자손이 물려받는 것이다.상속받는다를 확장한다라고도 표현할 수 있다. 이유는 부모의 멤버들을 자손이 물려받고 자손은 물려받은 멤버와 함께 자손 자신이 가지고 있는 멤버가 따로 있을 수도 없을 수도 있기 때문에 부모에 비해 항상 자손클래스 멤버의 수는 같거나 더 많기 때문.. 다음은 상속의 예이다. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace InheritApplication { class GasStation { protected int disel; ..