기록장

스프링부트 게시판 만들기 (7) - 글 작성 로직 생성 본문

인턴 기록/게시판?블로그?만들기

스프링부트 게시판 만들기 (7) - 글 작성 로직 생성

210_yy 2021. 4. 27. 13:08

이제 글작성 버튼을 눌렀을 때 제목, 내용, 작성자, 비밀번호를 작성할 수 있는 페이지를 만들고 다 쓰고 나서 이 데이터를 db에 insert하는 로직을 생성해보도록 하자. 

 

1. 글을 작성하는 페이지 생성 (write.html)

 

여기서 글쓰기 버튼을 누르면 write.html으로 간다 

(이건 글쓰기 버튼에 a href 달아줌)

 

write.html 

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
	layout:decorator="layout/default_layout">
<head>
<meta charset="UTF-8">
<title>글쓰기</title>
</head>
<body>
	<div layout:fragment="content">
		<div>
			<form name="write-form" action="/board/write" autocomplete="off" method="post">  
				<div>
					<input class="mt-4" type="text" id="title" maxlength='30' name="title" placeholder="제목을 입력하세요">
					최대 30자
					<br />
					<input type="text" id="writer" name="writer"  maxlength='10' value="" placeholder="작성자"> 
					최대 10자
					<input type="password" id="password" name="password" maxlength='6'  value="" placeholder="비밀번호">
					최대 6자
					<br />
					<div id="content_div">
					 <textarea class="form-control" style="height:100%; width:100%;" maxlength='1000' id="content" name = "content"></textarea>
					 </div>
					<br />					
					<input type="submit" id="submiBtn"  class="btn btn-outline-primary mr-2" value="작성">
				</div>
			</form>			
		</div>
	</div>
</body>
</html>

다른 html파일들과 똑같이 content 부분만 내용을 바꾸어준다.

이때 비밀번호까지 작성하는 이유는 나중에 글을 삭제할 때 그 글을 작성한 사람만이 삭제할 수 있도록 하기 위해서이다.

 

여기서 input태그의 submit 속성을 사용했는데 input 의 submit과 button의 차이점은 다른 글에서 확인할 수 있다 

 

 

2. controller와 mapping

 

 /board/write 라는 url은 write.html에 매핑되도록 작성했다

 

3. 페이지 띄워보기

 

이제 스프링부트를 실행시키고 글 목록 페이지(/board)에서 글작성 버튼을 눌러보면

 

 

글 작성 페이지가 뜨는 것을 확인할 수 있다!!

 

 

 

4. db에 데이터 저장하기

 

db에 저장할 데이터는 제목, 작성자, 비밀번호, 내용 이다. 

table에 column을 추가 했는데 password와 delete_yn이다. delete_yn은 작성자가 삭제 했을 시 'Y'로 update되고 그냥 글을 작성했을 땐 default로 'N'이 저장될것이다. (삭제 기능은 추후에 만들도록 할 것)

 

form action에 입력된 주소로 데이터가 전송이 되는데 나는 /board/write를 적어놨다. 그리고 글 작성을 다한 뒤에는 다시 글 목록페이지로 이동시켜줄 것이다.

 

 1) Controller 만들기

 

글쓰는 페이지와 url은 같지만 mapping방식이 다르다. 글을 작성했을 때 비밀번호는 url에 노출되면 안되기 때문에 post방식을 사용할 것이다.

 

form에서 받아온 데이터는 제목, 작성자, 비밀번호, 내용이다. 이것들을 모두 dto에 저장하고 service단으로 넘겨준다. 그리고 페이지는 원래 글목록 페이지를 보여줘야하기 때문에 "redirect:/board"를 return 해준다.

 

 2) service 작성

 

service단은 간단하다 dao를 실행시켜주면 된다.

 

 3) dao 작성

 

 

dao는 쿼리문을 실행시킨다.

 

 4) xml 작성

 

작성자, 제목, 내용, 비밀번호는 사용자가 입력한 값으로 저장하고 날짜는 GETDATE()라는 mssql의 함수를 이용하고, 조회수는 1을 default로 그리고 delete_yn은 'N'을 default로 값을 insert한다.

 

5. 글 작성 해보기

 

그럼 글작성을 해서 실제 db에 저장이 되는지 확인해보도록 하자.

 

내용을 입력해서 작성 버튼을 눌러봤다.

 

버튼을 누르자 원래 글목록 페이지로 돌아왔고, 내가 작성한 글이 목록에 뜨는것을 알 수 있다.

 

db에도

 

잘 저장이 되었다 ~

반응형
Comments