본문 바로가기

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

spring-test - 테스트 프로젝트 및 테스트 케이스 기본구조 스프링프레임워크로 만들어질 웹애플리케이션을 spring-test 라이브러리를 사용하여 테스트를 하는 방법을 알아 봅니다. spring-test는 스프링프레임워크 3.2부터 지원되며, 스프링 MVC 컨트롤러에 대한 단위테스트를 지원합니다. 예제로 사용할 프로젝트를 전자정부표준프레임워크 3.6에 있는 템플릿을 사용해 봅니다. 1. 예제 프로젝트 만들기 - 전자정부표준프레임웍 3.7을 사용합니다. "전자정부표준프레임워크 3.7 설치하기" 를 참조하세요. 1.1. File -> New -> eGovFrame Web Project를 선택합니다. 1.2. Project name과 Maven Setting의 Group ID에 "spring_test" 를 입력합니다. Target Runtime은 Apache Tomca.. 2018. 5. 1.
전자정부표준프레임워크 3.7 설치하기 오랜만에 전자정부표준프레임워크 사이트에 들어가보니 몇가지 변화가 있었습니다. 첫 번째는 전자정부표준프레임워크 새 버전이 릴리즈 되었다는 것입니다. 2018년 2월 28일 3.7 버전이 릴리즈 되었습니다. 두 번째는 2018년 4월 30일부터 회원 정보를 더이상 수집하지 않고, 회원 가입없이 모든 기능을 사용할 수 있도록 한다는 것입니다. 기존의 회원정보는 4월 29일 모두 삭제된다고 합니다. 로그인 없이 사용 가능한게 이제 몇일 남지 않았지만, 아직까지는 로그인 해야 새 버전을 다운로드 받을 수 있었습니다. 나는 64bit 운영체체를 사용하므로 eGovFrameDev-3.7.0-64bit.exe(1.34GB) 파일을 다운로드 받았습니다. 전자정부표준프레임워크 3.7의 주요 변경사항은 다음과 같다고 합니다.. 2018. 4. 27.
Hibernate Bean Validator 사용하기(2) - 그룹과 커스텀 아노테이션 앞에서의 기본 사용법과 이어지는 내용으로 다음과 같은 내용을 알아보겠습니다. 예제의 전체 소스는 글의 끝에 첨부해 두었습니다. - 빈 객체가 멤버로 객체를 가지거나 컬렉션을 가질 경우 모두 검증하기 - 객체의 멤버들을 그룹을 지정하여 특정상황에 특정 멤버만 검증하기 - 커스텀 검증 아노테이션 만들기 1. 테스트용 폼 만들기(personForm.jsp) ... 주민번호 비밀번호 ... ... ... - 주민번호는 검증을 위한 커스텀 아노테이션을 만들어 봅니다. - 비밀번호는 그룹을 사용하여 특정 상황에서만 검증하도록 하여 봅니다. - relations[0] 으로 된 부분은 멤버로 객체 리스트를 가지는 부분으로 리스트 전체를 검증 합니다. - recommender 부분은 멤버로 가지는 하나의 객체의 멤버를 .. 2018. 4. 21.
Hibernate Bean Validator 사용하기(1) - 기본 사용법 폼에서 입력한 값을 클라이언트 측에서는 자바스크립트를 사용해서 유효성을 검증하고 서버측에서도 검증을 하여야 합니다. 서버측에서 폼에 입력된 값을 검정하는데 사용되어질 수 있는 Hibernate Bean Validator 를 사용하는 방법을 알아봅니다. 1. pom.xml 파일에 의존성을 추가합니다. org.hibernate.validator hibernate-validator 6.0.8.Final 2. 메세지 다국어 처리- 기본적인 다국어 설정은 "Spring Framework 메세지 국제화(다국어 지원) 사용하기"를 참조하세요.- root-context.xml 파일에 Validator가 messageSource를 사용하도록 설정합니다. - servlet-context.xml 파일에 Controller가.. 2018. 4. 21.
스프링프레임워크 에러페이지 만들기 프로그램 수행중에 예기치 못한 예외가 발생하면 에러페이지를 보여주게 됩니다. WAS 의 기본 에러페이지는 대부분 코드중의 예외 라인과 상세한 스택 추적 정보를 보여주게 되므로 운영 환경에서는 보안상 문제가 됩니다. 그러므로 대부분 자체적인 에러 페이지를 제작하여 보여주게 됩니다. 여기서는 서블릿에서 기본적으로 제공하는 에러페이지 설정과 스프링 프레임워크에서 지원하는 에러페이지 설정부분을 알아 봅니다. I. web.xml 에서 에러페이지 설정하기 소스파일명과 Exception 이 발생한 라인번호, 예외 메세지, 스택 추적 정보가 보여집니다. 개발시에는 유용하지만 운영시에는 보안상 문제가 됩니다. 1. Tomcat에서 에러페이지 설정이 없을 경우 2. web.xml 파일에 에러페이지 설정하기 예외 타입별로,.. 2018. 4. 21.
도메인 이전시 기존 도메인의 모든 URL을 새 도메인으로 리다이렉트하기 Servlet 을 사용하는경우 도메인 이전시에 기존 도메인의 즐겨찾기 되어 있는것과 같은 어떤 URL에서 접근하더라도 새 도메인으로 리다이렉트하는 방법을 알아봅니다. 사이트 도메인이 변경되면 기존 도메인은 새로운 도메인으로 리다이렉트 되도록 하는게 일반적입니다. 이때 영구 이전을 나타래는 301 HTTP 응답코드를 사용하는게 좋습니다. 이때 보통은 index 페이지에만 리다이렉트 처리를해서 이전 도메인만으로 들어오면 리다이렉트 되지만 사이트내의 특정 페이지들을 즐겨찾기 해두고 사용하던 곳은 페이지를 찾지 못하는 상황이 됩니다. Servlet 을 사용하는 경우 Filter 를 사용하여 어떤 URL의 요청이 들어오더라도 새 도메인으로 리다이렉트 되도록 만들어 보겠습니다. 1. 요청을 특정 URL로 리다이렉트.. 2018. 4. 21.
Apache PDFBox 라이브러리를 사용해서 PDF 파일 만들기 Apache PDFBox 라이브러리를 사용해서 PDF 파일을 생성하는 방법을 알아보겠습니다. 간단히 이미지 그리기, 글 쓰기, 라인 그리기 기능을 알아 봅니다. 예제는 스프링 프레임웍을 사용하는 웹프로그램으로 작성했습니다. PDFBox 는 Java 라이브러리이므로 Java 애플리케이션에서 사용할 수 있습니다. Apache PDFBox 공식 사이트는 https://pdfbox.apache.org/ 입니다. 현재 최신 버전은 2.0.8 입니다. 1. PDFBox를 사용하기 위해서 pom.xml 파일에 의존성을 추가합니다. org.apache.pdfbox pdfbox 2.0.8 2. 문서를 생성하고, 다운로드하기 - PDDcoument 객체의 save() 메소드에 출력 스트림을 인자로 주어 출력합니다. // .. 2018. 4. 20.
Servlet/jsp, PHP, Javascript로 리다이렉트하기(HTTP 응답코드 지정) 웹프로그램시 사이트의 도메인이 바뀌거나 어떠한 조건에 의해 특정 페이지로 리다이렉트를 해야할 경우가 있습니다. 이번에는 Servlet/jsp, PHP, Javascript, HTML meta 태그등을 사용하여 리다이렉트를 하는 방법을 알아 봅니다. 리다이렉트시 나타나는 HTTP 응답코드는 301, 302, 200 등이 있을 수 있습니다. 301은 영구적으로 URL이 변경되었음을 나타내는 응답코드이고, 302 는 일시적으로 URL이 변경되었음을 나타내는 것입니다. 자바스트립트나 메타 태그를 이용하여 리다이렉트하면 응답코드가 200이 나옵니다. 정상적인 요청에 대한 응답과 동일합니다. 자바스크립트를 이용한 리다이렉트는 검색로봇이 페이지 수집을 하는데 크롤링을 어렵게 하는 경우가 있다고 합니다. 자주 사용하는.. 2018. 4. 20.
유틸리티 클래스의 정적 메소드로 커스텀 EL 함수 만들기 jstl의 functions EL 함수는 jsp 페이지에서 간편하게 사용할수 있는 fn:replace(), fn:length(), fn:substring() 등의 함수를 제공합니다. 기본적으로 제공되는 기능외에 다른 기능들이 필요하다면 정적 메소드를 가지는유틸리티 클래스를 만들고, 이 정적메소드를 호출하는 커스텀 EL 함수를 만들어서 사용할 수 있습니다. 예제의 전체소는 글 하단에 첨부되어 있습니다. 1. 테스트용 정적 메소드 예제로 만들어 볼 StrUtil 클래스의 replaceAll() 함수는 그냥 String 객체의 replaceAll() 함수를 호출하도록 되어 있습니다. package com.tistory.pentode; public class StrUtil {public static String.. 2018. 4. 20.
JSTL - jsp 페이지에서 jstl을 사용하여 HTML tag 제거하기 웹프로그래밍에서 출력되는 문자열에서 HTML 태그를 제거하고 순수한 문자열만 출력하고 싶을때가 있습니다. jsoup과 같은 라이브러리를 이용해서 서블릿단에서 처리한 다음 jsp단에서 출력해 주는게 일반적이지만 간단히 jsp 페이지에서 처리하는게 필요할 때도 있지 않을까 생각됩니다. 1. 테스트용 예제입니다. 컨트롤러에서 데이터를 jsp 페이지로 보냅니다. HomeController.java 파일 입니다. @RequestMapping(value = "/home.do", method = RequestMethod.GET) public String home(Locale locale, Model model) { logger.info("Welcome home! The client locale is {}.", loc.. 2018. 4. 20.
Spring + Quartz 주기적으로 작업 실행하기 SpringFramework 4.3.4 버전에서 Quartz 2.3.0 라이브러리를 사용해서 주기적으로 작업을 실행하는 방법을 알아보겠습니다. 전체 소스는 하단에 첨부해 두었습니다. 앞에서 계속 사용해오던 소스라 DB 연결, 엑셀 다운로드 등의 소스가 같이 있는데 필요 없는 부분은 주석처리하고 테스트 해보시면 되겠습니다. 1. pom.xml 파일에 quartz 라이브러리의 의존성을 추가합니다. org.quartz-scheduler quartz 2.3.0 org.springframework spring-context-support 4.3.4.RELEASE 2. 주기적으로 실행될 서비스 메소드를 생성합니다. com.tistory.pentode.service.BoardService.java파일에 메소드 인터페.. 2018. 4. 20.
전자정부표준프레임워크 Tomcat + jndi로 dataSource 사용하기 전자정부표준프레임워크에서 Tomcat 을 사용할때 dataSource를 Tomcat에 설정된 dataSource를 jndi 로 가져와서 사용하는 방법을 알아 봅니다. 이 예는 전자정부표준프레임워크 비즈니스 템플릿에 MySQL을 사용한것 입니다. 1. Tomcat의 server.xml 파일의 Global 리소스 영역에 데이터베이스 연결을 정의합니다. ... 2. Tomcat 의 context.xml 파일에 를 정의합니다. ... 3. 전자정부표준프레임워크의 context-datasource.xml 파일에 기존의 데이터소스를 주석 처리하고, jndi 데이터소스를 지정합니다. 이제 모든 설정이 완료되었습니다. DBCP 의 각 설정 항목들에 대해서는 "전자정부 표준프레임워크 - dataSource (DBCP) .. 2018. 4. 20.
POI를 사용하여 엑셀 출력하기 스프링프레임웍에서 아파치 POI 라이브러리를 사용해서 엑셀을 출력해 봅니다. 이번 예제는 "스프링 프레임웍에서 MyBatis, Oracle 사용하기" 에서 사용한 게시판 목록을 출력하는 것을 이용하여 엑셀로 출력하도록 구성한 것입니다. 전체 예제소스를 글 하단에 첨부하였습니다. 테스트를 위한 데이터베이스 생성 관련해서는 이전 글을 참조하시기 바랍니다. 1. POI 라이브러리 의존성을 pom.xml 파일에 추가하기 - POI 3.17 버전을 사용합니다. org.apache.poi poi 3.17 2. 엑셀 출력 작성하기 - 컨트롤러에 엑셀 출력 부분을 작성합니다. @RequestMapping(value = "/excelDown.do")public void excelDown(HttpServletRespons.. 2018. 4. 20.
스프링 시큐리티에서 중복 로그인 방지 및 세션 고정 공격 방지 스프링 시큐리티를 사용하면 동일한 아이디로 중복 로그인 방지 하는것을 간단히 구현할 수 있습니다. 또한 세션 고정 공격을 기본적으로 방어하도록 되어 있습니다. 이 두 가지를 같이 이야기 하는 이유는 두 가지가 같은 태그로 설정이 되기 때문입니다. 먼저 중복 로그인을 방지하는 방법을 알아보겠습니다. 예제 소스는 글 하단에 첨부하여 두었습니다. 이 예제는 "스프링프레임웍 - Spring Security(1) : 기본 설정" 글의 예제를 기본으로 하여 테스트 하였습니다. 스프링 시큐리티 설정파일인 /src/main/webapp/WEB-INF/spring/security-context.xml 파일의 부분에 다음을 추가합니다. 태그를 이용해서 중복 로그인 방지를 설정합니다. 각 속성의 의미는 다음과 같습니다. -.. 2018. 4. 20.
스프링프레임웍 다국어 메세지 프로퍼티 파일에 한글 바로쓰기 다국어 처리를 위한 메세지 프로퍼티 파일을 이클립스의 기본 에디터로 열어보면 다음과 같이 한글이 깨어져 보입니다. 실제로 유니코드로 저장되어 있는것입니다. fail.common.msg=\uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4! 예전에는 한글로 파일을 만들고, 변환 프로그램을 이용해서 서로 변환하여 사용했었습니다. 이제는 유니코드를 바로 보고 편집할 수 있는 이클립스 플러그인들이 나와서 편리하게 사용할 수 있습니다. 이런 플러그인을 통해서 위의 파일을 보면 아래 처럼 보이고, 바로 편집할수도 있습니다. fail.common.msg=에러가 발생했습니다! 이클립스에 유니코드를 지원하는 프로퍼티 에디터 플러그인을 설치하는 방법을 알아보겠습니다. 전자정부.. 2018. 4. 20.