BackEnd/Java

· BackEnd/Java
서블릿의 동작 원리 클라이언트 요청 -> Apache Tomcat 서버(WEB + WAS) -> 서블릿 컨테이너 -> 서블릿 객체 -> service() 호출 -> doGet() 또는 doPost() 호출 -> 서블릿 컨테이너 -> Apache Tomcat 서버 -> 클라이언트 응답 서블릿 컨테이너, Servlet Container 서블릿 처리(동작) 환경을 구축하는 역할 서블릿을 생성하고 실행시켜주는 역할을 수행한다. WAS서버와 서블릿 객체 사이의 중간다리 역할을 수행한다. HttpServletRequest(HTTP 요청객체), HttpServletResponse(HTTP 응답객체) 두 가지를 생성하여 서블릿에 전달한다. 요청 URL-Pattern과 서블릿 객체를 1:1로 따로 매핑해놓고 요청을 기다..
· BackEnd/Java
서블릿, Servlet Servlet = Server + Applet 즉, 서버에서 동작하는 애플릿 프로그램이다. 애플릿이란? 위키피디아 자바언어로 개발되어 바이트코드 형태로 배포되는 '실행 가능 형태'의 프로그램 JVM만 존재한다면 애플릿 프로그램을 실행할 수 있다. 주로 JVM이 포함된 웹서버(톰캣), 애플릿 실행기등에서 동작한다. 플러그인 형태로 JVM을 포함하고 있는 브라우저에서도 동작 가능 실행 가능 형태의 프로그램으로 배포되어 악성코드에 노출 될 이용자들을 위해 실행가능 형태의 프로그램 배포를 중단하고 서버에 올려서 사용하게 되었다, 서버와 Applet 의 합성어가 Servlet 이다. 웹 어플리케이션을 개발하기 위한 자바의 기술(Spec) 서블릿 스펙 (Servlet Spec)..
· BackEnd/Java
MVC 패턴 프로그램을 세가지 파트(역할)로 구분하여 개발하는 방법론 MODEL 2 기반의 MVC패턴을 적용한다 Model, View, Controller 의 약자 Model 데이터베이스(저장소)의 데이터를 처리하는 파트 데이터베이스(저장소)의 데이터를 관리 DAO, DTO 가 Model 에 해당한다. View 사용자가 보는 화면을 구성하는 파트 프레젠테이션 로직 Controller 사용자의 입력처리, 프로그램 흐름제어, 사용자와의 상호작용 비지니스 로직 웹 프로그래밍에서는 Controller의 역할을 나누어 Service Layer를 둔다. Service 계층은 비지니스 로직의 일부 Controller 의 역할 사용자의 입력 처리 데이터베이스 데이터 처리(가공)하기 도메인(Domain) 객체를 처리하는..
· BackEnd/Java
Execute 메소드의 종류 매개변수로 전달받은 SQL 구문을 수행하는 메소드 ResultSet executeQuery(String sql); SELECT Query 결과를 ResultSet 으로 반환, ResultSet에는 조회된 모든 행을 담고 있다. ResultSet객체.next() 호출할 때마다 결과집합의 각 행을 나타낸다. int executeUpdate(String sql); 영향받은 행의 수를 int형으로 반환 주로 INSERT, UPDATE, DELETE를 수행할 때 사용한다. boolean execute(String sql); 반환 값 : true, false true - ResultSet 객체를 반환하는 쿼리를 수행했을 때(SELECT) false - ResultSet 객체를 반환하지 ..
· BackEnd/Java
DAO, Data Access Object 데이터베이스의 데이터에 접근하기 위해 작성되는 객체 데이터베이스에 수행할 SQL 구문 하나를 하나의 메소드로 구현한다. Interface 와 Class 로 나눠 작성하는것이 좋다. interface에서 구현된 메소드들의 목록을 간편히 확인할 수 있다. interface에 메소드마다 주석을 작성해놓는 것이 좋다 전체적인 개요를 한눈에 볼 수 있다. class에는 실제 구현 코드를 작성한다. interface는 개발하는 시점에 메소드 형식에 대한 가이드가 된다.
· BackEnd/Java
DTO, Data Transmission Object 데이터 전송 객체 계층(Layer) 간 데이터 교환을 위해 작성되는 자바 클래스 DTO 작성 규칙 멤버 필드는 모두 Private 접근 제한자를 적용한다. 메소드는 getter, setter, toString 만 작성한다. 추가적인 일반메소드는 작성하지 않는다. 데이터 이외의 추가 기능을 넣지않고 데이터에만 집중한다. 클래스명을 데이터베이스의 테이블명으로 하는것이 좋다. 클래스의 필드명은 데이터베이스의 컬럼명으로 작성하는 것이 좋다. DTO 와 유사한 VO, Value Object 데이터를 저장하기 위해 작성되는 자바 클래스 VO와 DTO는 거의 동일하지만 큰 차이점은 VO는 데이터를 저장하기 위한 객체, DTO는 데이터 교환을 위한 객체라고 생각하면..
· BackEnd/Java
네트워크 관련 클래스 InetAddress class IP 정보 관리 클래스 생성자 없음 직접 객체생성 불가능 정적 메소드를 이용하여 정보를 얻어와야 한다. Localhost 가상 루프백(loopback) 호스트 루프백 호스트네임 : localhost 루프백 IP : 127.0.0.x 네트워크 상에서 자기가 자기 자신을 나타낼 때 사용하는 주소 URL class URL 정보를 관리하는 클래스 Uniform Resource Locator 인터넷 상 정보(자원, Resource)가 어디있는지 표현하는 방법 인터넷에 존재하는 자원에 접근할 수 있는 주소로 사용된다. URL 형식 프로토콜://인터넷주소:포트번호/디렉토리/파일이름/쿼리스트링/참조 프로토콜 : 자원에 접근하기 위해 사용된 통신규약 인터넷주소 : 자..
· BackEnd/Java
직렬화, Serialization 크기가 큰 데이터를 바이트단위로 잘게 나누어서 스트림을 통과할 수 있도록 만드는 것 데이터들을 순서에 맞게 바이트단위로 일렬로 나열하는 것과 비슷 writeObject 역직렬화, Deserialization 바이트단위로 잘게 나누어져 스트림을 통과한 데이터를 원본의 형식으로 다시 합치는 것 readObject
· BackEnd/Java
스트림의 종류 바이트 스트림 문자 스트림 InputStream Reader OutputStream Writer FileInputStream FileReader FileOutPutStream FileWriter BufferedInputStream BufferedReader BufferedOutputStream BufferedWriter 바이트스트림만 존재 DataInputStream DataOutputStream ObjectInputStream ObjectOutputStream 바이트 스트림을 문자 스트림으로 변환 해주는 클래스 InputStreamReader OutputStreamWriter 문자 출력 스트림 PrintWriter
· BackEnd/Java
보조 스트림, FilterStream 입출력스트림의 기능을 강화하는 보조 스트림 2차 스트림 BufferedStream 클래스 내부에 버퍼를 가지고 있는 보조스트림 입출력장치와 프로그램 사이의 입출력횟수를 줄여 성능 향상(속도)을 유도한다. 기본적으로 사용되는 보조스트림 스트림을 다룰 때 거의 항상 사용한다. DataStream 자바의 기본자료형 형식을 유지하면서 입출력한다. 자료형에 맞는 입출력 메소드가 추가되어있다. readBoolean, writeBoolean, readInt, writeInt, ... 등 출력할 결과를 사람이 알아보기는 힘들다. ObjectStream 객체 단위로 입출력할 수 있도록 기능을 제공한다. DataInput / DataOutput interface를 구현하고 있다. Da..
· BackEnd/Java
Computer Input -----> Program 문제를 야기할 수 있다. 이걸 많이 쓴다 ↓↓ public void write(byte[] b, int offset, int len) throws IOException 출력스트림으로 b배열의 off인덱스부터 len만큼 출력한다.
· BackEnd/Java
파일 정보를 다루는 클래스 입출력대상으로 사용할 수 있다. File file = new File("파일의 경로", "파일의 이름"); 절대경로와 상대 경로 절대 경로 : 루트 디렉토리부터 파일까지의 위치를 나타낸 것 상대 경로 : 클래스패스(ClassPath)로 부터 파일까지 경로를 적은 것. 클래스패스(ClassPath) - 프로그램이 실행 된 위치 이클립스는 프로젝트 폴더가 ClassPath로 적용되어 있다. 경로 지정 문자 . -> 현재 디렉토리 .. -> 부모 디렉토리 / -> 루트 디렉토리 ex) /test/folder -> D:\test\folder\ ex) ./test -> 프로그램실행폴더/test ex) D:/test/folder/../myfolder -> D:\test\myfolder c..
· BackEnd/Java
public class Exception06_Throw { public static void main(String[] args) { Exception e = new NullPointerException(); // 예외 객체 생성 // Exception 은 Checked // NullPointerException e = new NullPointerException(); // 예외 객체 생성 // NullPointer 는 Un Checked이기 때문에 위의 소스는 작동하지 않는다. // 다만 try catch 문으로 감싸주면 실행 가능하다. // throw e; try { throw e; } catch (Exception e2) { // catch(Exception e) 부분은 이름 충돌이 날 수 있기 때문..
· BackEnd/Java
throws 예외클래스명; [접근제한자] [식별자] [리턴타입] 메소드명(매개변수) throws 예외클래스명 { // 예외 발생 코드 포함 작성 } throws 가 적용된 메소드를 호출할 때 try - catch 구문을 이용한 예외처리가 필요하다. 예외처리를 하지 않으면 대부분 문법에러가 발생한다. 사용자 정의 예외 만들기 API Exception 클래스들 이외에 추가적으로 예외 상황을 정의하는 클래스를 만드는 것. 개발자가 직접 예외 상황을 설정하고 클래스로 구현하는 것 Exception 클래스, RuntimeException 클래스를 상속받아 구현한다. class User { private int age; public int getAge() { return age; } public void setAg..
· BackEnd/Java
컴파일 타임 에러 (Compile-time Error) 컴파일 시점에 발생하는 에러 이클립스에서는 소스코드를 저장하는 즉시 주로 문법 에러(Syntax Error) 런타임 에러 (Runtime Error) 프로그램 수행 중 발생하는 에러 수행할 수 없는 작업을 시도할 때 발생 주로 Exception(예외) 처리 된다. NullPointerException : null 값을 참조해서 코드 수행 시 ArrayIndexOutOfBoundsException : 배열에 Index 지정을 잘못 했을 때 ArithmeticException : 불가능한 산술연산 수행 시 논리 에러 (Logical Error) 프로그램이 에러없이 잘 작동한다. 프로그램의 흐름, 동작이 개발자의 의도대로 수행되지 않을 때 ex) 무한루프..
헌일