본문 바로가기

개발 관련 지식/JAVA37

Servlet 서블릿은 URL 요청을 처리하는 프로그램 이라고 생각하면 된다. 웹 애플리케이션 서버를 직접 구현할 경우 1. TCP/IP 연결 대기, 소켓 연결 2. HTTP 요청 메시지 텍스트를 파싱해줘야하고 읽는다. 3. POST 방식인지, 어떤 URL인지 파악해줘야한다. 4. Content-type을 확인한다. 5. Content-type에 따라서 HTTP Body의 내용을 사용할 수 있도록 파싱한다. 6. URL에 따라서 프로세스를 실행한다. ex) /save 라면 저장 프로세스를 실행 7. 비즈니스 로직을 실행. 데이터베이스에 데이터에 대한 요청을 실행해준다. 8. 실행한 비즈니스 로직의 결과를 HTTP 응답 메시지로 생성해준다. 9. TCP/IP에 응답 메시지를 전달하고, 소켓을 종료해준다. 근데 서블릿을 .. 2020. 6. 14.
Java 환경변수 설정이 필요한 이유 운영체제는 하드웨어를 사용할 수 있게 해주는 프로그램이다. 운영체제가 아닌 프로그램(어플리케이션)도 운영체제를 거쳐 결국 하드웨어를 통해 동작하게 되는 것인데, 운영체제가 없으면 하드웨어를 사용할 수 없으니 어플리케이션도 사용이 불가능해지는 것이다. 환경 변수를 설정하는 것은 운영체제가 컴퓨터의 어떤 경로에서든지 파일을 인식하도록 하는 것이다. 즉 자바 환경 변수를 등록하는 것은 컴퓨터의 어떤 경로에서든 운영체제가 자바를 인식하도록 하는 것이다. 근데 환경 변수를 설정할 때 jdk의 bin 디렉토리 경로까지 등록한다. 그 이유는 bin에 실행파일이 있기 때문이다. 어떤 특정 프로그램을 정상적으로 실행시키려면 많은 파일들이 필요할텐데, 그 많은 파일들이 적용된 프로그램을 실행시키는 파일은 한개이다. 자바에.. 2020. 6. 14.
익명 객체 익명 객체는 이름이 없는 객체를 말한다. 익명 객체는 단독으로 생성할 수 없다. 클래스를 상속하거나 인터페이스를 구현해야만 생성할 수 있다. 익명 객체는 필드의 초기값이나 로컬변수의 초기값, 매개 변수의 매개값으로 주로 대입된다. 익명 자식 객체 생성 우선 부모 클래스를 자식 클래스에 상속하고 선언한 후, new 연산자를 이용해서 자식 객체를 생성해서 필드나 로컬 변수에 대입하는 것이 기본이다. class Child extends Parent { } class A { Parent p = new Child(); void method() { Parent localVar = new Child(); } } 하지만 자식 클래스가 재사용되지 않고, 오로지 해당 필드와 변수의 초기값으로만 사용할 경우라면 익명 자식 .. 2020. 4. 8.
정적 멤버와 static static은 '고정된' 이라는 의미를 갖고 있다. 정적 멤버는 클래스에 고정된 필드와 메소드를 의미한다. 정적 멤버는 객체에 소속된 멤버가 아니라 클래스에 소속된 멤버이기 때문에 객체를 생성하지 않고 클래스를 통해서 호출한다. 정적 멤버는 static을 붙여주면 된다. 인스턴스 멤버로 사용할 것인지 정적 멤버로 사용할 것인지. 판단 기준은 객체 마다 가지고 있어야 할 데이터라면 인스턴스 멤버로, 객체 마다 가지고 있을 필요가 없으면 정적 멤버로 선언하는 것이 좋다. 즉, 변하지 않는 공용적인 데이터는 정적 멤버로 선언하는 것이 좋다. 근데 정적 멤버를 객체를 생성해서 객체 참조 변수로 호출하는 것도 가능하긴 하다. 다만 경고 표시가 나타난다. // Calculator.java public class C.. 2020. 4. 8.
인스턴스 멤버와 this 인스턴스 멤버란 객체를 생성한 후 사용할 수 있는 필드와 메소드. 즉, 객체 없이는 사용할 수 없는 필드와 메소드가 인스턴스 멤버 클래스 내부(객체 내부)에서 인스턴스 멤버에 접근하기 위해서 this를 사용할 수 있다. 주로 생성자나 메소드의 매개변수 이름이 필드와 같을 때 this을 사용해서 객체 내부의 필드임을 명시한다. public class Car { // 필드 String model; int speed; // 생성자 Car(String model) { this.model = model; } // 메소드 void setSpeed(int speed) { this.speed = speed; } void run() { for(int i = 0 ; i 2020. 4. 8.
람다식 메소드 참조 메소드를 참조해서 매개 변수의 정보 및 리턴 타입을 알아내어, 람다식에서 불필요한 매개 변수를 제거하는 것이 목적이다. (left, right) -> Math.max(left, right); // 를 매개변수를 제거해서 참조하는 것으로 바꾸면 Math :: max; // 로 바꿀 수 있다. 정적 메소드 참조 클래스 이름 :: 메소드 Class :: method; 인스턴스 메소드 참조 먼저 객체를 생성하고, 객체를 참조하는 변수 :: 메소드 Class class = new Class(); class :: method; 정적 메소드와 인스턴스 메소드 참조 예시 // Calculator.java public class Calculator { public static int staticM(int x, int y.. 2020. 4. 7.