Interceptor에서 API 요청인지 페이지 이동인지 구분해야 할 때가 있다. 간단하게 API 요청 여부에 대해 확인하는 방법을 알아보자. Http 요청을 하게 되면 요청 헤더에 "X-Request-With" 필드에 "XMLHttpRequest" 값이 포함된 것을 확인할 수 있다. X-Request-With의 접두사 X는 비표준을 의미한다. 하지만 jQuery와 같은 대중적인 라이브러리들이 Ajax 요청 시 헤더에 정보를 담아 전송을 요청한다. 이것을 활용하면 API 호출 여부를 판별하기 쉽다. private boolean isAjaxRequest(HttpServletRequest request) { String header = request.getHeader("X-Requested-With"); i..
ContextPath로 접근하였을 때 index 페이지에서 로그인 페이지로 연결하는 예시이다. Controller 다양한 예제 @Controller public class IndexController { @GetMapping("/") public String indexView() { return "/index"; } } @Controller public class IndexController { @GetMapping("/") public String indexView() { return "redirect:/index"; } } @Controller public class IndexController { @GetMapping("/") public RedirectView indexView() { return..
indexOf 함수는 문자열 내에서 지정된 문자나 문자열이 처음 발견되는 인덱스를 반환한다. 만약 찾지 못했을 경우 "-1"을 반환한다. 시작위치는 생략이 가능하며 생략할 경우 0번째 즉 처음부터 찾는다. 대부분의 개발자들이 알고있는 사실이고 자주 사용하는 함수이기도 하다. 하지만 indexOf 함수 사용시 시작 위치를 지정해서 사용하기를 권장한다. 시작 위치를 지정해서 사용하면 좀 더 명확해진다. indexOf(int ch, int fromIndex) indexOf(String str, int fromIndex) Noncompliant Code Example // a new String is going to be created by "substring" str.substring(beginIndex).i..
프로젝트를 진행하면서 가끔 내가 사용하고 있는 예외(Exception)에 대하여 제대로 사용하고 있는가 라는 의문이 들 때가 있을 것이다. 또는 정리가 필요하는 생각을 가졌을 것으로 생각된다. 이 글을 통해 이해하고 생각하며 적용할 수 있기를 바란다. 1. 예외? (Error vs Exception) 먼저 오류(Error)와 예외(Exception)의 개념을 정리해보자. 오류(Error)는 시스템에 비정상적인 상황이 생겼을 때 발생한다. 시스템 레벨에서 발생하여 심각한 수준의 오류를 말한다. 이런 오류는 개발자가 미리 예측할 수 없기 때문에, 오류에 대한 처리를 신경 쓰지 않아도 된다. 프로그램에 오류가 있을 때 발생되도록 의도된 오류이다. 예외(Exception)는 개발자가 구현한 로직에서 발생한다. ..
데이터를 가공 또는 처리하다 보면 null에 대한 처리가 필요할 때가 있다. 보통 문자열로 형 변환 시 toString()을 자주 사용하는데, null값을 문자열로 형 변화 시 NullPointerException이 발생한다. 그에 반해 String.valueOf()를 사용하면 파라미터가 null이 전달될 경우 문자열 "null"을 반환한다. public static void main(String[] args) { System.out.println("StringMethod".toString()); System.out.println(String.valueOf("StringMethod")); Object object = null; System.out.println(String.valueOf(object));..
public static void main(String[] args) { //Array 선언 String[] aArray = new String[5]; String[] bArray = {"a", "b", "c", "d", "e"}; String[] cArray = new String[] {"f", "g", "h", "i", "j"}; ArrayList list = arrayToArrayList(cArray); //Array 출력 System.out.println("printArray "+ printArray(bArray)); //Array 특정 값 확인 System.out.println("arrayContains " + arrayContains(bArray, "b")); System.out.println..
try catch 구문에서 finally는 예외가 발생 여부와 관계없이 반드시 처리해야 할 때 사용된다. 예를 들어 보자. catch와 finally를 같이 쓸 때는 try 블록에서 리소스를 얻어 사용하고, catch 블록에서는 예외적인 상황을 다루며, finally 블록에서는 리소스를 해제한다. public class TryCatchFinally { public static void main(String[] args) { System.out.println("getReturn : " + getReturn()); } static String getReturn() { String str = "do"; try { str = "Try"; System.out.println(str); return str; } ca..
Java에서 Exception은 checked와 unchecked 두 가지로 나눌 수 있다. 아래 도표는 Java Exception 클래스 계층 구조를 보여준다. 체크 예외(checked Exception) 빨간색은 체크 예외이다. RuntimeException을 상속하지 않는 예외들을 말하는데, 체크 예외가 발생할 수 있는 메소드를 사용할 경우, 복구가 가능한 예외들이기 때문에 반드시 예외를 처리하는 코드를 작성해야 한다. catch문으로 예외를 잡거나, throws로 예외를 자신을 호출한 클래스로 던지는 방법으로 해결해야 한다. 이때 해결하지 않으면 컴파일 시 체크 예외가 발생한다. 체크 예외는 Java 컴파일러와 JVM이 규칙을 준수하는지 확인하기 때문에 Exception이 호출된다. 대표적인 Ex..
Spring Boot에서 기본적으로 모든 @Scheduled 작업은 Spring에 의해 생성된 Thread pool 개수는 1개이다. 하나의 Scheduled이 돌고 있으면 다 끝나야 다음 Scheduled이 실행된다. 아래 로그를 추가하여 확인이 가능하다. logger.info("Current Thread : {}", Thread.currentThread().getName()); Spring Boot에서 설정을 통해 모든 작업을 실행하기 위해 스레드 풀을 사용하도록 아래와 같이 구성할 수 있다. import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.Schedul..
DTO, VO 객체 클래스를 잘 들여다보면 Serializable 인터페이스를 구현한 코드를 많이 볼 수 있다. 또는 대부분 습관적으로 작성하기도 한다. 직렬화는 자바 시스템 내부에서 사용되는 Object 또는 Data를 외부의 자바 시스템에서도 사용할 수 있도록 byte형태로 변환하는 기술이다. 역직렬화는 직렬화된 데이터를 원래대로 변화하는 것을 의미한다. 보통 직렬화는 자바 RMI(Remote Method Invocation), 캐시(Cache), 서블릿 세션(Servlet Session)에서 사용된다. 하지만 언급한 경우가 아닌데도 사용하는 Serializable 인터페이스를 구현하는 코드를 보았을 것이다. 객체를 담을 클래스는 기본적으로 Serializable를 구현하는 것을 권장한다. 직렬화 자..
- sort algorithm
- 리액트 16
- React
- javascript
- Maven
- 정렬 알고리즘
- 개발환경
- 회고
- Collection
- 성능분석
- 자바스크립트
- 오라클 내장 함수
- spring
- 이직
- SQL
- 리액트
- 소프트웨어공학
- 제주도 여행
- 프로그래머
- 프로그래머스
- Tomcat
- Eclipse
- 제주도 3박4일 일정
- 경력관리
- effective java
- 자바
- 리눅스 명령어
- Java
- Linux 명령어
- 오라클
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |