Category 34

타임리프 th: fragment 사용시 css 깨지는 문제

해당 페이지는 PostController를 통해 “/post/createPostForm” 뷰로 이동하면 CSS가 깨지는 현상을 볼 수있다. 콘솔창 오류를 확인해보자 해당 페이지는 static/css/index.css를 찾는 것이 아니라 /post/css/index.css를 찾으며 오류가 발생한 것을 볼 수 있다. 따라서 문제의 페이지인 html에 들어가 css 링크를 걸어준 곳을 상대경로(css/index.css)에서 절대경로(/css/index.css)로 변경하여 css 깨짐현상을 해결했다.

[spring Security] 리다이렉션 횟수가 너무 많습니다.

'쿠키 삭제해 보기' 링크까지 해줬으면서 쿠키를 다 삭제해도 고쳐지지않는다.. 다시 기초로 돌아가서 오류가 났을땐 IDE 메세지를 읽으라는 수많은 티스토리, 벨로그 자료들의 명언이 떠올랐다.. 2024-03-08T11:33:25.501+09:00 ERROR 968 --- [io-8080-exec-10] org.thymeleaf.TemplateEngine : [THYMELEAF][http-nio-8080-exec-10] Exception processing template "/member/loginForm": Error during execution of processor 'org.thymeleaf.spring6.processor.SpringInputGeneralFieldTagProcessor' (temp..

[Spring Security] formLogin() deprecated

Spring Security 6.1.0부터는 메서드 체이닝의 사용을 지양하고 람다식을 통해 함수형으로 설정하게 지향하고 있습니다. 6.1.0 버전 이전 http.formLogin() 6.1.0 버전 이후 public SecurityFilterChain filterChain(HttpSecurity http) { http .formLogin(form -> form .loginPage("/login") .permitAll() ); } http.formLogin((formLogin) -> formLogin .loginPage("/login/login") .usernameParameter("username") .passwordParameter("password") .loginProcessingUrl("/login..

JPA 에서 deleteById가 작동하지 않는 경우

문제상황 문제의 서비스 코드이다. 분명히 콘솔창에선 오류메세지도 없고 디버그 모드로 postId를 추적해봐도 해당 메소드에 잘 입력되는데 이상하게 Delete 쿼리문만 날라가지 않는 것이다. 정말 몇시간동안 이 오류에 대해 찾기 위해 부리나케 뛰어다녔다.. 해결방식 코드상의 오류가 아니라면 JPA연관관계를 설정할 때 무언가(?)잘못 설정해서 게시물을 삭제하려면 다른 엔티티까지 삭제하도록 설정을 해놓지 않았을까..? (라는 결론에 이르기까지 약 몇시간이 걸림) 결과 File 엔티티의 컬럼 중에서 cascade = CascadeType.All 를 걸어놓은 것이 문제였다. 제대로 알지 못하는 기능은 사용하지 마 이 녀석은 엔티티 객체의 생명주기, 고아객체와 관련있는 녀석인데 대충 '자바 ORM 표준 JPA 프..

BaseTimeEntity 포매팅

사용기술: JPA, Spring, ThymeLeaf 문제상황 BaseTimeEntity를 이용하여 createAt과 modifiedAt을 만들면 데이터가 2024-02-29T07:48:53.467664 형식으로 저장되어 VIEW 단에서 불러올때 마다 지저분해보였다. 해결방식 1. LocalDateTime을 포매팅 해줄 DateFomat 이라는 서버 라이브러리 생성하기 2. ThymeLeaf 포매팅으로 이용하여 뷰에서 처리하기 1번을 선택하려다가 readPostAll(모든 게시물 조회)에선 2024-02-29 로 날짜를 뽑아야 하고 readCommentAll(모든 댓글 조회)에선 2024-02-29 07:57:00 로 날짜를 뽑아야 하는 등 각각 서비스마다 메소드를 개발하고 포매팅하여 사용하기엔 지저분한 ..

[SQL 기초] 7. 고급 문법, MySQL의 데이터 형식

테이블을 만들 때 데이터 형식 설정은 필수이다. 여기서 데이터 형식에는 크게 숫자형, 문자형, 날짜형이 있는데, 이렇게 다양한 데이터 형식이 존재하는 이유는 실제로 저장될 데이터의 형태가 다양하기 때문에 효율성을 높이기 위해서이다. 1. 정수형 : 소수점이 없는 숫자의 저장형 데이터 형식 바이트 수 숫자 범위 TINYINT 1 -128~127 SMALLINT 2 -32,768~32,767 INT 4 약 -21억~21억 BIGINT 8 약 -900경~900경 (1) 사용 예시 member_num (멤버 수)-> TINYINT height_avg (키 평균)-> SMALLINT (2) 예약어 UNSIGNED height_avg는 SMALLINT로 지정해서 -32,768~32,767까지 저장할 수 있지만, 키..

[SQL 기초] 6. 기본 문법 (INSERT/UPDATE/DELETE)

1. INSERT (1) 기본 문법 INSERT INTO 테이블명 VALUES (값1, 값2, 값3 ....) (2) 대응하는 INSERT INSERT INTO 테이블명(열1, 열2, 열3.....) VALUES (값1, 값2, 값3...) (3) AUTO_INCREMENT 입력하지 않아도 자동으로 숫자가 증가하며 부여되는 index를 갖고 싶을때 사용하는 구문 AUTO_INCREMENT는 반드시 PRIMARY KEY(중복X 기본키)여야 한다. toy_id열에 NULL을 삽입하더라도, 테이블 조회시에 toy_id가 증가하는 숫자로 자동입력된 것을 볼 수있다. (4) SELECT LAST_INSERT_ID(); SELECT LAST_INSERT_ID() 테이블의 데이터가 얼마나 입력된지 알 수 있는 쿼리문..

[SQL 기초] 5. 기본 문법 (SELECT문2 ORDER BY/GTOUP BY)

1. ORDER BY 절 : 결과가 출력되는 순서를 조절합니다. 기본적으로 지정한 열 이름의 오름차순으로 정렬합니다 ** 기본 문법 SELECT 열_이름 FROM 테이블_이름 ORDER BY 열_이름 (1) ORDER BY 열 이름 ASC 오름 차순 예약여 (2) ORDER BY 열 이름 DESC 내림 차순 예약어 * 중간 QUIZ 정답(드래그 해서 확인) : SELECT ~ FROM ~ WHERE 순서를 지키는 것은 고정이다. ORDER BY는 그 뒤에 삽입할 것 2. LIMIT : LIMIT 절은 SELECT하는 데이터의 갯수를 제한해준다 (1) LIMIT 숫자 (2) LIMIT 시작_숫자, 개수 LIMIT 3, 2; 3등부터 2개의 숫자를 출력하도록 하게 한다. 즉 3등, 4등이 출력되도록 제한한다..

반응형