HttpSessionListener를 이용한 중복 로그인 방지
Java/spring2024. 4. 30. 14:41HttpSessionListener를 이용한 중복 로그인 방지

프로젝트를 간단하게 진행하다 보니 중복 로그인에 관한 내용을 신경 쓰지 않고 있었다. Spring Security를 이용하면 수월하다고 하던데프로젝트에 Spring Security를 적용하지 않아서 급한대로HttpSessionListener를 이용하여 중복 로그인을 방지해 보았다.✅ SessionConfig@Slf4j@WebListenerpublic class SessionConfig implements HttpSessionListener { private static final Map sessions = new ConcurrentHashMap(); //중복로그인 지우기 public static boolean loginSessionidCheck(HttpSession session, String user..

Bean Validation
Java/spring2024. 2. 26. 14:34Bean Validation

Spring boot에서 검증 기능을 매번 작성하는 것은 번거롭다. 검증 로직의 대부분은 빈 값인지, 특정 크기를 넘는지 아닌지와 같은 매우 일반적인 로직이다. 이런 로직을 모든 프로젝트에 적용하도록 공통화하고, 표준화한 것이 Bean Validation이다. 의존성 주입 Bean Validation을 사용하기 위해서는 gradle에 의존성을 추가해야 한다. implementation 'org.springframework.boot:spring-boot-starter-validation' ✅ DTO @Data public class ItemSaveForm { @NotBlank(message = "상품명을 입력해주세요.") private String itemName; @NotNull(message = "가격..

Thymeleaf 스프링 통합과 폼
Java/spring2024. 2. 15. 16:24Thymeleaf 스프링 통합과 폼

Spring boot에 관련해서 조금 더 공부를 하다가 Thymeleaf에서 Form을 작성할 때 훨씬 수월하고 깔끔하게 작성할 수 있는 방식에 대해서 알게 되었는데 그냥 그렇구나 하고 넘어갈 뻔하다가 블로그에 조그마한 것이라도 정리하는 습관을 다시 들이기 위해 올리기로 했다. 상황 설명 쇼핑몰 서비스를 제공한다고 가정했을 때, 상품을 등록하는 과정에서 체크박스가 사용되는 경우가 많을 텐데 이것을 Spring boot와 Thymeleaf를 통합하여 간단하게 구현할 수 있는 방법을 알아보자 상품 @Data public class Item { private Long id; private String itemName; private Integer price; private Integer quantity; pr..

Ajax를 통해 파일과 Json 업로드 후 Controller로 받기
Java/spring2023. 5. 12. 17:40Ajax를 통해 파일과 Json 업로드 후 Controller로 받기

항상 Ajax를 통해 정보를 전송할 때 json만 전송하다 보니 파일과 함께 어떻게 보내는지 삽질을 좀 했다 하지만 늘 그랬듯이 삽질을 하고 내용을 정리하니 이게 이렇게 긴 시간을 잡아먹었어야 했는가 싶다 🟧 Ajax & Spring boot Controller ⏹️ Ajax const pdfFile = $("#pdfFile")[0].files[0]; const jsonFile = $("#jsonFile")[0].files[0]; const formData = new FormData(); formData.append("files", pdfFile); formData.append("files", jsonFile); formData.append("json", new Blob([JSON.stringify(da..

Spring boot Interceptor Ajax 체크 (Redirect 이슈)
Java/spring2023. 4. 5. 16:37Spring boot Interceptor Ajax 체크 (Redirect 이슈)

2023.03.30 - [Etc] - 타 도메인에 쿠키 생성하기 타 도메인에 쿠키 생성하기 ✅ 문제 직면 현재 개발하는 서비스에서 다른 사이트의 로그인 정보를 받아야 하는 상황 속에서 SSO (Single-Sign-On)를 활용하지 않아본인이 직접 API를 통해 사용자 정보를 입력 받고 Session을 생성해 magicmk.tistory.com 이전 포스팅에서 Interceptor를 통해 Session을 체크하는 로직을 구현했었는데 Session을 체크하는 것 자체는 문제가 없었지만 다른 부분에서 약간의 문제가 발생하였는데 Ajax를 통해 접근 시 Redirect가 안된다는 것이었다. 그래서 Interceptor에서 Ajax 요청인지를 체크하고 로직을 다르게 구현하였다. 🟧 Interceptor & Aj..

Spring boot RestAPI 파일 다운로드
Java/spring2023. 2. 10. 09:46Spring boot RestAPI 파일 다운로드

✅ Controller 로컬(서버)에서 가지고 있는 이미지를 클라이언트가 다운로드 받을 수 있도록 컨트롤러를 먼저 구현한다. /** * 이미지 다운로드 * @param elementId * @return */ @GetMapping("/imageDownload") public ResponseEntity imageDownload(@RequestParam String elementId) { File file = new File("C:/Temp/ECM/" + elementId + ".tif"); String path = "C:/Temp/ECM/"; // 이 부분은 ECM 엔진에서 이미지를 다운로드 받는 별도의 // 로직을 구현해뒀음 if(file.exists()) { path = path + elementId ..

Spring boot Controller Zip 압축 해제
Java/spring2023. 1. 25. 17:31Spring boot Controller Zip 압축 해제

회사 프로젝트를 진행하다가 MultipartFile로 전달받은 Zip 파일을 처리하는 방법을 알아보았다. Spring 게시판도 얼른 마무리 지어야하는데 회사업무 처리하는데 급급하다가 나태지옥에 빠져버려 아직도 손도 못대고 있다... 정신 차려야지 ㅠㅠ ✅Controller 우선 Controller에서 Zip 파일을 받아본다. @RestController public class IfElb008Controller { @PostMapping("/ifElb008") public Map scanImage(@RequestPart MultipartFile files) { return map; } } 평소와 같이 @RequestBody, @RequestParam을 사용하는 것이 아니라 @RequestPart를 사용하여..

Spring boot H2 DB 설정
Java/spring2022. 11. 10. 14:16Spring boot H2 DB 설정

Spring boot에서 DB를 무엇을 사용할까 고민하다 가장 간단한 방법인 H2 DB를 연동하였다. 우선 build.gradle에서 dependency를 설정해야 한다. dependency 설정 dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2databa..

image