본문 바로가기

Spring

(27)
[Spring]Spring 시작해보기(11) - Template 상속 현재 우리는 표준 HTML 구조가 아닌데, 계속해서 HTML 파일을 만들 경우 굉장히 귀찮다. 또 중복되는 것들이 굉장히 많아진다. 예를들어 위 같은 코드를 계속 적어줘야 하는데 여간 귀찮은게 아니다. 그러면 HTML의 이 부분을 상속시켜주면 표준 HTML 구조가 완성된다. body 내부에 라는 코드가 있는데, layout.html 을 상속한 템플릿에서 개별적으로 구현하는 곳이다. 2. 각 html파일 수정 // question_list.html 번호 제목 작성일시 // question_detail.html 처음보는 부분이 존재하는데, 태그가 있다. layout:decorate 부분은 thymeleaf의 속성인데 템플릿의 상속될 템플릿을 설정한다. 속성값 “~{layout}”은 layout.html을 의..
[Spring]Spring 시작해보기(10) - BootStrap, Font 적용 bootstrap은 웹 디자인을 하기 힘든 BackEnd 개발자에게 간편하게 FrontEnd 작업을 할 수 있도록 만들어둔 오픈소스 프로젝트이다. 이 BootStrap을 사용하여 question_list.html과 question_detail.html 파일을 꾸며보자 1. CSS 설치 후 static directory에 넣어주기. CSS 설치 사이트 를 통해 CSS와 JS파일이 합쳐져 있는 zip파일을 설치한다. 설치 후 압축을 풀면 여러개의 파일이 나오는데, “bootstrap.min.css”파일을 복사하여 static directory에 넣어준다. 2. BootStrap 적용 설치한 부트스트랩을 적용해보자. style.css를 link해준 것 처럼 bootstrap.css 파일도 연결시켜준다. // ..
[Spring]Spring 시작해보기(9) - 답글 달기 form 생성 및 출력 detail 페이지까지 생성했는데, 댓글을 달 수 있는 곳도 있어야 하지 않을까? 그러기 위해 Answer을 등록할 수 있는 form을 생성해 출력시키도록 해보자. 1. 답변 등록 Form 생성 question_detail.html을 수정하여 form을 생성할 수 있도록 하자. 태그안에는 태그를 넣어 답변을 넣어줄 수 있도록 하고, 태그에는 전송할 수 있는 submit을 넣는다. 여기서 form에는 현재 question_id를 가져와 해당 id에 대한 answer을 생성할 수 있도록 한다. 태그 안에서는 action을 동작할 URL을 사용한다.(여기서 question_id를 가져온다.) 결과는 textarea로 잘 나온다. 2. 답변 생성 컨트롤러 생성 및 URL 매핑 처리 textarea처럼 많은 내용..
[Spring]Spring 시작해보기(8) - 상세 페이지 만들기 질문에 대한 제목, 내용을 볼 수 있는 상세페이지를 만들어보자. 해당 질문의 id값을 사용해 출력시킬 건데, URL에 맨 마지막에 id값을 넣어 출력시킬 것이다. 1. question_list.html 파일 수정 Question의 subject를 클릭하면 question_id를 전송하고, detail페이지로 이동할 수 있는 Link를 태그를 통해 넣어주었다. 제목 작성일시 여기서 th:href속성을 사용하는데 URL주소를 나타낼 때에는 꼭 @{ } 사이에 입력해야 한다. 또한, /question/detail/ 과 ${question.id}의 값이 조합되어 사용되어야 하는데 이 때 좌우에 | 문자를 추가해주어야 한다. 2. detail controller 생성 QuestionController 내 deta..
[Spring]Spring 시작해보기(7) - Service class 생성 Service 만들기를 시작해보자. 1. QuestionService class 생성 service는 controller와 마찬가지로 @Service 어노테이션을 사용할 수 있다. 그 후 Repository 객체를 사용하여 Repository class 내의 메서드를 사용한다. @RequiredArgsConstructor @Service public class QuestionService { private final QuestionRepository questionRepository; public List getList() { return this.questionRepository.findAll(); } } 이는 전에 사용했던 모든 Question의 List를 가져오는 findAll 메서드를 사용해 반환..
[Spring]Spring 시작해보기(6) - Thymeleaf를 사용해 QuestionList 출력 JPA를 통해 Question과 Answer 엔티티를 생성하고, CRUD까지 기능 구현을 해 보았다. 하지만, 이렇게 테이블 내 내용들을 불러오기만 할 뿐 출력시키는 방법은 여전히 구현하지 못했다. 나는 ThymeLeaf 라는 View Template를 사용하여 내용들을 출력시킬 것이다. 타임리프(Thymeleaf)란? 참조 : Thymeleaf란? 타임리프(Thymeleaf)란? 타임리프(Thymeleaf)란 View Template이라고 부른다. 뷰 템플릿(View Template)이란 Controller가 전달하는 데이터를 이용해 동적으로 화면을 구성할 수 있도록 하며, Spring Framework나 NodeJS 등.. 다양한 곳에.. jae-soon.tistory.com 나는 지금까지 Quest..
[Spring]Spring 시작해보기(5) - MariaDB의 Truncate Table 실행하기 테이블을 사용할 때 내용을 초기화 할 때가 있다. 그럴때는 truncate 테이블명 을 이용하는데, JPA에서 truncate table을 하는 방법을 알아보자. 인터넷 검색을 해보았고, MySQL문을 그대로 사용할 수 있는 방법을 찾아보았다. @Query 어노테이션을 사용하여 value값에 원하는 쿼리문을 입력하고, nativeQuery 옵션을 true로 설정하면 SQL Query문을 사용할 수 있다한다. QuestionRepository에 쿼리문을 메서드로 넣어주었고, # QuestionRepository @Transactional @Modifying @Query(value = "truncate question", nativeQuery = true) void truncateQuestion(); 📌 @..
[Spring]Spring 시작해보기(4) - H2 데이터 베이스에서 MariaDB로 변경(JPA) DB 정보를 H2에서 MariaDB로 변경하였다. dependency는 start.spring.io 에서 mariaDB Driver를 선택해 가져왔고, 아래 explore을 통해 코드를 바로 가져올 수 있었다. intelliJ에 build.gradle에 코드를 넣고, 적용을 시켰다 . 그리고, application.properties에 있는 H2에 대한 설정을 변경해주었다. 기존코드 변경코드 (URL의 첫번쨰 qna는 데이터베이스의 이름이다.) Database의 이름은 qna로 짓고, 해당 데이터베이스에 JPA를 이용해 테이블을 생성했다. 테이블을 생성하는 방법과 그 이후 명령어들은 H2와 동일하다. MySQL WorkBench 사용 어제 만든 JPA Test 결과