본문 바로가기

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

스프링프레임워크 Java config로 MyBatis 사용하기 스프링프레임워크에 MyBatis + MySQL(MairaDB) 환경을 Java Config로 구성해 봅니다. 앞의 글 "Maven 웹 프로젝트에 스프링프레임워크 적용하기"에 추가하여 구성합니다. "스프링 프레임웍에서 MyBatis, Oracle 사용하기"에서의 xml 설정을 Java Config로 옮겨본 것입니다. 데이터베이스는 Oracle 대신에 MariaDB를 사용했습니다. 전체 소스는 글 하단에 첨부 했습니다. 1. pom.xml 파일에 필요한 의존성을 추가합니다. org.springframework spring-jdbc ${org.springframework-version} javax.servlet jstl 1.2 org.apache.commons commons-dbcp2 2.6.0 mysql m.. 2019. 3. 17.
Maven 웹 프로젝트에 스프링프레임워크 적용하기 Maven 웹 프로젝트에 스프링프레임워크를 적용해 보기로 했습니다. 혼자 해보는거니 될 수 있는 한 최신 버전으로 올려봅니다. 스프링프레임워크를 설정하고 시작하는 방법은 xml 을 사용하는 방법과 Java 클래스를 사용하는 방법이 있습니다. 여기서는 클래스를 사용하는 방법으로 적용해봅니다. "스프링프레임웍의 시동" 을 읽어보시면 도움이 되실것입니다. 앞의 "Maven 웹 프로젝트 서블릿 3.1로 업그레이드 하기" 에서 만든 예제에 추가해서 작성합니다. 전체소스는 글 하단에 추가해 두었으니 참고하시가 바랍니다. 1. pom.xml 파일에 프로퍼티를 추가합니다. 프로퍼티는 자주 사용하는 값을 미리 정의해두는 방법입니다. Java 버전은 1.8을 사용하고, 스프링프레임워크 5.1.5.RELEASE 버전을 사용.. 2019. 3. 13.
Maven 웹 프로젝트 서블릿 3.1로 업그레이드 하기 앞에서 작성한 "Eclipse에서 Maven 웹 프로젝트 만들기"는 기본 Maven 템플릿을 사용하는데 JDK 1.5와 서블릿 2.3으로 작성이 됩니다. 이것을 JDK 1.8에 서블릿 3.1 로 올려 봅니다. 1. JDK를 1.8로 변경합니다. 기존의 JDK 1.5를 제거하고 JDK 1.8을 추가합니다. JDK의 추가는 Preferences의 Installed JREs에서 추가해 두면 됩니다. 여러 버전의 JDK를 설치해 둘 수 있습니다. 컴파일러 설정을 1.8로 변경합니다. 프로젝트의 Preferences의 Java Compiler에서 "Enable project specific settings" 를 체크하고 "Use compliance from execution environment 'JavaSE-1.. 2019. 3. 10.
Eclipse에서 Maven 웹 프로젝트 만들기 Eclipse에서 Maven 템플릿을 이용해서 웹 프로젝트를 만드는 방법을 알아 봅니다. 만들어보면 스프링프레임웍을 사용하는 STS 나 전자정부프레임웍의 프로젝트 구조가 Maven 웹 프로젝트 구조와 유사하다는 것을 알 수 있을 것입니다. 1. 메뉴의 File -> New -> Project... 에서 Maven Project를 선택합니다. 2. 프로젝트의 저장위치는 기본값을 사용합니다.- Use default Workspace location 을 체크합니다. 3. 메이븐 템플릿중에서 maven-archetype-webapp을 선택합니다. 4. Maven 기본정보를 입력합니다.자신에게 맞는 정보를 입력하면 됩니다. 보통 Group Id는 도메인을 사용하고, Artifact Id는 프로젝트명을 사용합니다... 2019. 3. 6.
JSTL - <c:forEach>, <c:forTokens> 태그 사용법 는 List, 배열 요소를 순서대로 반복해서 처리할 수 있는 태그 입니다. 1. 이름 목록을 가진 ArrayList를 출력하는 예제 입니다. // 리스트를 만들어서 모델에 넣습니다. List nameList = new ArrayList(Arrays.asList("홍길동", "김철수", "박영희")); model.addAttribute("nameList", nameList); ${status.count} : 실행결과: 1 : 홍길동 2 : 김철수 3 : 박영희 2. 객체가 들어 있는 리스트를 출력하는 방법 입니다. 위 코드는 boardVO 객체의 getTitle() 메소드를 호출한 결과를 출력합니다. 3. Map 이 들어있는 리스트를 출력하는 방법 입니다. 위 코드는 boardMap 의 get("title.. 2019. 1. 11.
JSTL - <c:if>, <c:choose> 태그 사용법 jstl에서 조건에 따른 분기를 처리할 수 있는 태그로 와 가 있습니다. 1. 태그 test 속성내의 EL 의 결과가 참이면 실행됩니다. else 구문은 없습니다. 위의 코드는 변수 name의 값이 "홍길동" 이면 출력합니다. 태그에 사용될 수 있는 속성은 다음 세 가지 입니다. - test : 필수 속성으로 속성값으로 EL 비교식을 가집니다. - var : 조건 결과를 저장할 변수를 지정합니다. - scope : 조건 결과를 저장할 변수의 저장 scope을 지정합니다. 위 코드는 test 속성의 결과를 nameHong 변수 이름으로 session 영역에 저장합니다. 동일 세션의 다른 페이지에서 결과를 찾을 수 있습니다. 2. test속성에 사용될 비교 연산자 * eq(==) : 문자열 또는 숫자가 같으.. 2019. 1. 10.
JSTL - <c:set> 태그 사용법 태그는 EL에서 사용되어질 수 있는 Bean, Map등에 값을 설정을 하거나, 일반 변수를 생성해서 값을 할당 할 수 있습니다. 1. Bean에 값을 할당하는 방법 다음 빈을 예로 들어 보겠습니다. class Board { private String title; public void setTitle(String title) { this.title = title; } public String getTitle() { return title; }} 컨트롤러에서 model객체에 넣어서 JSP 에서 사용할 수 있습니다. model.addAttribute("board", new Board()); JSP에서 위의 Bean의 프로퍼티의 값을 변경하고 싶을 때 다음 처럼 사용합니다. 2. Map을 사용한 경우 model.. 2018. 12. 31.
스프링시큐리티에서 CSRF만 사용하기 전자정부표준프레임워크 또는 스프링프레임워크에서 인증은 별도로 구현하고, 스프링시큐리티의 CSRF 기능만 사용하도록 설정하는 방법을 알아봅니다. 테스트는 전자정부표준프레임워크 엔트프라이즈 포털 템플릿에서 했습니다. 스프링 시큐리티 설정파일은 contenxt-security.xml 파일 입니다. 다음과 같이 설정합니다. 기존의 스프링 시큐리티 간소화 설정은 모두 삭제 합니다. 가장 기본적인 설정만 합니다. 이제 태그를 사용하면 CSRF 토큰이 자동으로 삽입되는 것을 확인 할 수 있습니다. 단순 태그를 사용하여 토큰을 삽입하지 않고 로그인을 요청해보면 HTTP 4703 오류가 나는것을 확인할 수 있습니다. 전자정보표준프레임워크 템플릿의 경우에는 스프링시큐리티 인증이 기본으로 되어 있으므로 스크링시큐리티를 걷어.. 2018. 11. 19.
전자정부표준프레임워크 파일 업로드 크기 설정(feat. MaxUploadSizeExceededException) 전자정부표준프레임워크에서 파일 업로드 크기는 "context-properties.xml" 파일에 정의 되어 있습니다. 템플릿 사이트 설정에는 기본값으로 5MB가 설정되어 있는것을 알 수 있습니다. 필요에 따라 업로드 크기를 100MB 초과 해서 설정하면 MaxUploadsizeExceededException 예외가 발생합니다. org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size of 100000000 bytes exceeded; 업로드 파일 사이즈를 변경해야 할곳이 더 있습니다. 전자정부표준프레임워크는 스프링프레임워크를 기반으로 하고 있습니다. 파일 업로드를 처리하는 빈은 "multipartResolve.. 2018. 10. 16.
@SessionAttributes와 SessionStatus 사용하기(세션에 모델 객체 저장) 스프링프레임워크에서 @ModelAttribute또는 model.addAttribute()를 사용해서 프레젠테이션 계층으로 객체를 보낼 수 있습니다. 이때는 request scope에 객체가 저장 되므로 요청시에만 객체가 사용되어 집니다. @RequestMapping(value = "/sawon_list.do", method = RequestMethod.GET)public String sawonList(Model model) throws Exception { model.addAttribute("list", sawonService.selectSawonList()); return "sawon_list";} @RequestMapping(value = "/sawon_regform.do", method = Requ.. 2018. 8. 26.
스프링프레임워크 <form:form> 태그 사용법 스프링프레임워크의 JSP 기술중에 form taglib 가 있습니다. form 태그라이브러리를 사용하면 HTML 폼에 데이터를 바인딩하거나 에러메세지 처리등을 간편하게 할 수 있습니다. 스프링프레임워크 form 태그라이브러리를 사용하기 위해서는 먼저 다음 taglib 설정을 페이지 상단에 추가합니다. 1. 옵션 없이 사용했을 경우 기본값 호출 URL이 /offbyone/boardForm.do 라고 가정하고, 옵션 없이 사용한 경우 form 태그: 결과 HTML: - id 속성은 "command" 가 기본값입니다.- action 속성은 자기 페이지의 URL 입니다.- method는 POST가 기본입니다 2. commandName과 modelAttribute 옵션 commandName 과 modelAttri.. 2018. 8. 5.
JSP에서 지시자(Directive) 또는 태그라이브러리에 의한 공백 라인을 제거하는 방법 JSP 페이지에서 지시자와 태그라이브러리를 사용하면 최종 출력 HTML에 지시자 또는 태그가 사용된곳에 빈줄이 삽입되어서 페이지 소스를 보기 어렵게 하고, 페이지 용량도 늘어납니다. JSP 2.1에서 부터는 이 공백을 제거할 수 있는 방법을 제공해 줍니다. 1. page 지시자의 속성으로 trimDirectiveWhitespaces="true" 를 삽입합니다. page 지시자의 다른 속성들과 같이 사용할 수도 있습니다. 이 방식은 trimDirectiveWhitespaces 속성을 사용한 페이지에만 적용이 됩니다. 만약 include 되는 페이지가 있을 경우 각각의 페이지에 별도로 적용을 해야만 합니다. include되는 페이지에 적용을 하지 않는다면 그 include되는 부분만 공백이 나올 것입니다. .. 2018. 7. 24.
JSTL - <c:url> 태그 사용법 태그는 URL에 자동으로 Context Path 를 붙여주는 일을 합니다. 컨텍스트를 변경하더라도 URL을 수정할 필요가 없게 되는 것입니다. 이 태그는 jstl core 태그에 포함되어 있으므로 을 사용하려면 다음 tablib 지시자를 페이지 상단에 포함하여야 합니다. 일반적인 사용법을 다음과 같습니다. 웹애플리케이션의 컨텍스트 패스가 http://도메인/site/ 로 되어 있다면 위의 코드는 출력시 아래와 같이 변환됩니다. 태그를 사용할 때 생성된 URL의 끝에 jsessionid 가 붙을 경우를 주의해야 합니다. 컨텍스트 패스가 추가가 되므로 대부분의 경우 아래의 코드는 잘 동작합니다. 하지만 서버 설정에 때라 세션 아이디가 URL에 붙는 경우가 있습니다. 이런경우 위 코드는 출력이 다음과 같에 만.. 2018. 7. 20.
전자정부표준프레임워크 3.7 에서 CSRF 설정 방법 전자정부표준프레임워크에서는 Spring Security를 간편하게 설정할 수 있도록 간소화 설정을 제공하고 있습니다. 그런데 3.6 버전에서는 간소화 설정에서 CSRF 설정을 할수가 없어서 편법을 사용해야 했었습니다. 3.6버전에서의 CSRF 설정 방법을 다음글을 참조하세요. "전자정부표준프레임워크 3.6 Spring Security 설정 간소화에서 CSRF 설정하기" 전자정부표준프레임워크 3.7 에서는 CSRF 설정을 설정파일 내에서 할 수 있도록 바뀌었습니다. 기본설정은 CSRF를 사용하지 않는 것입니다. 설정파일은 /src/main/resources/egovframework/spring/com/context-security.xml 파일 입니다. 설정파일에 기본적으로 CSRF 설정부분은 포함되어 있지.. 2018. 6. 16.
전자정부표준프레임워크 폼 검증(Form validation)하기 전자정부표준프레임워크는 폼 검증에 Jakarta Commons Validator를 사용하고, 이것을 Spring Framework와 연동하기 위해서 spring-modules-validation 을 사용합니다.(https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte:ptl:security:jakarta_commons_validator) Jakarta Commons Validator는 각종 검증 규칙을 xml 파일로 작성합니다. 이 규칙에 따른 검증은 Java 클래스 및 Javascript로도 제공되어 서버측 검증과 클라이언트측 검증 모두에서 사용되어 집니다. 이글의 예제는 전자정부표준프레임워크의 eGovFrame Web Project에서 생성된 샘.. 2018. 5. 2.