분류 전체보기 362

JavaScript - 객체(Object)

JS에서 객체(Object)란? 자바스크립트(JavaScript)는 객체 기반 스크립트 언어이고, 객체는 여러 속성을 하나의 변수에 저장할 수 있게 해주는 데이터 타입입니다. Key(속성)과 Value(값)을 한 짝으로 저장합니다. 자바스크립트에서는 배열도 객체에 해당됩니다. 객체 안에는 문자열, 숫자, 배열, 객체, 함수 등이 모두 들어갈 수 있습니다. 객체의 특징 객체는 변수의 타입 다양한 값들이 포함될 수 있다. 중괄호 '{ }' 를 이용 콤마 ' , ' 를 이용해서 속성과 값의 짝을 나열 Key(속성)는 문자열 또는 기호 Value(값)는 모든 유형 + property는 Key : Value 한 쌍(pair)을 말합니다. 객체 선언 및 초기화 var student = new Object(); //..

Java - 스택 트레이스(Stack Trace) 읽기

스택트레이스란? 스택트레이스는 프로그램이 시작된 시점부터 현재 위치 까지의 메서드 호출 목록입니다. 이는 예외가 어디서 발생했는지 알려주기 위해 JVM이 자동으로 생성합니다. 스택트레이스를 읽는 능력은 선택이 아닌 필수입니다(초보자라면 더욱). 왜냐하면 오류 발생시, 무턱대고 오류내용을 복붙하고 해결을 위한 코드도 복붙해서 해결하면 직면한 문제는 해결할 수 있지만 발전 없이 머물러 있게 되기 때문입니다. 반면에, 한번만 주의 깊게 연구해 본다면, 다음부터는 쉽게 정확한 원인을 파악할 수 있고, 효율적으로 해결할 수 있게 됩니다. 또한, 그런 문제를 마주치는 빈도가 줄어들게 됩니다. public class StackTraceTest { public static void main(String[] args) ..

Language/Java 2020.10.09

Spring - 리다이렉트(redirect)

리다이렉트(redirect) 란? 리다이렉트(redirect)는 웹 브라우저(사용자)가 어떤 URL로 웹 서버를 요청했을때 다른 URL로 넘겨주는 것을 말합니다. 예를 들면, Gmail로 접속했을 때 로그인이 되어 있지 않다면, 로그인이 선행되어야 하기 때문에 로그인 페이지로 이동시키는 것을 리다이렉트라고 합니다. 구현 @Controller public class RegisterController { @RequestMapping("/register/step1") public String handleStep1() { return "register/step1"; } @PostMapping("/register/step2") public String handleStep2( @RequestParam(value =..

Server/Spring 2020.10.07

Spring - 스프링 MVC 프레임워크 동작 방식

Spring MVC의 동작 방식 흔히 설명할 때 Spring MVC의 동작 방식을 설명할 때 DispatcherServlet에 대해 설명하게 된다. 먼저 DispatcherServlet에 들어가기 전 단계에 대해 알아보자. Filter, Interceptor 우선 Filter의 경우 Spring Context 밖에 있다. 즉, 스프링과 무관하게 전역적인 처리를 할 때 사용한다. 이후에 DispatcherServlet을 지나서 Controller에 도달하게 되는데, 중간에 interceptor가 있을 수 있다. HandlerMapping에 의해 컨트롤러가 매핑된 다음에 요청을 가로채서 Interceptor가 동작을 수행한다. Spring 컨테이너 내부 스프링 컨테이너 내부는 다음 그림과 같다. 순서 정리 ..

Server/Spring 2020.10.06

JSP - 기본 문법 (스크립트 태그)

JSP 기본 문법 JSP는 태그를 이용하여 문법을 기술합니다. 태그는 스크립트 태그, 디렉티브 태그, 액션 태그가 있습니다. 스크립트 태그 - HTML에 자바 코드를 넣어서 자바 프로그램의 기능을 구현 디렉티브 태그 - JSP 페이지를 어떻게 처리할 것인지 설정 (컨테이너에 전송됨) 액션 태그 - 클라이언트/서버를 제어함. (JSP 페이지 사이에서 제어를 이동할 수 있음) 스크립트 태그 스크립트 태그는 HTML에 자바 코드를 넣어서 자바 코드로 만든 프로그램의 기능을 웹에서 수행할 수 있게합니다. 선언문(declaration) - - 자바 변수나 메소드를 정의 스크립틀릿(scriptlet) - - 자바 로직 코드 표현문(expression) - - 값을 출력 JSP 컨테이너가 식으로 작성된 코드를 스크립..

Web/JSP 2020.10.03

JSP - JSP(Java Server Pages)란 ?

JSP ? 웹 페이지에는 정적(static)과 동적(dynamic)으로 구분할 수 있습니다. 정적은 상수 처럼 변하지 않는 웹 페이지이고, 동적은 내용이 사용자의 요청에따라, 입력에따라 가공되어 처리되는 웹 페이지입니다. 정적 웹 페이지는 HTML같은 언어로 작성하고 동적 웹 페이지는 PHP, ASP, JSP와 같은 언어로 작성합니다. JSP는 동적 웹 페이지를 구현하는데 사용되는 자바 기반의 서버 단 웹 프로그래밍 언어입니다. 서블릿이 먼저 개발되었으나 자바 코드 안에 HTML 코드를 추가하는 서블릿을 이용한 개발이 쉽지 않고 불편한 부분이 많아 HTML 코드에 자바 코드를 삽입하는 방식인 JSP가 개발되었습니다. 보통 식으로 사용합니다. JSP 특징 유지 관리의 편리성 - 서블릿과 달리 프레젠테이션 ..

Web/JSP 2020.09.29

Spring - 트랜잭션 처리

스프링에서의 트랜잭션 처리 트랜젝션(Transaction)은 두 개 이상의 쿼리를 한 작업으로 실행해야 할 때 그 작업의 단위가 트랜젝션입니다. 트랜젝션의 쿼리가 모두 성공해서 DB에 반영하는 것을 commit이라고 하고, 취소하고 되돌리는 것을 rollback이라 합니다. JDBC API로 트랜젝션을 처리하려면 Connection 클래스의 setAutoCommit(false)로 자동 커밋을 비활성화하고 수동 commit()과 rollback() 메서드를 이용해서 트랜젝션을 커밋하거나 롤백해야 합니다. 즉, 프로그램이 커밋을 못하게 막고 트랜잭션에 있는 쿼리들을 전부 수행후 성공하면(try의 끝) 커밋 하고 실패하면(catch) 롤백합니다. 하지만 위와 같이 작성하면 개발자가 실수했을 경우 문제가 발생할..

Server/Spring 2020.09.29

Spring - 로그백(Logback)

spring-jcl 스프링5는 자체 로깅 모듈 spring-jcl을 사용합니다. 이 모듈은 직접 로그를 남기지는 않고 다른 로깅 모듈을 사용해서 로그를 남기는 방식입니다. 어떤 로깅 모듈 의존이 존재하면 해당 로깅 모듈로 로그를 남깁니다. 그래서 사용할 로깅 모듈 의존을 추가해야 합니다. Spring Framwork JCL 인터페이스 Log4J(구현체) 즉, 위처럼 Log4J 의존이 존재하면 해당 모듈을 사용하고, 이를 빼고 다른 구현체를 끼워주면 또 해당 구현체가 작동합니다. Logback Logback은 Java에서 가장 많이 사용됬던 로깅 라이브러리 log4j의 후속 버전입니다. log4j에 비해 여러가지 기능이 추가되고 성능이 향상되었습니다. 구현체를 로그백으로 설정하는 방법을 예로 들겠습니다. ..

Server/Spring 2020.09.29

톰캣이란 ?

톰캣(Tomcat)이란 ? 톰캣(Tomcat)은 흔히 WAS(Web Application Service)라고 하며, 아파치 소프트웨어 재단(Apache Software Foundation)의 애플리케이션 서버로서, 자바 서블릿을 실행하고 JSP(Java Server Pages)가 포함된 웹페이지를 만들어줍니다. 톰캣은 웹 서버와 연동하여 실행할 수 있는 자바 환경을 제공하고, 관리 도구를 이용해서 설정을 변경할 수도 있지만, XML 파일을 편집해서 설정할 수도 있습니다. 아파치(Apache)란 ? 아파치(Apache)는 세계에서 가장 많이 쓰는 웹 서버 중 하나입니다. 이 아파치는 HTTP서버이고 굉장히 다양하고 효율적인 기능을 제공합니다. 또 구축이 매우 쉽고 무료라는 이유로 많이 사용합니다. 다양한 ..

Web/JSP 2020.09.29

Java - 메인 메서드가 public static void인 이유

왜 자바의 메인 메서드는 public static void를 사용할까? 자바의 메인메서드를 작성할 때는 public static void main(String[] args){}구조로 작성합니다. 왜 이런 구조를 갖게 되었는지 살펴보겠습니다. public public은 접근제어자입니다. 어느 클래스에서든 해당 객체를 참조할 수 있다는 뜻입니다. JVM(Java Virtual Machine)이 접근 하기 위해서 public을 사용해야만 합니다. 다른 접근 제어자를 사용하면 프로그램이 실행되지 않습니다. static static으로 뭔가를 선언하게 되는 경우, 자바가 컴파일 되는 시점에 정의됩니다(클래스 로드). 그리고 static 요소를 non-static 요소에서 호출하는 것은 불가능합니다. main 메서..

Language/Java 2020.09.28