Framework
-
데이터 작업시에는 반드시 필요한 트랜잭션 처리가 되어야 합니다. 오늘 포스팅할 내용은 스프링에서 트랜잭션 설정하는 방법입니다. 참고로 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. -
Spring + MyBatis 환경에서 개발하다보면 xml 파일을 수정할 때마다 서버를 재실행해주어야하는 불편함을 느끼셨을 겁니다. 아마도 가장 큰 불편함은 특정 페이지를 개발하다가 서버를 재실행하면 세션이 끊겨 다시 그 페이지로 가는 과정(+또는 행동)을 거쳐야하는 게 아닐까 싶습니다. 본 포스팅에서는 xml 파일 수정시 서버의 재실행없이 반영되게 하는 방법을 정리해보았습니다. ※ 테스트 환경 jdk 1.8 Eclipse 2019-06 Spring Framework 4.3 MyBatis 3.4.6 MariaDB 설정을 하기 앞서 Class 파일이 필요하다. 아래 소스를 원하는 패키지 경로에 추가한다. RefreshableSqlSessionFactoryBean.java package com.planm.u..
[Spring Framework]MyBatis 서버 재실행없이 XML 적용하기(RefreshableSqlSessionFactoryBean) 2020. 12. 2. -
운영 서버에 스케쥴러가 병렬로 작업되는 현상이 발생했다.로컬에서 정상적으로 돌던 것이 왜 그러는지 의아했다. 다시 삽질이 시작됐다....구글링을 해본 결과 비슷한 증상을 겪은 이들이 더러 있었다.검색 결과, 원인은 2가지로 유추할 수 있었다. 1. Tomcat 설정2. Spring 설정 결과적으로 운영 서버에 돌고 있는 Tomcat - server.xml의 Host 설정을 변경해주어 해결되었다.원인은 하나의 Host에서 appBase와 docBase가 같은 경로를 바라보고 있었던 것이 문제였다. Tomcat에서 동일한 Web Application Context가 두 개가 작동하던 것. [변경전] [변경후] 참고로 Spring 설정의 경우 @Component 어노테이션이 등록이 되어 있는 상태에서 con..
[Error]@Scheduled 중복 현상 2020. 8. 13. -
지금까지 경험한 바로 클라이언트단에서 파일 업로드를 하기 위해서 사용한 방법은 두가지가 있었습니다. Form-Submit을 이용한 방법과 Javascript-Ajax를 이용한 방법입니다. 오늘 포스팅할 내용은 자바스크립트를 이용한 파일 업로드입니다. Ajax와 FormData를 이용해 비동기 방식으로 서버측에 파일을 보내보도록 하겠습니다. FormData FormData는 자바스크립트에서 제공해주는 객체로 key와 value로 데이터를 append/parsing 할 수 있다. 파일을 담는 과정은 아래에서 보도록 하자. 참고로 FormData를 사용할 때, IE는 버전 10 이상에서만 가능하다고 한다. 스프링은 설정이 반이라고 생각하는데 여기서도 사실 설정이 반이다. 1) 먼저, 파일 업로드를 위한 dep..
[Spring Framework]Ajax + FormData를 이용한 파일 전송 2020. 4. 7.