본문 바로가기

반응형
SMALL

Server/Spring

(24)
[우당탕탕 개발일지] @RequestParam, 쿼리 값 선택적으로 받아오기 쿼리 값을 받아오려고 @RequestParam 을 썼다. 하지만 값이 들어오지 않으면 무조건 400 에러를 뱉었다. null 처리도 했는데 왜 ??!? 찾아보니까, @RequestParam 은 기본적으로 required=true로 되어 있다고 한다. 그 말은? 쿼리 값을 무조건 받아와야 하는 것 ~.~ 그래서 @RequestParam(value="{칼럼명}", required=false) 로 바꿔주니까 쿼리 값을 선택적으로 받아 올 수 있었다. 야호! @GetMapping("/api/v1/books") public List getAllBooks(@RequestParam(value = "status", required = false) String status) { if (StringUtils.isEmpty..
[우당탕탕 개발일지] String to LocalDateTime String으로 받아 온 날짜를 LocalDateTime으로 변환 시켜 사용해야했다. 그런데 어떻게 ..? 찾아보니까 LocalDateTime으로 변환시키려면 Formatting을 따로 만들어야 하고 시간도 입력값으로 넘겨줘야 했다. (오마이갓) 그래서, 1. String -> LocalDate 2. LocalDate -> LocalDateTime 위와 같은 과정을 거쳤다. 먼저 String에서 LocalDate로 타입을 변환시키는 것은 간단했다. 예를 들어, "2022-11-26" 이라는 문자열이 있으면, LocalDate date = LocalDate.parse("2022-11-26", DateTimeFormatter.ISO_DATE); 위와 같은 방법으로 LocalDate 타입으로 변환 시킬 수 있..
[우당탕탕 개발일지] HTML : href, delete method Thymeleaf의 href html의 href를 통해서 "voucher/{voucherId}" url로 매핑시키고 싶었다. 그러기 위해선 th:href="@{..}" 형식으로 매핑시켜야 하고, voucherId 값을 가져오기 위해서는 "*{voucherId}" 형식이 필요했는데, 그래서 th:href="@{voucher/*{voucherId}}"로 써냈더니 무슨 이상한 ... voucher/*alkdjalkdfj 과 같이 *이 붙어서 나오는 것 ㅠㅠㅠ 딱!! voucherId 값만 대입하고 싶어서 찾아봤다! th:href="@{${'/voucher/'+voucher.voucherId}}" 형식으로 해결했다 :D 값을 대입하고 싶으면 "@{${'[문자열]'+[값]}}" 형식으로 쓰자 ,,, 끄적,,, R..
[우당탕탕 개발일지] 스프링 테스트용 스키마 및 테이블 추가 클론코딩을 하다가 테스트 테이블이 생성되지 않는 현상이 발생했다. 암만 계속 돌려도 테이블이 생성이 안됐다. embeddedMysql = EmbeddedMysql.anEmbeddedMysql(config) .addSchema("test-order_mgmt", ScriptResolver.classPathScripts("schema.sql")) .start(); embeddedMysql = EmbeddedMysql.anEmbeddedMysql(config) .addSchema("test-order_mgmt", ScriptResolver.classPathScript("schema.sql")) .start(); 차이점을 아시겠나요? 메소드를 잘못 썼다. classPathScript를 classPathScript..
[우당탕탕 개발일지] 절대 URI인 [http://java.sun.com/jsp/jstl/core]을(를), web.xml 또는 이 애플리케이션과 함께 배치된 JAR 파일 내에서 찾을 수 없습니다. 제목과 같은 오류가 발생했다. 비상 비상!! 강의를 재탕도 해보고, 강의 자료 소스코드를 고대로 갖다 박아도 저 에러는 사라지지 않았다 ㅠㅠ 그래서 구글링을 해보니 jsp 문제였다. 위 태그가 있는데, WEB-INF/lib 에는 해당 .jar 가 없어서였다. ㅎㅎㅎㅎ ... 근데 jstl 의존성을 추가하고 maven으로 돌렸는데도 왜 jar 추가가 되지 않았을까 ..? javax.servlet jstl 1.2 있으나마나잖아,,, ㅋㅋㅋㅋㅋ큐ㅠㅠㅠㅠㅠㅠ 아무튼 그래서 여러 구글링 끝에 해결방법을 찾아냈다. 1. 해당 .jar가 없다. 2-1. 위 태그 한 줄을 뺀다. 2-2. 해당 .jar을 WEB-INF/lib 에 수동으로 갖다 넣는다. 말 그대로, http://java.sun.com/jsp/jstl/c..
[우당탕탕 개발 일지] MySQL, JDBC 연결 아아아... "No suitable driver found for 어쩌고,, " 오류가 떠버렸다 ㅇㅁㅇ !! 오늘! 인텔리제이에서 MySQL 로 JDBC 연결해서 사용하는 법을 배웠는데 ~.~ 과제 하자마자 바로 막혀버렸다. 하하하. 조금 낑낑대다가 원인을 찾았다. 왜냐면 pom.xml 파일에 의존성을 추가하지 않았기 때문이지 ㅋㅅㅋㅅㅋ mysql mysql-connector-java 8.0.31 runtime .. 잊지 말고 넣어주자 다행히 오늘은 짧은 삽질 >_0
[TIL] 직렬화(Serialization) - ObjectOutputStream, ObjectInputStream, 객체를 파일에 저장하다. 바우처 관리 시스템을 만들어보는 과제를 진행하면서, 프로그램이 종료 및 재실행 후에도 저장된 객체 정보를 불러와야 했기에 객체를 파일에 저장하는 방법이 필요했다. 그래서 구글링으로 공부해봤다. ㅇㅅㅇ 특정 클래스를 객체화 하여 파일이나 네트워크로 write 하는 것을 직렬화(Serialization) 라고 한다. 반대로, write 되어 있는 객체를 읽어올 때는 역직렬화(Deserialization) 한다고 한다. 클래스 구현 class Voucher implements Serializable { private UUID voucherId; private long amount; private long discount; ... } 우선 클래스에서 Serializable 을 구현하여 직렬화가 가능한 클래스로 ..
[TIL] Life Cycles 배웠다. 생명주기. 객체가 생성되고 소멸되는 시점에 호출되는 콜백 함수라고 한다. 🐶 생성 생명주기 콜백 1. @PostConstruct @PostConstruct public void method1 () { // 객체가 생성되는 시점에 호출 } @PostConstruct 어노테이션을 추가한 메소드는 관련 객체가 생성될 때 호출 및 실행된다. 외부 라이브러리와 연동되지 않는다. 2. afterPropertiesSet() public class className implements InitializingBean { @Override public void afterPropertiesSet() { // 실행 함수 로직 } } InitializingBean 을 구현하여, afterPropertiesSet() 메..

반응형
LIST