전체 글

전체 글

    servlet 웹 입/출력

    import java.io.IOException; import java.io.PrintWriter; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; public class Nana extends HttpServlet { public void service(HttpServletRequest request , HttpServletResponse response) throws IOException, ServletException { //Out..

    개념 및 설치

    시작하기 앞서 강의는 유튜브에 있는 뉴렉처님의 강의를 보면서 공부했습니다!! Servlet Servlet이란 Server application let으로 알려져 있으며 java 코드 안에 html태그가 삽입되어 있는 구조로 서버에서 클라이언트의 요청을 처리하기 위해 자바로 작성된 프로그램이다. JSP(java server pages) jsp는 servlet기반의 스크립트 기술로서 html 내부에 java코드를 삽입해서 사용한다. serlvet처럼 서버에서 요청을 처리하기 위해서 존재한다. jsp가 servlet을 보완해서 나온 기술이지만 지금에 와서는 servlet+jsp 형태로 학습을 하고 있다고 한다.MVC 패턴에서 jsp는 웹어플리케이션 구조에서 사용자에게 결과를 보여주는 view 층을 담당하고 s..

    Java 예외 처리

    try-catch-finally 블록 try{ } catch(예외클래스 e) { // 예외 처리 } finally { //정상 실행 } (finally 블록은 항상 실행되는 부분이다) 다중 catch 발생하는 예외별로 예외 처리 코드를 다르게 하는 다중 catch 블록을 가질 수 있다. try{ } catch(예외클래스1 e) { // 예외 처리1 } catch(예외클래스1 e) { // 예외 처리2 } 하지만 첫번째 catch에 예외클래스로 Exception을 사용하면 모든 예외가 Exception에 상속되어 있기 때문에 첫번째 줄에 다 catch 되어서 컴파일 오류가 발생하게 된다. throws 키워드 사용 throws 키워드는 메소드에서 처리하지 않은 예외를 호출한 곳으로 넘김으로써 호출한 곳에서 ..

    Java 예외 클래스

    에러와 예외 보통 자바에서 하드웨어로 인한 프로그램의 실행 오류를 에러로 구분하고 프로그램 자체 내에서 발생하는 오류(잘못된 조작, 잘못된 코딩 등 소프트웨어적인 오류)를 예외라고 한다. 자바에서 예외는 크게 일반 예외와 실행 예외로 구분되어진다. 일반 예외(컴파일러 체크 예외) 컴파일러가 예외 처리 코드가 있는지 없는지 체크하여 없으면 개발자가 예외 처리 코드를 작성하도록 한다. # java.lang.Exception을 상속받은 클래스들을 일반 예외라고 부른다. 실행 예외 반대로 실행 예외의 경우엔 컴파일러가 따로 체크를 하지 않는데 그 이유는 언제 실행 예외가 발생할지 알 수 없기 때문이다. # java.lang.RuntimeException을 상속받은 클래스들을 실행 예외라고 부른다. 실행 예외의 ..

    Java 익명 객체

    익명 객체 클래스 이름이 없는 객체를 익명 객체라고 부르고 어떤 클래스를 상속하거나 인터페이스를 구현해야한다. //이름이 있는 객체의 상속 public class Class_Name extends Main_C {} Main_C var = new Class_Name(); //익명 객체의 상속 Main_C var = new Main_C() {}; //괄호 안에는 익명 객체의 내용이 들어감 //이름이 있는 객체의 구현 public class Class_N implements I {} I var = new Class_N(); //익명 객체의 구현 I var = new I() {}; 익명 자식 객체의 사용 - 필드 선언할 때 초기값으로 익명 자식 객체를 생성하여 대입! public class Main { Pare..

    Java 중첩 클래스와 중첩 인터페이스

    중첩 클래스란? 클래스 내부에 선언된 클래스로서 바깥 클래스와 긴밀한 관계를 가지며 바깥 클래스가 없으면 필요없는 클래스이다. 중첩 클래스의 종류는 크게 멤버 클래스와 로컬 클래스로 나눌 수 있다. 멤버 클래스의 경우 클래스의 멤버로서 선언되고 멤버 클래스는 다시 인스턴스와 정적으로 나뉠 수 있다. class Main{ class Sub{} // 인스턴스 static class Sub2{} //정적 } 인스턴스 멤버 클래스의 경우 정적 필드와 메소드는 선언할 수 없고 인스턴스 필드와 메소드만 선언이 가능하다. public class Main{ class Sub{ Sub(){} int cnt; //static 사용 불가 void test(){} //마찬가지로 static 사용 불가 } } public cl..

    Java 타입 변환과 다형성

    인터페이스의 다형성 인터페이스는 동일한 인터페이스로 구현 객체를 교체해서 다양한 프로그램 실행 결과를 얻을 수 있다. 자동 타입 변환 구현 객체와 그 구현 객체의 자식 객체는 인터페이스 타입으로 알아서 자동 타입 변환이 된다. Interface_Name var = new Test(); // Test의 자식 객체도 구현 객체처럼 사용할 수 있음. 강제 타입 변환 보통 구현 객체가 인터페이스 타입으로 자동 변환 되면 인터페이스에 있는 메소드만 사용이 가능한데 구현 객체에서만 선언된 필드나 메소드를 사용할 필요가 있을 경우엔 강제 타입 변환이 필요하다. interface Vehicle{ void run(){} } class Bus implements Vehicle{ void run(){} void only()..

    Java 인터페이스

    인터페이스 객체의 사용 방법을 정의한 타입으로서 다양한 객체를 동일한 사용 방법으로 이용할 수 있다. 즉, 인터페이스를 이용하면 개발 코드를 바꾸지 않고서 다양한 객체를 사용할 수 있다. 인터페이스 사용은 interface 인터페이스이름{ //상수 타입 상수이름 = 값; // 추상 메소드 타입 메소드이름(매개변수); } 상수 필드 선언 상수 필드에는 데이터를 저장할 인스턴스나 정적 필드가 올 수 없다. 따라서 처음 값을 지정해줘야한다. [public static final] 타입 상수이름 = 값; //앞에 부분은 상수필드이기 때문에 생략이 가능 추상 메소드 선언 추상 메소드도 마찬가지로 앞에 public abstract를 앞에 생략 가능하며 인터페이스의 메소드 호출은 객체에서 메소드에서 실행된다. 구현 ..

    Java 추상클래스

    추상클래스 여러 클래스의 공통된 특성(필드나 메소드)를 추출해서 선언한 것을 추상 클래스라고 한다 보통 추상클래스와 실체 클래스는 부모 자식 관계를 가진다. 즉, 실체 클래스(자식)는 추상 클래스(부모)와 상속 관계를 갖게 된다. 추상 클래스 선언 추상 클래스 선언할 때는 abstract 키워드를 이용한다. 그 이유는 상속을 통해 자식 클래스만 만들 수 있게 하기 위해서이다.(즉, 부모로서의 역할만 수행하도록 함) public abstract class 클래스명 { //필드 선언 부분 //생성자 선언 부분 //메소드 선언 부분 } 추상 클래스는 부모로서의 역할만 하기 때문에 new 키워드로 객체를 생성할 수 없으나(직접 객체 생성이 불가능) 그러나 자식 객체가 생성될 때 객체화 된다.(자식 생성자에서 s..

    Java 타입 변환과 다형성

    타입 변환 기본 타입과 마찬가지로 클래스에도 타입 변환이 존재! 프로그램 실행 도중 자동으로 타입 변환이 일어나는 것을 자동 타입 변환이라고 하고 형식은 부모타입 변수 = 자식타입; 로 나타낼 수 있다. Sub test = new Sub(); Main test1 = test; 자동 타입 변환은 굳이 바로 위의 부모가 아니더라도 상속 계층에서 상위 타입인 경우에도 일어날 수 있다. 그리고, 부모 타입으로 자동 변환된 이후에는 부모 클래스에 선언된 필드 및 메소드만 접근이 가능! 하지만 자식 클래스에서 메소드가 재정의 되었을 경우엔 자식 클래스의 메소드가 대신 호출된다 public class Main { public void test1() {} public void test2() {System.out.pri..