목록전체 글 (364)
seong
백엔드 Validation 처리하기 백엔드에서 처리할 때는 각자의 Dto마다 Validation을 모두 만들어줘야한다. Dto를 회원가입 하나만 생성한다고 가정해보자 회원가입은 username,password,email 세개가 필요하다. 회원정보 수정은 password, email이 필요하다. 회원 정보 수정할 때 회원가입 Dto를 사용하게 되면 username이 없으니 당연히 에러가 날 것이다. 라이브러리 사용해 확인 주소 https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-validation/2.7.3 자신의 spring 버전에 맞게 다운로드 해준다 1. JoinDto - 회원가입 Dto에 Validation ..
프론트에서 검사하고 막기 1. 글자 수 제한 주기 필요한 부분에 maxlength = 20 를 넣어주면 됨. 1. username 한글 체크 function koreanCheck(){ let username = $("#username").val(); let korRule = /^[가-힣]*$/; if(korRule.test(username)) { return true;// 한글이 있으면 true } else { return false;// 한글이 없으면 false } } 2. username에 대문자 꼭 하나 받기 function capitalCheck() { let username = $("#username").val(); let checkcapital = /[A-Z]/; if (checkcapital..
Interceptor 컨트롤러로 들어오는 HttpRequest, HttpResponse를 가로채는 역할을 한다. 예를 들어 컨트롤러에 글을 삭제 하는 로직이 있다. 글은 "해당글의 작성자"만이 삭제를 할 수 있다, 여기서 Interceptor 를 이용해 삭제를 하기 전 작성자가 아니라면 컨트롤러가 동작 하지 않게 한다. 필터와 인터셉터는 비슷한 역할을 하지만 다르다! Interceptor 호출 시점은 3가지가 있다. 1. preHandle : 컨트롤러가 호출 되기 전 2. postHandle: 컨트롤러가 실행 된 후 3. afterComplete : 컨트롤러 -> View 모든 동작이 끝난 후 구현해보기 필요한 환경 설정 셋팅 보통 Interceptor 구현 하기 위해서 2가지가 필요하다. 1. Inte..
조건 사용자가 특정 키워드 검색 후 게시글을 클릭 했다. 게시글로 이동 했을 때 키워드와, 현재 페이지를 가지고 가야한다. 기존의 동작 검색을 하고 게시글을 눌렀을 때 keyword와, currentPage가 없어진다. 저 부분에 검색 keyword와 currentpage를 담아줘야한다. Session의 영역 작성하기 앞서서 Session에 대해 알아야한다. Session영역은 간단하게 로그아웃 전 까지 남아있다. 시작 키워드와, 현재 페이지를 가져가기 위해선 PagingDto의 keyword,와 currentPage가 필요하다. 아래 코드로는 pagingDto가 request, reponse하면 없어진다. Session을 사용해 keyword값,currentPage값을 가져가보자. 해시맵을 이용해 코드..
글쓰기 꾸미기 - summernote 현재 필요한 부분은 CDN이 필요하다. 1. 먼저 자신의 프로젝트에 적용전에 테스트를 하고 적용해야 한다. VS코드에서 테스트 2. 잘 됐으니 CDN 부분 복사 아래 스크립트도 추가 해준다. 3. 적용완료 Summernote 에서의 그림, 사진 등등 원래 사진을 JSON에 담기 위해서는 Base64로 인코딩 해서 담아주어야 한다. Summernote에서는 자체적으로 Base64로 인코딩을 실행 해주기 때문에 편하다. Base64는 쉽게 말해 JSON에 담기 위해 문자열로 치환해주는 기술이다.
게시글 삭제 만들기 아래 부분을 수정 1. Form태그 수정 삭제 하기 위해서 ID값이 필요하다. 바인딩 시켜서 가져오기 위해서 input태그에 id값 가져오기(type에 hidden을 사용하면 웹상에서 보이지 않는다) 2. Ajax 작성(script) $("#btnDelete").click(()=>{ let id = $("#id").val(); $.ajax("/boards/"+id,{ type: "DELETE", dataType: "json" }).done((res)=>{ if(res.code == 1){ alert("게시글 삭제 성공"); location.href = "/boards"; } else{ alert("게시글 삭제 실패"); } }); }); 3. Controller 수정 해주기 //게시글..
브라우저는 기본적으로 저장된 쿠키를 가지고 간다. Request Header에 필요한 정보를 담아서 필요한 데이터를 View에 뿌려줘보자 쿠키 함수 cookie.getValue() // 쿠키에 설정된 값 cookie.getName() // 쿠키의 키(이름) cookie.setMaxAge() // 쿠키의 유효기간 설정 Controller에서 Form으로 이동할 때 가져가는 코드 작성. "로그인 폼으로 이동할게요" 라는 요청이기 때문에 HTTP의 Request 받는다. 그리고 쿠키는 타입이 배열이다. 배열에 쿠키를 담고, for문으로 필요 부분을 model에 담아준다. 지금은 username만 필요하기 때문에 username을 담아서 간다. @GetMapping("/loginForm") public Stri..
쿠키 브라우저에 Response헤더에 쿠키가 있으면 브라우저의 쿠키에 저장 해주는 HTTP 프로토콜이 있다. 그럼 로그아웃을 하면 session을 하면 session 값은 날라가지만 브라우저를 종료 하지 않았으므로 쿠키에 정보가 남아있게된다. 쿠키 요청 및 응답 브라우저는 쿠키를 저장할 때 직접적으로 바로 접근이 불가능 하기 때문에 서버에 요청을 해야한다. 그럼 서버에서 Response의 Header에 전달 해주면 브라우저에서 쿠키에 저장 하게 된다. 그럼 브라우저에서 쿠키 요청을 따로 해야하는가? 그건 아니다. 브라우저는 항상 요청을 할 때 쿠키의 Jsession을 항상 가지고 간다 -> Default 값이다. Jsession에 쿠키를 담아서 가는 것은 브라우저만 작동한다, 앱은 동작 하지 않기 때문에..