JSP 를 실행하는데 계속 아래와 같은 에러 메세지가 나타나서 6시간동안 삽질 후에 찾아낸 것과 알아낸 것을 공유 드립니다. (미래의 나에게 주는 힌트 ㅎ,.ㅎ) 여기서 핵심은 자신이 어떤 환경에서 개발중이며, 어떤 버젼을 사용하고 있는지 확실하게 파악하는 것입니다. 결과만 얘기하자면 아래와 같습니다.Jakarta EE 의 버젼과 Tomcat 버젼을 확인한다.jakarta servlet 을 사용할거면 glassfish 에서 제공하는 녀석을 추가한 후에 dependancy 에서 버젼만 바꿔주면 된다. 필자는 (24.05.13 기준)Mac, IntelliJ IDEA Ultimate 2024.1.1 버젼을 사용하고 있으며, JSP 환경은 Jarkarta EE 9.1 를 사용중이며 배포는 Tomcat 9.0...
예외(Exception) 이란 ?프로그램 실행 중에 발생할 수 있는 문제를 나타내는 것으로, 일반적으로 예상하지 못한 상황이나 오류 상황을 의미한다. 예외 처리는 이러한 예외 상황이 발생했을 때 프로그램이 비정상적으로 종료되는 것을 방지하고, 예외 상황을 안전하게 처리하여 프로그램의 정상적인 흐름을 유지할 수 있도록 하는 중요한 기능이다.Exception(예외) 과 Error(오류) 의 차이점 예외 처리에 대해 공부하기 전에 프로그램 오류에 관해 먼저 알아야 한다. Exception (예외) 와 Error (오류) 는 모두 Throwable 클래스를 상속 받고 있지만, 용도와 사용 방법에는 아주 큰 차이가 있다. Exception 은 프로그램 코드에 의해 일반적인 흐름을 방해할 수 있지만, 적절히 처리를..
내부클래스(Inner class)란?내부 클래스(Inner class)란 하나의 클래스 내부에 선언된 또 다른 클래스를 뜻한다. 대게 보통은 클래스 자료형이 필요하면 메인 클래스 외부에 선언하거나, 따로 독립적인 클래스 파일을 만들어 불러와 사용한다. 내부 클래스는 말 그대로 클래스 내에 선언되어 사용되며, 내부에 정의된다는 점을 제외하고는 일반적인 클래스와 다를바가 없다!! 내부 클래스는 중첩(nested) 클래스로 분류 되기도 한다. 아래 왼쪽의 A와 B 두 개의 독립적인 클래스를 오른쪽과 같이 바꾸면 B는 A의 내부 클래스(Inner class)가 되고 A는 B를 감싸고 있는 외부 클래스(Outer class)가 된다.내부클래스의 사용 목적과 장점내부 클래스는 두 클래스가 서로 긴밀한 관계가 있거나..
인터페이스(Interface)란 ?자바에서 인터페이스(Interface) 는 해야 할 작업의 구체적인 구현 없이 기능만을 선언한 클래스이다. 즉, 자바의 인터페이스는 하위 클래스가 수행해야 하는 메소드와 필요한 상수만을 미리 추상적으로 정의해 놓은 클래스이다. 자바의 일반 클래스는 다중상속을 지원하지 않는다. 그러나 인터페이스의 경우 추상 클래스보다 더 추상적인 클래스로 여러 인터페이스를 상속받는 다중 상속을 지원한다!!인터페이스와 구현 클래스 선언앞에서 말했듯이 인터페이스는 '.java' 형태의 소스 파일로 작성되고 '.class' 형태로 컴파일 되기 때문에 물리적 형태는 클래스와 동일하다. 인터페이스의 구현에서는 class 대신 키워드 interface를 사용하며, 구현 없이 기능만 정의되는 메소드는..
추상화(Abstract) 란 ? 사전적 의미로 추상(abstract) 은 실체 간에 공통되는 특성을 추출한 것을 말한다. 객체를 생성할 수 있는 클래스를 실체 클래스라고 한다면, 이 클래스들의 공통적인 필드나 메소드를 추출해서 선언한 클래스를 추상 클래스라 한다. 구체적인 개념으로부터 공통된 부분들만 추려내 일반화 할 수 있도록 하는 것을 의미한다. 즉, 일반적으로 사용 할 수 있는 단계가 아닌 미완성적 개념이다. 추상 클래스는 추상 메서드를 포함 할 수 있으며, 추상 클래스는 직접적으로 객체를 생성할 수 없고, 상속을 통한 하위 클래스에서 추상 메서드를 구현하여 사용된다. 예를 들어 Bird, Fish, Mammal 과 같은 실체 클래스에서 공통되는 필드와 메소드를 따로 선언한 Animal 클래스를 만..
다형성이란?다형성이란 하나의 객체가 여러가지 타입을 가질 수 있는 것을 의미한다. 즉, 부모 클래스 타입의 참조 변수로 자식 클래스의 객체를 참조할 수 있도록 허용하여 부모 클래스의 동일한 메시지로 자식 클래스들이 서로 다른 동작을 할 수 있도록 한다. 다형성의 장점재사용성 (Reusability)상속관계에 있는 클래스들은 공통된 부분을 부모 클래스에 정의하고, 자식 클래스에서는 부모 클래스를 확장하여 필요한 추가 기능 구현이 가능하다. 따라서 불필요한 코드를 줄이고 재사용성을 높일 수 있다.유연성 및 확장성 (Flexibility & Scalability)프로그램 내에서 객체의 타입을 쉽게 변경할 수 있기 때문에, 코드를 수정하지 않고도 새로운 클래스 타입의 객체를 쉽게 추가하거나 변경할 수 있다. 따..
오버로딩(Overloading)이란 ? Overloding 의 사전적 의미는 '과적하다' 이다. 메서드도 같은 클래스 내에서 서로 구별될 수 있어야 하기 때문에 각기 다른 이름을 가져야 한다. 그러나 자바에서는 한 클래스 내에 이미 사용하려는 이름에 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메서드를 정의할 수 있는 아주 재미있는 기능을 제공한다. 오버로딩의 조건 메서드 이름이 같아야 하고, 매개변수의 개수 또는 타입이 달라야 한다 ! //[ex01] int add(int a, int b) return a + b; int add(int x, int y) return x + y; //[ex02] int add(int a, int b) return a + b; long add(int a, i..