가자공부하러!

5. Spring Boot 자유게시판 만들기 본문

공부/Spring Boot

5. Spring Boot 자유게시판 만들기

오피스엑소더스 2019. 7. 18. 21:20

개요 : Spring Boot 자유게시판 제작




2차 시도


[목차]

1. 설정
2. 메뉴(views) 및 기능
3. Controller
4. Model(Service, DAO, VO)
0. 에러 및 해결방법 기록


1. 설정

1-1. spring boot dependencies

  > pom.xml : 소스코드 링크(Github)

  > Spring Boot DevTools

  > Lombok

  > MySQL Driver

  > MyBatis Framework

  > Spring Web Starter

  > JSP

  > JSTL


2. 메뉴(views)

2-1. 자유게시판 메인(views/freeboard/freeboard.jsp)

2-2. 계정 관련 기능(bootstrap modal form)

2-3. 글 상세보기(views/freeboard/postdetail.jsp)

2-4. 새 글 작성(views/freeboard/writenew.jsp)

2-5. 글 수정(views/freeboard/modifypost.jsp)


2-1. 자유게시판 메인(templates/freeboard.jsp)

  > Header

- 메뉴바

- 메인 배너 이미지

  > Main Contents

- 게시글 테이블

- 글 상세보기

- 새 글 작성

- 글 수정

  > Side menu

- 로그인, 회원가입, ID/PW 찾기

2-2. 계정 관련 기능(bootstrap modal form)

  > 공통 기능

- 정규식 활용 입력값 검사

- modal shown, hidden 이벤트

2-3. 글 상세보기



0. error

0-1. url attribute

  > 발생시점 : 기초설정(pom.xml, application.yml, index.html, Controller) 직후 Run

  > 내용 :

***************************
APPLICATION FAILED TO START
***************************
Description:
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
Reason: Failed to determine a suitable driver class
Action:
Consider the following:
    If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
    If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).

  > 해결 :

- <dependency> ojdbc6, h2, HikariCP 추가 : 실패

- OracleDBConfiguration 작성을 안했음 : 성공

- src/main/resources/mapper 폴더 생성

- 폴더 내에 mapper DOCTYPE 파일 생성

- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd">

- </mapper>로 끝나야 함

- <mapper>태그에 namespace가 비어있으면 안됨



1차 시도 - 중단



pom.xml : 소스코드 링크(Github)


1. 자유게시판 메인(templates/freeboard.html)

2. 로그인 기능

3. 글 상세보기(templates/fbsub/viewpost.html)

4. 새 글 작성(templates/fbsub/writenew.html)

5. 글 수정(templates/fbsub/modifypost.html)

6. 

0. 에러 및 해결방법 기록 




에러 및 해결방법 기록

1. Required a bean

***************************
APPLICATION FAILED TO START
***************************
Description:
Field freeBoardService in com.minhjFreeBoard.controller.FreeBoardController required a bean of type 'com.minhjFreeBoard.service.FreeBoardService' that could not be found.
The injection point has the following annotations:
@javax.inject.Inject()

Action:
Consider defining a bean of type 'com.minhjFreeBoard.service.FreeBoardService' in your configuration.
  > 해결완료

   - 방법 : @Service 명시되어 있는지 확인

 

2. DB 값을 못받아옴

  > Controller -> template 값 전달하는지 확인

- 잘 전달됨 확인

  > DB에서 값 잘 빼오는지 확인

- 못받아오고있음

- DTO, DAO, Service, Controller 확인 -> 이상 없음

  > 해결 완료

- 방법 : DB에 test data들 Commit이 안되어있었음...

 

3. template에서 DTO 또는 VO객체를 컨트롤러에 매핑할 때 오류

  > 상태 : form태그까지는 정상적으로 동작하는데 th:field="*{변수}" 내용을 추가하면 500에러 발생

- 다른 사람들은 이렇게 쓰면 다 된다고들 하는데... 우주가 나를 속이고 있나보다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<form action="#" th:action="@{/freeboard.writenew.savepost}" th:object="${PostsDTO}" method="GET">
    <table border="1">
        <tr>
             <td><label th:text="ggg"></label></td>
<!--            <td><input type="number" th:field="*{seq}"/></td>
            <td><input type="text" th:field="*{id}"/></td>
            <td><input type="text" th:field="*{title}"/></td>
            <td><input type="text" th:field="*{content}"/></td>
            <td><input type="date" th:field="*{post_date}"/></td>
            <td><input type="number" th:field="*{del}"/></td>
            <td><input type="number" th:field="*{readcount}"/></td> -->
        </tr>
    </table>
</form>
cs

 

  > 오류메시지 :

HTTP Status 500 – Internal Server Error

Type Exception Report

Message Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/fbsub/writenew.html]")

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/fbsub/writenew.html]") org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1013) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897) javax.servlet.http.HttpServlet.service(HttpServlet.java:634) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109) org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109) org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109)

  > 해결방법

     - 방법 1(실패)

- <html>태그에 아래 내용 확인

1
2
<html xmlns:th="http://www.thymeleaf.org"
    xmlns:layout="http://www.ultraq.net.nz/web/thymeleaf/layout">
cs

     - 방법 2

-



 


 

Comments