본문 바로가기
728x90

👨‍🏫Study/JAVA59

[JAVA] Servlet(서블릿), JSP(Java Server Page) Servlet(서블릿) 서블릿을 한 줄로 정의하자면 아래와 같다. 클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍기술 쉽게 말하면, 서블릿이란 자바를 사용하여 웹을 만들기 위해 필요한 기술이다. 추가적으로 설명하면 클라이언트가 어떠한 요청을 하면 그에 대한 결과를 다신 전송해주어야 하는데, 이러한 역할을 하는 자바 프로그램이다. 예를 들어, 어떠한 사용자가 로그인을 하려고 할 때, 사용자는 아이디와 비밀번호를 입력하고, 로그인 버튼을 누른다. 그때 서버는 클라이언트의 아이디와 비밀번호를 확인하고, 다음 페이지를 띄워주어야 하는데, 이러한 역할을 수행하는 것이 바로 서블릿(Servlet)이다. 그래서 서블릿은 자바로 구현된 CGI*라고 흔히 말.. 2022. 4. 14.
[JAVA] Java EE Java EE (Enterprise Edition) Java EE 플랫폼은 Java SE 플랫폼을 기반으로 그 위에 탑재된다. 웹 프로그래밍에 필요한 기능을 다수 포함 JSP, Servlet, JDBC, JNDI, JTA, EJB 등 대규모, 다계층, 확장성, 신뢰성, 보안 네트워킹 API, 환경 등을 제공 *Java EE 기술 중에서 서블릿, JSP는 웹을 기반으로 한 클라이언트/서버 기술을 정의한다. 자바로 웹 어플리케이션을 개발한다는 것은 서블릿, JSP 기술을 사용하여 어플리케이션을 개발하는 것을 의미한다. Java SE (Standard Edition) 가장 대중적인 자바 플랫폼 흔히 자바 언어라고하는 대부분의 패키지가 포함된 에디션 java.lang.*, java.util.*, java.awt.. 2022. 4. 11.
[JAVA] 19. NIO 기반 입출력 및 네트워킹(6) ​3. TCP 비동기 채널 NIO는 TCP비동기 채널로 AsynchronousServerSocket과 AsynchronousSocketChannel를 제공한다. 비동기 채널의 특징 connect(), accept(), read(), write()를 호출하면 즉시 리턴한다. 이점은 넌블로킹 방식과 동일하나, 차이점은 이 메소드들을 호출하면 스레드풀에게 작업 처리를 요청하고 이 메소드들은 즉시 리턴된다. 실질적인 작업 처리는 스레드풀의 작업 스레드가 담당한다. 작업 스레드가 작업을 완료하게 되면 콜백(callback) 메소드가 자동 호출되기 때문에 작업 완료 후 실행해야 할 코드가 있다면 콜백 메소드에 작성하면 된다. 비동기 처리 방식 비동기 채널 그룹 비동기 채널 그룹이란 스레드풀을 공유하는 비동기 채널들.. 2022. 4. 6.
[JAVA] 19. NIO 기반 입출력 및 네트워킹(5) ​​2. TCP 넌블로킹 채널 넌블로킹 방식의 특징 자바는 블로킹 방식으로 인한 스레드 증가의 해결책으로 스레드 풀을 사용하였고, 다른 해결책으로 넌블로킹 방식을 지원하고 있다. 넌블로킹 방식은 connect(), accept(), read(), write() 메소드에서 블로킹이 없다. 블로킹되지 않고 바로 리턴하기 때문에 while를 통해서 계속적으로 connect(), accept(), read(), write() 메소드 실행하고 있어야함 그러나 이러한 방법은 CPU를 과도하게 소비하는 문제점이 있다. 이를 해결하기 위해 넌블로킹은 이벤트 리스너 역할을 하는 셀렉터(Selector)를 사용한다.(변화가 생기면 감지한다) 넌블로킹 채널에 Selector를 등록해 놓으면 클라이언트의 연결 요청이 들어오거.. 2022. 4. 6.
[JAVA] 19. NIO 기반 입출력 및 네트워킹(4) 1. TCP 블로킹 채널 NIO에서 TCP 네트워크 통신을 위해 사용하는 채널 : java.nio.channels.ServerSocketChannel과 java.nio.channels.SocketChannel ServerSocketChannel과 SocketChannel은 블로킹과 넌블로킹 방식을 모두 지원. 사용 방법은 IO와 큰 차이점이 없다. TCP 블로킹 채널의 서버소켓 채널 생성과 연결 수락 서버를 개발하려면 ServerSocketChannel 객체를 얻어야 한다. ServerSocketChannel 생성 방법 ServerSocketChannel serverSocketChannel = ServerSocketChannel.open(); // ServerSocketChannel 객체 생성 serve.. 2022. 4. 6.
[JAVA] 19. NIO 기반 입출력 및 네트워킹(3) 1. 파일 채널 java.nio.channels.FileChannel을 이용하면 파일 읽기와 쓰기를 할 수 있다. FileChannel은 동기화 처리가 되어 있기 때문에 멀티 스레드 환경에서 안전하다. FileChannel 생성과 닫기 FileChannel은 정적 메소드인 open()을 호출해서 채널을 열거나, IO의 FileInputStream,FileOutputStream의 getChannel()메소드 호출 FileChannel fileChannel = FileChannal.open(Path path, OpenOption ... options); FileChannel의 open()메소드의 첫번째 매개값 : Path객체로 생성된 파일의 경로 FileChannel의 open()메소드의 두번째 매개값 : .. 2022. 4. 6.
[JAVA] 19. NIO 기반 입출력 및 네트워킹(2) 1.버퍼 NIO에서는 데이터를 입출력하기 위해서 항상 버퍼를 사용한다. 버퍼는 읽고 쓰기가 가능한 메모리 배열이다. Buffer 종류 Buffer는 저장되는 데이터 타입에 따라 분류될 수 있고, 어떤 메모리를 사용하느냐에 따라서 다이렉트(Direct)와 넌다이렉트(NonDirect)로 분류 할 수 있다. 데이터 타입에 따른 버퍼 NIO버퍼는 저장되는 데이터 타입에 따라서 별도의 클래스로 제공 버퍼 클래스들은 Buffer 추상 클래스를 모두 상속 버퍼 클래스의 이름을 보면 어떤 데이터가 저장되는 버퍼 인지 쉽게 알 수 있다. MappedByteBuffer는 ByteBuffer의 하위 클래스로 파일의 내용에 랜던하게 접하기 위해서 파일의 내용을 메모리와 맵핑 시킨 버퍼 넌다이렉트 다이렉트 버퍼 버퍼가 사용하.. 2022. 4. 6.
[JAVA] 19. NIO 기반 입출력 및 네트워킹(1) 자바 4부터 새로운 입출력(NIO: Input/Output)이라는 뜻에서 java,nio 패키지가 포함되었는데, 자바 7로 버전업하면서 자바 IO와 NIO 사이의 일관성 없는 클래스 설계를 바로 잡고, 비동기 채널 등의 네트워크 지원을 대폭 강화한 NIO.2 API가 추가되었다. NIO.2는 java,nio2 패키지로 제공되지 않고 기존 java.nio의 하위 패키지(java.nio.channels, java.nio.charset, java.nio.file)에 통합되어 있다. NIO 패키지 포함되어 있는 내용 java.nio 다양한 버퍼 클래스 java.nio.channels 파일 채널, TCP 채널, UDP 채널 등의 클래스 java.nio.channels.spi java.nio.channels 패키지.. 2022. 4. 6.
[JAVA] 인텔리제이 오류 해결 인텔리제이를 통해 프로젝트를 실행시키려고 할 때 발생하는 오류 오류명 : "java: warning: source release 8 requires target release 1.8" 해결방법 File > Project Structure... > Project 위와 같이 SDK와 Language level 설정을 바꾸고 Apply해주면 해결된다. 더불어 Language level의 설정은 인식되지 않는 람다식 인식을 가능하게 해준다. 2022. 4. 1.
728x90