Framework/Spring
-
JNDI 설정시에 단위테스트하는 방법을 소개합니다. WAS 영역에 DataSource를 설정하고 JNDI 방식을 이용하고 있다면 단위테스트 수행시 별도의 설정이 필요합니다. JNDI는 WAS 영역에 설정된 DB Connection 객체에 접근하기 위해 사용되는 기술입니다. 때문에 단위테스트를 진행할 때는 서버를 구동시키지 않기 때문에 context 설정 파일을 읽어도 이를 찾지 못하는 현상이 발생합니다. 설정 방법에 들어가기 앞서, 테스트 타겟은 아래와 같습니다. 테스트 단위 Controller : CafeController Method : getMenu() CafeController.java @RequestMapping(value = "/cmp/getMenu.ajax", method = { Reques..
[JUnit]JNDI 설정시 단위테스트 2021. 8. 23. -
스프링 시큐리티 인증 절차를 커스터마이징하는 과정을 소개합니다. 본 과정은 패스워드 암호화 작업시 반드시 필요한 작업인 것 같습니다.전체 소스는 GitHub에서 확인하실 수 있습니다.※ 작업환경Spring SecurityMyBatisTomcat9MariaDB기존에 로그인 인증 처리는 xml 파일 설정에 의해 되고 있습니다.( 태그)(변경전)security-context.xml 스프링 시큐리티의 인증 절차를 담당하고 있는 인터페이스가 있습니다.바로 AuthenticationProvider 입니다.해당 인터페이스를 구현한 구현체 클래스를 만들어 사용하면 DB에 저장되어 있는 패스워드(암호화되어 있고, 복호화는 불가능)와 로그인시 입력한 패스워드를 비교하여 인증을 처리할 수 있습니다. Auth..
[Spring Framework]Spring Security 인증 절차 커스터마이징 2021. 8. 3. -
이전 글에 이어 이번엔 aop를 이용해 로그를 기록하는 방법을 포스팅합니다. 테스트 코드 구조는 이전 글에서 참고해주세요.(Controller, Service, DAO, VO 등) AOP에서 공통 기능 모듈을 Aspect라고 정의합니다. Aspect는 기능을 정의한 Advice와 Advice가 적용될 Pointcut을 통해 실행됩니다. Advice가 실질적으로 기능이 구현된 구현체인 것이며, Advice는 Aspect가 Advice의 기능을 언제 실행할 지를 정의합니다. 그리고 기능이 적용될 대상을 Pointcut으로 설정합니다. 테스트 케이스는 데이터 저장 전과 후로 나누어 진행했습니다. 1. 데이터 저장 전 1) Advice를 정의할 클래스를 생성합니다. package com.study.util; i..
[Spring Framework]AOP를 이용한 Log 기록하기 2021. 2. 21. -
데이터 작업시에는 반드시 필요한 트랜잭션 처리가 되어야 합니다. 오늘 포스팅할 내용은 스프링에서 트랜잭션 설정하는 방법입니다. 참고로 Spring + MyBatis 설정은 되어있는 상황입니다. 테스트 환경 JDK 1.8 Spring 4.3.14 Tomcat 9.0 MariaDB 트랜잭션(Transaction) 트랜잭션의 핵심은 작업단위이다. 하나의 트랜잭션은 하나의 작업단위로 처리되어야 하는데, 쉽게 얘기하자면 추가(Insert)와 삭제(Delete)라는 작업이 하나의 작업으로 묶여있다면 두 작업은 모두 성공하거나 실패되어야 한다는 것이다. 작업이 정상적으로 종료되었다면 영구적으로 저장(Commit)되어야 하고 잘못되었다면 되돌려야 한다(Rollback) Java jdbc를 사용할 때는 커넥션 객체의 s..
[AOP]Transaction 설정 2021. 2. 17. -
웹 개발을 할 때 보안은 중요한 요소입니다. 오늘 포스팅할 내용은 웹 취약점 공격 방법의 일종 중 하나인 XSS를 방어하는 방법에 관한 것입니다. 테스트 환경 JDK 1.8 Spring 4.3.14 Tomcat 9.0 XSS(Cross Site Scripting) XSS는 웹 어플리케이션에 악의적으로 스크립트를 삽입해 공격하는 기법을 말한다. 만약 웹 어플리케이션에서 데이터를 서버로 저장할 때(게시판에 글을 쓴다던지. 회원 정보를 수정한다던지) 데이터를 검증하지 않거나 XSS에 대한 방어 대비가 없다면 스크립트가 포함된 데이터가 저장되어 유저로 하여금 원치 않는 스크립트를 실행시킬 수 있다. 이러한 방식의 위험성은 일반적으로 자바스크립트에서 발생하지만 VB 스크립트, Active X등과 같은 동적 데이터..
[Spring Framework]Lucy-xss-filter-servlet 적용하기 2021. 2. 9. -
스프링에서는 예외 처리를 전역으로 할 수 있는 기능을 제공합니다. 오늘 포스팅할 내용은 스프링 어노테이션 중 하나인 @RestContollerAdvice를 이용한 예외 처리에 관한 것입니다. ※ 테스트 환경 JDK 1.8 Spring 4.3.14 Tomcat 9.0 @RestControllerAdvice @RestControllerAdvice는 @ControllerAdvice와 @ResponseBody가 더해진 어노테이션이다. @ControllerAdvice는 예외 처리를 View로 응답하는 경우 사용할 수 있고 REST 요청에 대한 처리가 필요한 경우(일반적으로 JSON 형식의 데이터) @ResponseBody가 더해진 @RestControllerAdvice를 사용하면 된다. 예외를 잡아내기 위해서 @..
[Annotation]@RestControllerAdivce / 스프링 예외 처리 2021. 2. 6. -
엑셀, 워드와 같은 Office 포맷을 다루고 싶다면 Apache POI를 이용할 수 있습니다. 오늘 포스팅에서는 Office 중 엑셀을 자바 언어로 쓰는 방법을 소개합니다. 구글에 많은 자료가 있으니 자료 중 하나로 참고해주세요.Apache POI아파치 재단에서 제공하는 라이브러리로서 엑셀(.xls, .xlsx) 워드(.doc, .docx), 파워포인트 등과 같은 Office 파일 포맷을 자바 언어로 읽고 쓰기가 가능하도록 지원해줍니다.그럼 이제 Apache POI를 이용해서 어떻게 엑셀을 쓸 수 있는지 알아보겠습니다. 먼저 pom.xml에 Apache POI를 추가합니다. 비교적 최신 버전 중 가장 사용량이 많아보인 4.1.2 버전으로 테스트했습니다. pom.xml org.apache.poi ..
[Spring Boot]Apache POI를 이용한 엑셀 다루기 2021. 2. 1. -
개인프로젝트 진행 중 테스트 서버에 프로젝트 배포 후 multipart 타입으로 되어 있는 페이지가 정상 작동하지 않는 현상이 발생했다.(저장시 에러) org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.lang.IllegalStateException: 어떤 multi-part 설정도 제공되지 않았기 때문에, part들을 처리할 수 없습니다. at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipar..
[Error]Multipart 사용시 참고(404 에러) 2020. 12. 9.