본문 바로가기

프로그래밍/스프링프레임워크80

스프링프레임웍 - Spring Security(2) : 커스텀 로그인 화면 및 권한에 따른 접근 제어 앞의 글 "스프링프레임웍 - Spring Security(1) : 기본 설정"에 이어 이번에는 커스텀 로그인 화면을 만드는 방법을 알아보겠습니다. 전체소스는 하단에 추가되어 있습니다. 1. 스프링 시큐리티 태그라이브러리를 사용하기 위한 의존성을 추가합니다. 메인화면에서 로그인이 되어 있지 않으면 로그인 링크를 보여주고, 로그인이 되어 있으면 로그아웃 링크를 보여주기 위해서 사용됩니다. org.springframework.security spring-security-taglibs 4.2.1.RELEASE 2. 커스텀 로그인 화면을 사용하기 위한 설정을 추가 합니다. 커스텀 로그인 화면 제공 및 권한(역할)에 따른 접근 제어도 테스트 해봅니다. - provider 를 통해 ROLE_USER, ROLE_ADM.. 2018. 4. 8.
스프링프레임웍 - Spring Security(1) : 기본 설정 스프링 시큐리티는 지금까지 직접 구현해왔던 아이디/비밀번호를 입력하고 로그인하여 사용자를 인증(Authentication)하고, 로그인후 프로그램의 각각의 기능에 대한 권한을 체크(Authorization)하는 작업을 구현해둔 보안 프레임웍 입니다. 프로그램외에 리소스(이미지 등)에 대한 접근도 제어할 수 있고, CSRF(Cross Site Request Forgery) 공격 방어, 세션 고정(Session Fixation) 공격 방어 및 다중 접속 방지 등도 간단하게 구현할 수 있습니다. 이제부터 스프링 시큐리티를 사용하는 방법에 대해 알아 보도록 하겠습니다. 이 글에서는 스프링 시큐리티 4.2.1 버전으로 테스트 해 봅니다. 1. 의존성 등록(pom.xml) 스프링 시큐리티 라이브러리를 포함 시킵니다.. 2018. 4. 8.
전자정부 표준프레임워크 - Portal Site 로깅(log4j 2) 설정하기 테스트용 프로젝트의 설치는 "전자정부 표준프레임워크 - Portal Site(Oracle) 템플릿 프로젝트 설치" 를 참조 하세요. 로깅은 애플리케이션의 디버깅과 문제해결을 위한 필수적인 도구라고 생각됩니다. 물론 개발중의 디버깅에는 System.out.println이 더 효과적인 때도 있지만, 운영중인 애플리케이션의 문제점을 찾기위해서는 반드시 필요한 도구 입니다. 전자정부 표준프레임워크의 Portal Site 템플릿을 설치해서 이것 저것 테스트 해보고 있는 중인데, 이번에는 로깅 설정 부분을 보도록 하겠습니다. 전자정부 표준프레임워크 3.6 Portal Site 템플릿에는 log4j 2 버전과 SQL문장 로깅을 위한 log4jdbc가 들어 있습니다. 여기서 알아볼 설정 방법은 일반적인 스프링 프레임웍.. 2018. 4. 8.
전자정부 표준프레임워크 - Portal Site에 메뉴관리, 코드관리 추가하기 Portal Site 템플릿을 사용해서 사이트를 만들어 보고 있습니다. Portal Site 에는 메뉴관리와 코드관리가 없습니다. 각각 특성에 맞게 템플릿을 만들었겠지만, 메뉴 정보를 DB에서 가져오는데, 메뉴관리는 없는게 좀 불편해서 메뉴 관리를 넣는게 좋을것 같습니다. Enterprise Business 템플릿에 메뉴관리와 코드관리가 있어서 그것을 가져와서 넣어 보겠습니다. 메뉴에서 eGovFrame -> Start -> New Template Project를 선택하고, 템플릿 선택창에서 Enterprise Business 를 선택해서 설치하면 되겠습니다. 실행되게 설정할 필요는 없겠습니다. 필요한 파일들만 Portal Site 프로젝트로 옮길 것이기 때문입니다. 1. 프로그램목록과 메뉴 정보를 데이.. 2018. 4. 8.
전자정부 표준프레임워크 - CKEditor 적용하기 전자정부 표준크레임워크의 Portal Site 템플릿 프로젝트에 HTML 위지윅 에디터인 CKEditor 를 적용해 보겠습니다. Portal Site 템플릿을 설치하고 보니 에디터가 적용이 되어 있지 않았습니다. 공통컴포넌트 다운로드에서 에디터로 검색해서 다운 받은 것은 htmlarea 였습니다. 그래서 all in one 템플릿 프로젝트의 게시판에 적용되어 있던 CKEditor를 Portal Site 템플릿으로 옮겨보았습니다. 이 글에서는 Portal Site 템플릿의 자유게시판 글쓰기에 CKEditor를 적용합니다. 1. 사전에 필요한 것들 - Portal Site : "전자정부 표준프레임워크 - Portal Site(Oracle) 템플릿 프로젝트 설치" 를 참고하여 설치합니다. - All in on.. 2018. 4. 8.
전자정부 표준프레임워크 - Portal Site(Oracle) 템플릿 프로젝트 설치 앞서서 all in one 템플릿 프로젝트와 Simple Homepage 템플릿 프로젝트를 Oracle 데이터베이스와 연동하여 설치해 보았습니다. 이번에는 Portal Site 템플릿을 역시 Oracle 데이터베이스와 연동하여 설치해보겠습니다. Portal Site 템플릿 프로젝트에서 제공되는 기능은 다음과 같습니다. - 사용자관리 - 권한관리 - 포털 초기화면 관리 - 포털 공지사항 관리 - 포털 FAQ관리 - 포털 행사참가 관리 Simple Homepage를 사용해서 경량환경에서 분석을 시작해보려고 했는데 너무 기능이 없었습니다. 사용자 관리, 권한관리 같은 부분이 있다고 되어 있었으나 실제 설치를 해보니 없었습니다. 메뉴에 링크만 없고 실제는 있었을 수도 있지만 그것을 찾고 있을 수는 없어서 Por.. 2018. 4. 4.
전자정부 표준프레임워크 - Simple Homepage(Oracle) 템플릿 프로젝트 설치 전자정부 표준프레임워크의 템플릿 프로젝트중의 하나인 Simple Homepage 를 Oracle 환경에서 실행되도록 설치해보겠습니다. 이 Simple Homepage 템플릿 프로젝트는 제목 그대로 단순홈페이지 기능 구현시 필수적인 부분만 사용 가능하도록 경량화된 실행환경을 제공합니다. 제공되는 기능은 다음과 같습니다. - 메인페이지 - 사용자관리 - 공지사항 관리 - 게시판 관리 - 안내 관리 템플릿 프로젝트를 설치하고 테스트한 환경은 다음과 같습니다. - OS : Windows 10 64bit - DB : Oracle 11g express edition - DB Tool : SQL Developer 4.1 64bit - Java : JDK 8 64bit - IDE : eGovFrameDev 3.6 64.. 2018. 4. 4.
스프링프레임웍에서 POI를 사용한 대용량 엑셀 다운로드 업무중에 데이터를 엑셀파일로 내려 받아야 할 경우가 많이 있습니다. 이럴때 데이터량이 적을 경우는 문제가 되지 않지만, 다운 받아야 할 데이터가 수만건에서 수십만건 이상 된다면 여러가지 문제가 발생합니다. 첫 번째로 엑셀 자체의 한계가 있습니다. xls 형식의 엑셀 파일은 한 시트에 최대 65,535행의 데이터를 가질 수 있습니다. xlsx 형태의 엑셀 파일은 한 시트에 최대 1,048,576행의 데이터를 가질 수 있습니다. 현업에서 쓰고 있는 엑셀 버전과 다운로드 되는 최대 데이터량에 따라 어떤 방식을 사용할지 결정하게 해야 하겠습니다. 두 번째로 엑셀 라이브러리를 사용해서 엑셀 파일을 생성할 때 메모리 상에서 작업을 하게 되면 대용량 다운로드 중에 메모리 부족상황에 빠지거나 시스템이 현저히 느려지는 .. 2018. 4. 4.
스프링프레임웍 ajax 파일업로드 - jQuery, FormData, jQuery Form Plugin 사용 이 글에서는 스프링 프레임웍 환경에서 ajax를 통한 파일 업로드 방법을 알아 보겠습니다. 서버와의 ajax 통신에는 jQuery를 사용하고 업로드를 위해서 FormData 객체를 사용하는 방법과 jQuery Form Plugin 을 사용하는 방법을 알아 보겠습니다. 전체소스는 하단에 첨부 되어 있습니다. jQuery Form Plugin 은 https://github.com/jquery-form/form 에서 다운로드 받을 수 있습니다. 두 가지 방법의 차이점은 다음과 같습니다. - FormData를 사용하는 경우 : Internet Explorer 10이상 부터 사용할 수 있습니다. - jQuery Form Plugin을 사용하는 경우는 IE10 이하에서도 사용할 수 있지만 문제를 일으키는 경우도 있.. 2018. 4. 4.
전자정부 표준프레임워크 및 all in one 샘플 프로젝트 설치 “전자정부 표준프레임워크”는 공공사업에 적용되는 개발프레임워크로써 현재 최신버전은 3.6.0 입니다. 3.6.0 버전의 개발환경은 JDK1.7 이상을 필요로합니다. IDE는 eclipse Mars 4.5로 되어 있으며 Spring Framework를 기반으로 하여 다양한 공통 컴포넌트가 제공되어 집니다. 이 글에서는 전자정보 표준프레임워크 3.6.0 개발환경을 설치하고, 같이 제공되는 all in one 프로젝트를 설치하여 실행해 보겠습니다. - JDK의 설치는 "윈도우에 JDK 8 설치하기" 를 참고 하세요. - 데이터베이스의 설치는 "Oracle 11g Express Edition 과 SQL Developer 설치하기" 를 참고하세요. - 다음 사이트에서 Tomcat 8.0 을 64-bit Windo.. 2018. 4. 4.
MyBatis에서 Oracle Procedure 및 Anonymous Block 실행하기 스프링 프레임워크, MyBatis, Oracle 환경에서 Oracle 의 저장 프로시저(Stored Procedure)를 호출하는 방법을 알아보겠습니다. 또한, PL/SQL 익명 블럭(Anonymous Block)을 호출 하는 예제도 보겠습니다. 익명 블럭은 저장 프로시저와 거의 동일한 방법으로 호출하게 됩니다. 이번에 사용하는 예제는 "스프링 프레임웍에서 MyBatis, Oracle 사용하기" 에서 사용한 환경을 기본으로 하여 작성되었습니다. 예제의 전체 소스는 하단에 추가해 두었습니다. 먼저 테스트에 사용할 저장 프로시저를 하나 만들어 보겠습니다. Oracle 저장 프로시저는 세 가지 타입의 파라미터를 받습니다. - IN : 저장 프로시저로 값을 보내는데만 사용됩니다. - IN OUT : 저장 프로시.. 2018. 4. 3.
실행 흐름에 끼어들기(Filter,Interceptor,AOP) 3 - AOP 실행 흐르에 끼어들기 마지막으로 AOP(Aspect Oriented Programming) 관점 지향 프로그래밍 입니다. 웹프로그램에서 하나의 요청의 실행 단계를 보면 공통적인 부분들이 존재합니다. 각 요청을 처리하는 비지니스 로직은 요청 마다 다르겠지만, 요청의 끝에서 작업 로그를 기록한다던지, 데이터베이스 트랜잭션을 요청의 앞에서 시작하고, 끝에서 커밋 또는 롤백을 한다던지 하는 코드 들이 있습니다. 이런 코드들은 모든 프로그램에 반복적으로 나타나게 됩니다. AOP 에서 이런 반복적으로 나오는 부분이 아래 이미지 에서 처럼 프로그램을 횡단하는 곳에 공통적인 코드가 나타난다고 해서 횡단적 관심사(Cross-cutting concern)라고 합니다. PGM1 PGM2 PGM3 +-----+ +-----+.. 2018. 4. 2.
실행 흐름에 끼어들기(Filter,Interceptor,AOP) 2 - Interceptor Java 웹프로그래밍에서 실행 흐를에 끼어들 수 있는 방법에 대해 알아보고 있습니다. 앞의 글에서 서블릿 필터에 대해 알아 봤습니다. 이번에는 스프링 프레임웍에서 사용할 수 있는 인터셉터에 대해서 알아보겠습니다. 필터와 인터셉터는 적용 시점이 다릅니다. 필터는 스프링 프레임웍과는 무관하게 지정된 자원에 대해 동작합니다. 스프링은 Dispatcher 서블릿으로 부터 시작됨으로 필터는 스프링 컨텍스트의 바깥에 존재 하게 됩니다. 인터셉터는 스프링의 Dispatcher 서블릿이 컨트롤러를 호출할 때 전, 후에 끼어듭니다. 그러므로 스프링 컨텍스트 내부에 존재하게 됩니다. 인터셉터는 여러개를 사용할 수 있으며, 실행 순서는 에 나오는 순서 입니다. 인터셉터를 주로 사용하는 곳은 로그인 체크, 권한 체크, 프로그.. 2018. 4. 2.
실행 흐름에 끼어들기(Filter,Interceptor,AOP) 1 - Servlet Filter Java 웹 프로그래밍에서 프로그램 흐름의 앞이나 뒤에 공통적인 처리를 추가할 수 있는 방법이 있습니다. 서블릿에서 지원하는 서블릿 필터와 스프링 프레임웍을 사용하면 쓸 수 있는 인터셉터, AOP 가 있습니다. 먼저 Servlet Filter에 대해 알아 봅니다. Servlet Filter 는 Servlet Specification 2.3 부터 지원합니다. 필터가 동작하도록 지정된 자원의 앞단에서 요청 내용을 변경하거나 여러가지 체크를 수행할 수 있습니다. 또한 자원의 처리가 끝난 후 응답 내용에 대해서도 변경하는 처리를 할 수 있습니다. 1. web.xml 에서 필터를 등록합니다. /WEB-INF/web.xml 파일 입니다. firstFilter com.tistory.pentode.filter.Firs.. 2018. 4. 2.
Spring Framework 메세지 국제화(다국어 지원) 사용하기 스프링 프레임웍에서 다국어 지원기능을 사용해 보겠습니다. 기본적으로 텍스트로 저장되는 properties 파일을 언어별로 만들어서 사용합니다. 이번에 해볼것은 다음과 같습니다. 1. 메세지 프로퍼티 파일을 작성합니다. 2. 스프링프레임웍에서 사용할 수 있도록 설정을 합니다. 3. 언어를 변경할 수 있도록 구현합니다. 4. 자바코드과 jsp 코드에서 다국어 메세지를 사용하는 방법을 알아봅니다. 파일구조는 다음과 같습니다. /WEB-INF/messges 폴더 아래에 메세지를 담은 파일이 있습니다. message.properties 파일은 기본 파일 입니다. 언어가 맞지 않으면 이것이 선택되어질 것입니다. message_ko.properties 파일은 한국어 메세지 파일 입니다. message_en.prope.. 2018. 4. 2.