목록분류 전체보기 (231)
코딩 기록들
System 클래스의 표준 입출력 멤버 public class System{ public static PrintStream out; public static InputStream in; public static PrintStream err; } System.out 표준 출력(모니터) 스트림 System.out.println("출력 메세지"); System.in 표준 입력(키보드) 스트림 int d = System.in.read() // 한 바이트 읽기 System.err 표준 에러 출력(모니터) 스트림 System.err.println("에러 메세지") 빨간 줄로 에러메시지 출력됨 public class SystemInTest1 { public static void main(String[] args) {..
입출력 스트림 - 네트워크에서 자료의 흐름이 물의 흐름과 같다는 비유 - 자바는 다양한 입출력장치에 독립적으로 일관성있는 입출력을 : 입출력 스트림을 통해 제공 - 입출력이 구현되는곳 : 파일디스크, 키보드, 마우스, 네트워크, 메모리 등 모든 자료가 입력및 출력되는곳 - 스트림 = 추상적인 경로 - 다 exception 처리를 해줘야됨 -> 어렵다고 느낄수 있음 입력 스트림 FileInputStream, FileReader, BufferedInputStream, BufferedReader 등 출력 스트림 FileOutputStream, FileWriter, BufferedOutputStream, BufferedWriter 등 입출력 스트림의 구분 (하나의 스트림을 열어서 입력 & 출력용 2개를 한꺼번에..

지금까지는 서버 입장에서API를 제공하는 방법에 대해 학습. 이제부터는 우리의 서버가 client가 돼서 새로운 서버에게 요청하는 것에 대한것! (RestTemplate 활용) // 요청을 받아줄 컨트롤러 패키지 만들기 getForEntity vs getForObject 1. getForEntity - 반환의 형태가 response type을 지정해줘야 됨 RestTemplate restTemplate = new RestTemplate(); ResponseEntity result = restTemplate.getForEntity(uri, String.class); System.out.println(result.getStatusCode()); //200 OK System.out.println(result...

Interceptor - Filter와 유사한 형태로 존재 - Spring Context에 등록됨 (Filter - web application에 등록) - AOP와 유사한 기능 제공 - 인증단계 처리, Logging 하는 데 사용 - 이를 선/후처리 하며 Service business logic과 분리시킴 -> 서비스 인증안된것들 걸러내는 용도 예제 public controller : 아무런 권한이 없는 사용자, 즉 모두가 들어올 수 있도록 = openAPI 형태 private controller : 내부사용자, 즉 세션이 인증된 사용자만 넘김 이 둘(public / private)의 권한차이를 주는 방법 : Interceptor에서 메소드/컨트롤러에 @Auth 어노테이션이 붙어있으면 세션을 검사해서,..

Filter - Web Application에서 관리되는 영역 - 가장 앞단에서 client의 요청이 들어오자마자 해당 request body / response body를 기록하는, 보안의 용도로 사용 - Spring Boot Framewor에서 Client로부터 오는 요청/응답에 대해 최조/최종 단계 위치에 존재함 -> 이를통해 요청/응답의 정보를 변경하거나, Spring에의해 데이터가 변환되기전의 순수한 Client의 요청/응답값을 확인할 수 있음 - 유일하게 ServeletRequest, ServeletResponse의 객체를 변환할 수 있음 - 주로 Spring Framework에서 request / response의 Logging용도로 활용하거나, 인증과 관련된 Logic들을 해당Filter에..
예외 처리 미루기 예외 처리는 예외가 발생하는 문장에서 try-catch 블록으로 처리하는 방법과 이를 사용하는 부분에서 처리하는 방법 두 가지가 있음 throws를 이용하면 예외가 발생할 수 있는 부분을 사용하는 문장에서 예외를 처리할 수 있음 public class ThrowsException { // 일부러 exception 발생하기 위해 만든 메소드 // throws : 메소드를 쓰는 쪽에서 exception 핸들링 함 public Class loadClass(String fileName, String className) throws FileNotFoundException, ClassNotFoundException{ FileInputStream fis = new FileInputStream(fil..
try-catch 문 try 블록 : 예외가 발생할 가능성이 있는 코드를 작성, try 블록 안에서 예외가 발생하는 경우 : catch 블록이 수행됨 try{ 예외가 발생할 수 있는 코드 부분 } catch(처리할 예외타입 e) { try블록 안에서 예외가 발생했을때 예외를 처리하는 부분 } 프로그래머가 예외를 처리해줘야 하는 예 (배열의 오류 처리) public class ArrayIndexException { public static void main(String[] args) { int[] arr = {1,2,3,4,5}; try{ for(int i=0; i

예외처리는 왜 해야할까? - 자바에서 제공되는 클래스들 - 프로그램에서의 오류 컴파일 오류(compile error) 최근에는 개발 환경(eclipse)에서 대부분의 컴파일 오류는 detection 됨 프로그램 코드 작성 중 발생하는 문법적 오류 특히, IO와 관련된 파일입출력, 네트워크 커넥션, DB커넥션에서는 반드시 exception 처리해야됨 실행 오류(runtime error) 실행 오류는 비정상 종료가 되는 경우 시스템의 심각한 장애를 발생할 수 있음 실행 중인 프로그램이 의도 하지 않은 동작(bug)을 하거나 프로그램이 중지 되는 오류 -> 해결위해 로그를 남김 예외처리의 중요성 프로그램의 비정상 종료를 피하여 시스템이 원할이 실행되도록 함 실행 오류가 발생한 경우 오류의 과정을 재현하는 것은..