Request와 model은 같은 컨트롤러 메서드의 매개변수로 사용되어 웹 요청에 대한 정보를 전달하는 역할을 하지만 두 개매변수의 역할에는 차이가 있다. HttpServletRequest request Model model HTTP 요청에 대한 정보를 담고있는 객체 이 객체를 사용해 HTTP 요청에 대한 정보 HTTP 메소드(get , post 등), 요청 URI , 요청 매개변수를 직접 얻을 수 있다. 대신 이러한 정보를 직접 추출하려면 코드가 길어지고 복잡해지게 된다. 뷰에 데이터를 전달하기 위한 객체 컨트롤러 메소드에서 Model 객체를 사용하면 뷰에서 표시할 데이터를 추가하거나 수정할 수 있다. 이를 통해 컨트롤러와 뷰 간에 데이터 전달을 간편하게 처리할 수 있다. 즉 , HttpServletR..
서버를 구축했다면 이제 컨트롤러 클래스를 만들어줘야 한다. @Controller로 어노테이션 기능으로 추가하고 @GetMapping ( / ) 중에 ( / )는 주소인데 주소값이 없으니 가장 디폴트로 실행된다. 내용은 String 타입을 리턴하고 , 메소드명은 index , 실행하면 String 값 "index"를 리턴한다. IntelliJ에서는 리턴한 값 내용을 찾아서 그 내용을 가진 jsp를 실행하게 된다. 버튼 1 , 2번은 onclick 이벤트로 누르면 각각 fun1() , fun2() 함수를 실행한다. a 태그로 각각 hello3 , hello4 , hello5 링크를 만들었다. fun1() 함수는 누르면 hello1이라는 jsp파일을 찾아가서 실행한다. index.jsp로 돌아가기 다시 ind..
1. Error code 문제가 발생할 때마다 정리해 두어서 같은 오류가 생겼을 때 신속하게 처리할 목적으로 작성한다. 2. Http Status Code 클라이언트 요청에 대해 서버에서 주는 응답 코드 200 ~ 299 code = 성공 응답 ( Successful response ) 400 ~ 499 code = Client error response 500 ~ 599 code = Server error response 3. 각종 오류 200 ( OK ) 성공했을 때 200번대가 뜨니 상관없는 에러다. 400 ( Bad Request ) 클라이언트에서 보낸 파라미터 이름과 컨트롤러에서 받으려고 하는 파라미터의 이름이 불일치하거나 없는 경우 404 ( Not Found ) servlet-context...
IntelliJ IDEA는 매우 많은 단축키가 있는데 이런 단축키를 배우고 연습하면 작업 흐름을 원활하게 유지할 수 있을 것 같다. 1. Alt + Enter 코드에서 오류가 발견될 경우 해당 오류에 Alt + Enter를 사용하면 문제에 대한 수정 제안 목록이 표시된다. 경고와 제안이 표시된 곳에서도 Alt + Enter 를 사용할 수 있고 , 그 제안중 하나를 수락할 수도 있다. 오류, 경고와 제안이 없는 코드에서도 Alt + Enter를 사용할 수 있다. Alt + Enter 를 누르면 오류가 없어도 추천 제안을 해준다. 2. F2 에디터에서 오류와 경고 사이를 이동할 때 F2를 이용하면 다음 오류, 경고, 제안으로 점프할 수 있다. 이것과 Alt + Enter를 적극 사용한다면 모든 제안을 표시하..
1. IntelliJ란 Java 진영의 개발툴(IDE)에는 대표적으로 3가지가 있다. 이클립스 재단의 Eclipse JetBrains 사의 IntelliJ IDEA 썬 마이크로시스템에서 개발한 NetBeans 이클립스는 대부분 Plugins 형태로 많이 사용하고 있지만 IntelliJ는 IDE의 장점과 Visual Studio의 장점을 잘 섞어놓은 IDE라고 할 수 있다. 2. Eclipse가 있는데 IntelliJ를 사용하는 이유 1. 상당한 IDE의 안정성 이클립스를 사용하다보면 프로그램이 무겁고 플러그인 설치 충돌이 얼어나서 호환성에 문제가 생길 수도 있지만 IntelliJ를 사용하면 그런일은 매우 적다. 2. Java 개발 퍼포먼스 상승 IntelliJ에서는 편하게 VIsual Studio처럼 단..
인터페이스 ( interface ) 란 ? 공통 메소드를 추상화한 클래스 1 . 추상메소드 ( abstract method ) - 실행 블록은 정의되어 있지 않고 리턴타입 , 이름 , 매개 변수만 정의 인터페이스를 선언할 때에는 public interface Interface1 { } interface라는 용어를 써서 선언을 한다. public interface BoardRepository { public boolean save(BoardDTO boardDTO); } 메소드에 save에는 실행블록이 없다. 이러면 실제 동작은 구현 클래스 ( implements class ) 에서 하게 된다. 2. 구현 클래스 ( implements class ) 인터페이스에서 정의한 추상메소드에 대한 실행 블록을 정의한..
1 . hashcode , equals란 ? hashCode와 equals 메소드는 자바의 모든 클래스들의 부모 클래스인 Object 클래스에 정의되어 있기 때문에 메소드를 상속받고 있다. 그러므로 hashcode와 equals 메소드를 재정의 할 수 있다. equals()에 대해 equals() 메소드의 리턴타입은 boolean 이고 , 기본적으로 2개의 객체가 동일한지 검사하기 위해 사용된다. 2개의 객체가 참조하는것이 동일한지를 확인하는 것이며 , 이는 동일성(Identity)을 비교하는 것이다. 즉, 2개의 객체가 가리키는 곳이 동일한 메모리 주소일 경우에만 동일한 객체가 된다. 하지만 동일한 객체가 메모리 상에 여러개 띄워져있을 경우 해당 객체는 서로 다른 메모리에 띄워져 있을경우 동일한 객체가..
자바 다형성이란 ? 자바 다형성(polymorphism)은 객체지향언어의 특징 중 하나다. 1. 다형성이란 ? 다형성이란 하나의 객체나 메소드가 여러가지 다른 형태를 가질 수 있는 것이다. 자바에서 다형성을 나타내는 것으로는 , 오버라이딩과 오버로딩 그리고 상속받은 객체의 참조변수 형변환 등이 있다. 2. 형변환(Casting) 및 사용예제 상속받는 객체에 대해서 형변환이 의미하는 것은 객체에 속한 멤버들에 대한 사용범위가 달라진다는 것을 의미한다. - 업캐스팅(upcasting) (자식 클래스의 인스턴스에 대한) 자식클래스의 타입의 레퍼런스 변수를 부모클래스 타입으로 형변환 하는것 ( 타입변환 구문 생략 가능 , 자동 형변환됨 ) - 다운캐스팅(downcasting) (자식 클래스의 인스턴스에 대한) ..
기본형(primitive type) 변수 - boolean - char - byte - short - int - long - float - double 기본형 변수의 특징 - 산술 연산이 가능하다. - null로 초기화 할 수 없다. 참조형(reference type) 변수 - 기본형 8가지를 제외한 나머지 타입 참조형 변수를 선언할 때는 변수의 타입으로 클래스의 이름을 사용하므로 클래스의 이름이 참조형 변수의 타입이 된다. 따라서 새로운 클래스를 작성하는 것은 새로운 참조형 변수를 추가한다고 봐도 무방하다. Student student = new Student(); Student 클래스 타입의 참조형 변수 student를 선언했다. 참조형 변수는 null 또는 주소를 값으로 갖는다. 연산자 new의 결..