현재 SBB 프로젝트는 HelloController.java와 HelloLombok.java 파일만 생성한 상태다. 그런데 이보다 규모를 갖춘 프로젝트를 만들고자 한다면 프로젝트 구조를 잘 이해해야 한다. 이번 장에서는 스프링부트 프로젝트의 구조와 파일들에 대해서 알아
이제 본격적으로 SBB 프로그램을 만들어 보자. 브라우저에서 http://localhost:8080/sbb 페이지를 요청했을 때 "안녕하세요 sbb에 오신것을 환영합니다."라는 문자열을 출력하도록 만들어 보자.그냥 한번 브라우저에서 http://loc
우리가 만들 SBB는 질문 답변 게시판이다. 질문이나 답변을 작성하면 데이터가 생성된다. 그러므로 데이터를 저장하거나 조회하거나 수정하는 등의 기능을 구현해야 한다. 웹 서비스는 데이터를 처리할 때 대부분 데이터베이스를 사용한다.image그런데 데이터베이스를 사용하려면
이제 SBB가 사용할 엔티티를 만들어 보자. 엔티티는 데이터베이스 테이블과 매핑되는 자바 클래스를 말한다. SBB는 질문과 답변을 할 수 있는 게시판 서비스이다. 따라서 SBB에는 질문과 답변에 해당하는 엔티티가 있어야 한다.그렇다면 질문과 답변 엔티티에는 어떤 속성들
우리가 원하는 질문 목록은 다음 주소에 접속할 때 동작해야 한다. 로컬 서버를 실행하고 웹 브라우저에서 http://localhost:8080/question/list에 접속해 보자. 아마 다음과 같은 404 오류페이지가 나타날 것이다.404 오류를 해결하려면
루트 URL은 http://localhost:8080 처럼 도메인명과 포트 뒤에 아무것도 붙이지 않은 URL을 말한다. 우리는 아직 루트 URL에 대한 매핑을 만들지 않았기 때문에 브라우저에 루트 URL에 접속하면 다음과 같은 404페이지가 나타난다.image
이번 장에서 질문 목록을 만들었다. 이제 질문 목록의 제목 링크를 누르면 질문 상세 화면이 보이게 할 것이다. 하지만 기능을 추가하기 전에는 잠시 생각할 것이 있다. 우리는 QuestionController에서 QuestionRepository를 직접 사용하여 질문 목
먼저 질문 목록의 제목을 클릭했을 때 상세화면이 호출되도록 제목에 링크를 추가하자. 질문 목록 템플릿을 다음과 같이 수정하자.이제 질문 목록 페이지에 접속하여 링크를 클릭해 보자. 아마도 다음과 같은 오류가 발생할 것이다.imagehttp://localhost
앞 절에서 우리는 질문을 조회하는 기능을 만들었다. 이번에는 질문에 답변을 등록하고 보여 주는 기능을 만들어 보자. 질문 상세 화면에 답변을 입력하기 위한 텍스트 창(textarea)과 <답변등록> 버튼을 생성하고, 이 버튼을 누르면 답변이 저장되도록 구현해 보자
질문 등록을 하려면 먼저 "질문 등록하기" 버튼을 만들어야 한다. 다음처럼 질문 목록 하단에 버튼을 생성하자.image링크 엘리먼트( ... )이지만 부트스트랩의 btn btn-primary 클래스를 적용하면 버튼으로 보인다.image이제 "질문 등록하기" 버튼을 누르
이전 챕터에서 질문 등록과 답변 등록시 오류가 발생하면 다음과 같이 오류를 표시했다.앞으로 추가적으로 만들 템플릿들에도 위와 같이 오류를 표시하는 부분이 필요하다. 이렇게 반복적으로 사용하는 문장은 공통 템플릿으로 만들고 필요한 부분에 삽입하여 쓸 수 있다면 편리하지
지금까지 만든 SBB로 질문 목록을 조회하고 질문을 등록하고, 다시 내용을 보고 답변을 달고 이렇게 조작을 하다 보면 아마도 불편함을 느끼게 될것이다. 그것은 바로 메인페이지(Home)로 돌아갈 수 있는 기능이 없기 때문이다. 이번에는 이러한 불편을 해소할 수 있는 내
SBB의 질문 목록은 현재 페이징 처리가 안되기 때문에 게시물 300개를 작성하면 한 페이지에 300개의 게시물이 모두 조회된다. 이번 장에서는 페이징(paging)을 적용하여 이 문제를 해결해보자페이징을 구현하기 전에 페이징을 테스트할 수 있을 정도로 충분한 데이터를
현재 질문 목록 화면을 유심히 보면 페이지마다 게시물 번호가 항상 1부터 시작되는 문제가 있다. 페이지를 이리저리 이동해 봐도 게시물 번호는 1부터 시작한다. 이 문제를 해결해 보자.image두번째 페이지로 이동하더라도 여전히 게시물 번호가 1부터 시작된다.image만
이번에는 질문 목록에 "해당 질문에 달린 답변 개수"를 표시할 수 있는 기능을 추가해 보자. 코드의 분량은 많지 않지만, 게시판 서비스를 더욱 서비스답게 만들어 주는 기능이다.답변 개수는 다음처럼 게시물 제목 바로 오른쪽에 표시하자.imageth:if="${list.s
스프링부트는 회원가입과 로그인을 도와주는 스프링 시큐리티(Spring Security)를 사용할수 있다. SBB도 스프링 시큐리티를 사용하여 회원가입과 로그인 기능을 만들 것이다. 그 전에 스프링 시큐리티에 대해서 간단하게 알아보고 필요한 설정도 진행해 보자.스프링 시
이번에는 SBB에 회원가입 기능을 구현해 보자.회원가입 기능을 만들어 보았다면 웹 프로그래밍은 거의 마스터했다고 할 수 있다. 그만큼 회원가입 기능은 웹 사이트에서 핵심 중의 핵심이라 할 수 있다.지금까지는 질문, 답변 엔티티만 사용했다면 이제 회원 정보를 위한 엔티티
SBB는 여러 사람이 사용하는 게시판 서비스다. 그러므로 질문한 사람, 답변한 사람을 구별하는 로그인, 로그아웃은 필수 기능이다. 앞서 회원 가입 기능을 구현했으므로 이제 로그인, 로그아웃 기능을 구현할 수 있다.회원 가입 단계에서 SITE_USER 테이블에 회원 정보
게시판의 질문, 답변에는 누가 글을 작성했는지 알려주는 "글쓴이" 항목이 필요하다. 이번에는 Question과 Answer 엔티티에 "글쓴이"에 해당되는 author 속성을 추가해보자먼저 Question 엔티티에 author 속성을 추가하자.author 속성은 Site
앞서 Question 엔티티와 Answer 엔티티에 author 속성을 추가했다. 게시판의 게시물에는 "글쓴이"를 표시하는 것이 일반적이다.질문 목록, 질문 상세 화면에 author 속성을 이용하여 글쓴이를 표시해보자.먼저 질문 목록 템플릿에 글쓴이를 표시해 보자. 다
이번장에서는 작성한 질문과 답변을 수정하고 삭제할 수 있는 기능을 추가해보자.이번장은 비슷한 기능을 반복적으로 구현해야 하므로 조금 지루할 수 있다. 하지만 스프링부트의 패턴에 익숙해 질 수 있는 좋은 기회라고 생각하고 따라해보자.먼저 질문이나 답변이 언제 수정되었는지
질문, 답변의 추천은 추천한 사람(SiteUser 객체)을 질문, 답변 엔티티에 추가해야 한다.우선 Question 엔티티에 추천인 속성을 추가해보자.하나의 질문에 여러사람이 추천할 수 있고 한 사람이 여러 개의 질문을 추천할 수 있다. 이렇듯 질문과 추천인은 부모와
이제 SBB가 점점 완성 되어가고 있다. 이번에는 더 많은 기능을 추가하기 전에 발견된 몇 가지 문제점을 해결하려고 한다.발견된 문제점은 답글을 작성하거나 수정한 후에 항상 페이지 상단으로 스크롤이 이동되기 때문에 본인이 작성한 답변을 확인하려면 다시 스크롤을 내려서
SBB는 질문과 답변에 대한 데이터가 계속 쌓여가는 게시판이므로 검색기능은 필수라고 할 수 있다. 검색의 대상은 질문의 제목, 질문의 내용, 질문 작성자, 답변의 내용, 답변 작성자 정도로 하면 적당할 것이다. 즉, "스프링"이라고 검색을 하면 "스프링" 이라는 문자열
여러분이 제작한 SBB 서비스를 누구나 사용할 수 있도록 다른 사람이 인터넷으로 SBB 서비스에 접속할 수 있도록 만들어야 한다. 그런데 그렇게 하려면 1년 365일 쉬지 않고 켜져 있는 서버가 필요하다.image그림에서 보듯 사용자가 SBB 서비스를 사용하려면 항상
AWS에 관심이 있다면 "AWS는 어렵고 비싸다"라는 말을 많이 들었을 것이다. 하지만 AWS 라이트세일로 AWS를 쉽고 저렴하게 사용할 수 있다. 여기서는 AWS 라이트세일을 어떻게 사용하는지 알아보자.AWS 라이트세일은 아마존에서 운영하는 웹 서비스에 특화된 클라우
개발자가 애플리케이션을 개발할 때 기능 요구사항만 개발하는 것은 아니다. 서비스를 실제 운영 단계에 올리게 되면 개발자들이 해야하는 또 다른 중요한 업무가 있다. 바로 서비스에 문제가 없는지 모니터링하고 지표들을 심어서 감시하는 활동들이다.운영 환경에서 서비스할 때 필