Web Programming
-
log4j의 개념과 사용법Web Programming 2021. 1. 8. 18:03
log4j(Log for Java) : JAVA의 LOG Library 개발 공부를 하다보면 온갖 코드에서 오류가 나기 마련이고 이를 확인하기 위해 우리는 늘 로그창을 확인한다. 하지만 직접 Sysout을 사용하여 로그를 찍는데는 한계도 있을 뿐더러 운영의 속도에 영향까지 준다. 이를 위해 사용하게 되는 것이 log4j이다. log4j의 장점 속도에 최적화 되어있다. Multi-Thread 환경에서도 안전하다. 로그의 출력 형식을 쉽게 변경할 수 있다. 융통성이 풍부하다. 이렇게 좋은 라이브러리이지만 직접 프로젝트에 적용을 해보려니 사전 설정으로 필요한 것이 많아 포스팅으로 정리한다. 여기서는 log4j에서 업그레이드 된 log4j2를 사용한다. log4j 사용법 1. 프로젝트에 log4j의 jar 파일..
-
JDBC와 ODBC의 차이Web Programming 2020. 11. 12. 11:20
Java로 웹 개발을 하다보면 MySQL과 같은 데이터베이스와 연동을 위해 자주 등장하는 것이 JDBC다. 어렴풋이 Java와 DB를 연동해주는 도구로만 알고 있는 이 JDBC와 또 다른 도구인 ODBC에 대해 알아보자. JDBC(Java Database Connectivity) : 자바에서 데이터베이스로 접속이 가능하게 해주는 API JDBC는 Java에서 DB에 접근하여 데이터를 관리할 수 있게 해준다. DBMS로 넘겨질 SQL문을 각 시스템에 맞도록 변환해주는 역할을 한다. Java와 연동되는 DBMS에 따라 알맞는 JDBC의 설치가 필요하다. ODBC(Open Database Connectivity) : 표준 개방형 응용 프로그램 인터페이스 ODBC는 응용프로그램에서 데이터베이스에 접근하기 위한 ..
-
#{}과 ${}, 왜 다를까?Web Programming/Mybatis 2020. 11. 5. 10:58
Mybatis에서 쿼리문을 작성할 때 다음과 같이 $를 사용하거나 #을 사용하여 파라미터를 받아온다. 언뜻 보면 큰 차이는 없어보이나 이 차이로 인해 파라미터를 받아오지 못하는 경우가 생긴다. 두 쿼리문을 정리하면 다음과 같다. #{} 파라미터가 String 형태로 넘어온 후 그 값에 ' '이 붙어 출력된다. SQL Injection이 들어올 경우 ' '으로 인해 쿼리문으로 인식하지 않아 보안에 유리하다. ${} 파라미터가 해당 컬럼의 자료형에 맞춰진 형태로 출력된다. SQL Injection이 들어올 경우 쿼리문으로 인식하여 보안에 불리하다. ' '을 붙이면 인식되지 않는 테이블이나 컬럼명을 전달하기 위해 사용한다. 코드를 보며 차이를 확인해보자. 위와 같이 파라미터 값이 String 형태로 필요한 경..
-
정규표현식Web Programming 2020. 10. 27. 10:01
정규표현식(Regular expression) : 텍스트에서 특정 패턴을 찾아내는데 사용되는 문자 혹은 기호의 집합 웹을 공부하다보면 ID 혹은 E-mail 검증에 자주 등장하는 것이 정규표현식(이하, 정규식)이다. 정규식은 문자열 내부의 텍스트 대체, 포맷의 유효성 검사, 패턴 매칭을 기반으로하는 문자열에서 특정 텍스트를 추출하는 등의 목적을 위해 사용된다. 식의 모양이 난해해 어렵다 생각할 수 있으나 조금만 익숙해지면 텍스트 처리에서 많은 역할을 수행한다. 위 사진과 같이 시작, 종료기호가 "/"로 표시되고 내부에는 패턴이, 끝에는 플래그가 붙어 정규식이 완성된다. 직접 몇가지 정규식을 작성해보며 공부해보자. 다음은 정규식 연습에 유용한 사이트다. https://regexr.com https://re..
-
http와 https의 차이Web Programming 2020. 9. 25. 14:48
HTTP(HyperText Transfer Protocol) : www상에서 정보를 주고받을 수 있는 프로토콜 HTTP는 프로토콜의 일종으로 웹브라우저(Client)와 서버(Server)간의 웹페이지와 같은 자원을 주고 받을 때 쓰는 통신 규약이다. 상태가 없는 웹문서의 형태로 제공되지만 HTTP 쿠키와 같은 세션을 통해 페이지와 상호작용을 할 수 있다. 기본 구조는 다음과 같다. 클라이언트가 서버에 필요한 정보를 담은 요청을 전송한다. 서버는 HTTP 메시지의 형태로 응답에 대한 정보를 담아 클라이언트에게 전송한다. 이와 같이 기본적인 구조의 송수신에서 문제가 발생한다. HTTP 메시지는 결국 텍스트 교환이다. 단순 텍스트를 주고 받기 때문에 제3자가 네트워크에서 신호를 가로챌 경우 내용이 노출될 수 ..
-
Spring Framework Annotation 정리 #1Web Programming/Spring4.0 2020. 9. 21. 11:01
참고 : 어노테이션(Annotation) 이란? 지난 포스팅에서 Annotation의 의미와 활용방법에 대해서 알아보았다. 이번 포스팅에서는 Annotation의 활용도가 높은 Spring Framework에서의 Annotation에 대해 알아보려한다. 의존성 주입 @Required Setter Method에 사용한다. @Required가 존재할 경우, 해당하는 Setter Method의 값이 반드시 존재해야한다. public class TestBean { private TestDao testDao; @Required public void setTestDao(TestDao testDao) { this.testDao = testDao; } } @Required 사용 시에는 영향을 받는 bean proper..
-
어노테이션(Annotation) 이란?Web Programming/Spring4.0 2020. 9. 18. 16:44
Spring의 Annotation을 공부하려면 우선 Annotation이 무엇인지부터 알아야할 필요성이 있다. Annotation은 JEE5(Java Enterprise Edition 5)부터 새로 추가된 요소이다. 개발을 하다보면 주로 @Override와 같은 형태로 익숙하게 눈에 들어온다. 이 Annotation은 한가지 기능에 특정되지 않고 다양한 기능을 갖는다. @Override와 같이 컴파일러를 위한 정보를 제공 Spring Framework의 @Controller처럼 런타임 중 메소드를 불러오거나 특수한 기능을 추가 컴파일 과정에서 Annotation 정보를 통해 코드를 생성 JDK에도 몇가지 Annotation이 기본으로 내장되어있다. @Override 선언한 메소드가 오버라이딩 되었다는 것..
-
프로세스(Process)와 쓰레드(Thread), 멀티쓰레드(Multi-Thread)Web Programming 2020. 9. 17. 16:46
쓰레드(Thread)에 공부하기 위해서는 먼저 프로세스(Process)에 대한 이해가 필요하다. Process와 Thread는 모두 프로그램 실행의 한 단위를 의미하지만 개념은 다르다. 프로세스(Process) : 운영체제에 의해 메모리 공간을 할당받아 실행 중인 프로그램 쓰레드(Thread) : 컴퓨터 실행 흐름의 최소 단위 원래 프로그램을 실행하는 흐름은 Process가 유일했다. 하지만 소프트웨어가 복잡해지며 하나의 프로그램에서 동시 작업이 요구되는 상황이 발생하고 이를 해결하기 위해 등장하는 것이 쓰레드다. Process는 타 프로세스와의 데이터 공유가 힘들기 때문에 동시 작업에서는 많은 비효율성을 갖는다. Thread의 경우, 한 Process 내부를 여러 Thread로 나눠 데이터 영역을 공유..