🤍방명록 검색 구현 검색을 구현하기 위해 생각해보아야 할 것 검색 기능을 구현하기 위해 PageRequestDTO에 검색 타입(type), 검색어(keyword) 추가 필요 서비스 계층에서 Querydsl 이용해서 검색 처리 검색 타입은 제목(t), 내용(c), 작성자(w)로 검색하는 경우와 제목 혹은 내용(tc), 제목 혹은 내용 혹은 작성자(twc)로 검색하는 경우가 있다. 1. PageRequestDTO 수정 2. 서비스 코드 작성 PageRequestDTO를 파라미터로 받아 검색 조건(type)이 있을 시 conditionBuilder 변수를 생성해서 검색 조건을 or로 연결해서 처리함. 검색 조건이 없을 시 'gno>0'으로만 생성됨. 3. 검색 조건을 처리하기 위해 목록 getList() 메소..
🤍1. 방명록 조회 구현 1. 서비스단 코드 작성 findById를 통해 만일 엔티티 객체를 가져왔다면 entityToDto를 이용해 엔티티 객체를 DTO로 변환해서 반환함. 2. 컨트롤러 코드 작성 Model에 GuestDTO 객체를 담아서 전달하도록 코드를 작성한다. 3. 조회 화면 read.html 작성 읽기만 할 수 있도록 readonly 속성 적용 4. 게시글 목록 클릭 시 조회 페이지로 이동하도록 list.html 수정 [[${dto.gno}]] 5. 조회 구현 완료 🤍2. 방명록 수정, 삭제 구현 수정은 POST 방식으로 처리하고 다시 수정된 결과를 확인할 수 있는 조회(read.html) 화면으로 리다이렉트시킴. 삭제는 POST 방식으로 처리하고 목록 화면으로 리다이렉트시킴. 목록 이동 작..
✅구현 목표 기능 URL GET/POST 기능 Redirect URL 목록 /guestbook/list GET 목록/페이징/검색 등록 /guestbook/register GET 입력 화면 /guestbook/register POST 등록 처리 /guestbook/list 조회 /guestbook/read GET 조회 화면 수정 /guestbook/modify GET 수정/삭제 기능 화면 /guestbook/modify POST 수정 처리 /guestbook/read 삭제 /guestbook/remove POST 삭제 처리 /guestbook/list 🤍자동으로 처리되는 날짜/시간 설정 BaseEntity 작성 게시글 작성, 수정 시간 같이 자동으로 추가되고 변경되어야 하는 컬럼을 매번 처리하는 일은 번거..
폼은 지난번에 만들어둔 loginForm을 활용하고 Ajax 코드도 회원가입 코드를 복사해서 수정 후 활용할 것이다. 1. 로그인 버튼 수정 로그인 2. User.js 에 로그인 코드 작성 let index = { init: function(){ $("#btn-save").on("click",()=>{//function(){} 대신 ()=>{} : this를 바인딩하기 위해서 this.save(); }); $("#btn-login").on("click",()=>{//function(){} 대신 ()=>{} : this를 바인딩하기 위해서 this.login(); }); }, login: function(){ //alert('user의 save함수 호출됨'); let data = { username: $(..
🔍데이터베이스 격리 수준(Isolation Level) 이란? 트랜잭션에서 일관성 없는 데이터를 허용하는 수준 🔍DB 격리 수준 종류 Read Uncommitted Read Commited Repeatable Read Serializable Read Uncommitted -> Serializable 로 갈수록 격리 수준이 높다.(high) Serializable -> Read Uncommitted 로 갈수록 격리 수준이 낮다.(low) Read Uncommitted SELECT 문장 수행 시 해당 데이터에 Shared Lock이 걸리지 않는 수준. 아직 커밋되지 않은 트랜잭션 A의 데이터를 B가 SELECT할 수 있음. Read Commited SELECT 문장이 수행되는 동안 데이터에 Shared Lo..
💡기존에는 form 태그에 action으로 주소를 걸어서 전송하는 방식을 사용했었는데 여기에서는 기존의 방식이 아닌, JSON을 활용해서 Ajax로 회원가입을 요청하는 방식으로 구현할 것이다. 1. 서버 요청이 들어왔을 때 기본으로 스캔하는 곳인 src/main/resources/static 아래에 user.js 파일을 생성해 준다. 2. 회원가입 버튼이 기존에 submit 타입이었는데 타입을 지우고 id값을 부여해 준다. 회원가입완료 3. id값을 가져와서 자바스크립트 코드를 작성해 준다. 4. 테스트용으로 아무 값을 입력하지 않고 회원가입완료 버튼을 눌러보면 alert창이 잘 뜨는 것을 확인할 수 있다. 5. 이제 ajax 코드를 작성해줄 것이다. 💡회원가입 시 Ajax를 사용하는 2가지 이유? 1...
1. W3School 사이트에 접속한다. 2. Navbar 선택 3. Collapsing The Navigaion Bar 코드 긁어오기 4. Basic Template 선택 5. Footer 코드는 이곳에서 긁어오기 6. 폴더 구조를 이렇게 만들어 주고 Index.jsp 파일에 아까 Navbar에서 긁어온 코드를 복사한다. 7. 그리고 Index.jsp 내용 중 헤더에 해당하는 코드, 푸터에 해당하는 코드를 분리해서 footer.jsp, header.jsp를 생성한다. footer.jsp 🤍Created by archive ☎010-1234-5678 인천광역시 header.jsp 홈 로그인 회원가입 Index.jsp : 분리한 헤더, 푸터를 include 해준다. 제목 적는 부분 상세 보기 제목 적는 부..
User 클래스를 생성하고 실행하면 테이블이 자동으로 생긴다. @Data @NoArgsConstructor @AllArgsConstructor @Builder @Entity//User클래스가 MySQL에 테이블이 생성이 된다. //@DynamicInsert//Insert 시에 Null인 필드를 제외시켜준다. public class User { @Id//Primary key @GeneratedValue(strategy = GenerationType.IDENTITY)//프로젝트에서 연결된 DB의 넘버링 전략을 따라간다. private int id; //시퀀스,auto_increment @Column(nullable = false, length = 30) private String username; //아이디..