목록전체 글 73
Formoat's Open Blog
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _01.HelloCSharp { class Program { static void Main(string[] args) { Console.WriteLine("Hello C#"); Console.WriteLine(args.Length); for ( int i=0; i
# Apache Commons FileUpload - 파일 업로드를 위한 라이브러리 추가 (Maven) - CommonsMultipartResolver 객체 생성 (servlet-context.xml) commons-fileupload commons-fileupload 1.4 // CommonsMultipartResolver 객체 생성시 주의사항으로 반드시 id = "multipartResolver" 이어야 함. Property Description maxUploadSize 최대 업로드 가능한 바이트 크기, -1은 제한이 없음을 의미함 (기본값 : -1) maxInMemorySize 디스크에 임시 파일을 생성하기 전에 보관할 수 있는 최대 바이트 크기 defaultEncoding 요청을 파싱할 때 사용할..
# REST (Representational State Transfer) 웹에 존재하는 모든 자원(텍스트, 이미지, 동영상) 등에 고유한 URI(이름)를 부여하고 자원에 대한 행위를 정의하여 상태 정보를 주고받는 방법론은 의미한다. 즉 HTTP URI로 자원을 표현하고, HTTP Method로 자원에 대한 행위를 정의하여 상태 정보를 주고받게 된다. REST의 구성 요소 - 자원(Resource) : URI - 행위(Verb) : HTTP Method - 표현(Representation) : MIME Type // Responce HTTP Header Content-Type # REST 제약조건 REST는 분산 시스템 설계를 위한 아키텍쳐로 아래와 같은 제약조건들을 가지고 있으며, 이러한 제약조건을 만족..
# 인터셉터 (Interceptor) - 특정 URL 요청시 컨트롤러로 가는 요청을 가로채는 역할 - 다수 컨트롤러에 대해 동일한 기능을 제공한다. 인터셉터는 주로 로그인후 사용이 가능한 페이지 접근에 많이 사용이 되는데, 인터셉터를 사용하지 않을경우 게시물 작성, 수정, 삭제 등의 페이지에 로그인 기록(세션)이 남아 있는지 확인하는 코드를 모든 페이지에 작성해야 한다. 이를 인터셉터를 이용해 페이지를 가로채 먼저 로그인 기록(세션)이 남아있는지를 체크한다면 중복되는 코드를 줄일 수 있다. # 스프링 인터셉터 처리 HandlerInterceptor ← AsyncHandlerInterceptor ← HandlerInterceptorAdapter - 스프링에서는 HandlerInterceptorAdapter..
# 스프링 MVC 구조의 흐름 1) DispatcherServlet 가장 앞서 요청을 받아들여 FrontController라고 불림 스프링 프레임워크의 중심이 되는 서블릿으로 클라이언트의 모든 요청을 받아 흐름을 제어 각 컨트롤러에 요청을 전달하고 컨트롤러가 반환한 결과값을 View에 전달해 응답 web.xml에 정의되어 있으며, 보통 servlet-context.xml 설정 파일을 읽어 컨테이너를 구동 2) HandlerMapping 클라이언트의 요청 URL을 처리할 컨트롤러를 결정해 DispatcherServlet에 반환 @Controller 어노테이션이 적용된 객체의 @RequestMapping 값을 이용해 요청을 처리할 컨트롤러 탐색 3) HandlerAdapter DispatcherServlet..
# Log 과거 항해일지를 통나무에 기록하는 것을 log(book)이라 하여 주요 관리가 필요한 여러 작업에서 다양하게 쓰인다. 프로그램에서 발생하는 사건을 기록함으로써 프로그램이 실행되는 동안 정확한 상황과 상태 정보를 제공한다. 프로그램 개발시에는 발생하는 문제를 추적하는데 사용이 되며, 완료된 프로그램을 운영할 때는 모니터링 정보를 기록하는데 사용이 된다. 이러한 로그 기록은 파일 또는 데이터베이스 등 저장이 가능해 로그 기록을 저장한 뒤 후에 로그 기록을 분석해 통계 자료에도 활용이 가능하다. 1) Java Commons Logging (JCL) 아파치 재단에서 개발자들에게 제공하는 공통 로깅 API (facade 역할) 특정 로깅 프레임워크에 종속되지 않게 함 많은 서드 파티 로깅 프레임워크들이..
# Transaction 데이터베이스의 상태를 변경시키는 기능을 수행하기 위한 작업의 단위로 데이터베이스의 상태를 변경시키는 일련의 작업들이 있을 때 이러한 작업들은 모두 에러가 없이 끝나야 한다. 만약 중간에 에러가 발생 했다면, 일련의 작업들 모두 이전 내용으로 원상복구(Rollback) 되어야 한다. 이렇듯 데이터에 대해 무결성을 유지하기 위한 처리 방법을 '트랜잭션 처리'라고 한다. 대표적인 트랜잭션의 예로 '계좌이체'가 있다. (출금/입금이 한몸으로 움직이는 상태) Commit : 트랜잭션으로 묶인 모든 쿼리가 성공적으로 동작하면 쿼리 결과를 데이터베이스에 실제로 반영 Rollback : 트랜잭션으로 묶인 쿼리 중 하나라도 실패하면, 전체 쿼리를 실패로 간주해 실패 이전 실행한 쿼리 모두 취소 ..
# MyBatis 개발자가 지정한 SQL, 저장 프로시저 그리고 몇가지 고급 매핑을 지원하는 퍼시스턴스 프레임워크이다. JDBC로 처리하는 상당 부분의 코드와 파라미터 설정 및 결과 매핑을 대신 해주며 데이터베이스 레코드에 원시타입, Map, 자바 POJO를 설정해 매핑하기 위해 XML, 어노테이션을 사용할 수 있다. MyBatis의 특징 - 간결한 코드 처리 - SQL문의 분리 운영 - Spring과의 연동으로 자동화된 처리 - 동적 SQL을 이용한 제어 기능 - JDBC에서 개발자가 직접 처리하는 PreparedStatement의 '?'에 대한 설정 또는 ResultSet을 이용한 처리가 이루어짐 - SQL문을 자바 코드와 분리해 XML or 어노테이션을 이용해 처리한다. - 스프링 프레임워크와 My..