폼 데이터란 HTML 요소인 <form> 태그에 실려 전송되는 데이터를 의미
- 폼 데이터를 DTO로 받기
- 입력 폼 만들기
- resources아래에 있는 templates 디렉터리에 articles라는 디렉터리를 새로 만들고 그안에 new.mustache파일을 생성
- new.mustache 파일안에 <form></form>태그를 작성하고 게시판의 제목을 입력할 <input> 태그, 내용을 입력할 <textarea> 태그, 전송 버튼인 <button>태그를 추가하고 버튼의 속성을 type = "submit" 으로 설정
- 그 전에 만들었던 header , footer 코드를 추가
- 컨트롤러 만들기
- 저번에 만들었던 src/main/java 아래에 있는 controller 패키지 안에 ArticleController 이란 새 클래스 생성
- public class ArticleController 이 위에 @Controller 을 입력해 컨트롤러임을 선언
- 페이지를 보여주기 위해서 newArticleForm() 메서드를 추가하고 반환값으로 뷰 페이지 이름 적음
- 하지만 이 앞에 articles 디렉터리를 만들고 new.mustache 페이지를 추가했으므로 파일 경로를 return "articles/new"; 입력
- URL 요청을 접수하기위해 @GetMapptin("/articles/new")을 입력
- new.mustache 파일에 부트스트랩 CSS 적용하기
- 입력 폼 만들기
- 폼 데이터 전송하기
- <form> 태그에 2가지 정보를 추가하기
- 어디에 보낼지 선택하는거는 action 속성
- action="/articles/create" 로 설정 (localhost:8080/articles/create 페이지로 폼 데이터를 보낸다는 의미)
- 어떻게 보낼지는 method 속성
- 속성값으로는 get,post 2가지로 설정 가능 여기서는 method="post"방식으로 설정
- 어디에 보낼지 선택하는거는 action 속성
- <form> 태그에 2가지 정보를 추가하기
- 폼 데이터 받기
- 컨트롤러를 통해서 사용자가 전송한 폼 데이터를 받기
- ArticleController 파일 열기
- 컨트롤러에 createArticle()메서드를 추가하고 형식을 맞추기 위해 return 값에는 빈 문자를 적기
- URL 요청을 받아오기 위해 @GetMapping 대신 @PostMapping을 사용
- post 방식으로 데이터를 전송 했으므로 받을떄도 @PostMapping으로 받아야됨
- action="/articles/create" 으로 설정하였기 때문에 @PostMapping("/articles/create") 작성
- ArticleController 파일 열기
- 컨트롤러를 통해서 사용자가 전송한 폼 데이터를 받기
- DTO 만들기
- DTO 를 작성하기위해 새로운 패키지 생성
- com.example.firstproject에서 dto 패키지를 새로 생성
- 그 안에 ArticleForm 로 새로운 클래스 생성
- 입력 폼에서는 제목과 내용을 전송할 예정이니 DTO 필드에 title , content 를 선언
- 생성자 추가 ArticleForm 안에서 Generate -> Constructor 을 선택후 전체 클릭후 OK버튼을 클릭하면 자동으로 생성자 추가
- 폼 데이터를 잘 받았는지 확인 하기위해 Generate -> toString() 으로 toString()메서드 추
- DTO 를 작성하기위해 새로운 패키지 생성
- 폼 데이터를 DTO 에 담기
- 폼에서 전송한 데이터를 createArticle()메서드의 매개변수로 받기위해 form 객체를 매개변수로 선언
- 폼에서 전송한 데이터가 DTO에 잘 담겼는지 확인하기위해 System.out.println()문을 추가후 toString()메서드를 호출
- 입력 폼과 DTO 필드 연결
- 입력 폼에서 전송한 데이터를 DTO로 받기위해 입력 폼에 필드명을 지정해야함 그래서 제목을 입력하는 <input>태그에는 name="title" 속성을 추가 내용을 입력하는 <textarea> 태그에 name="content" 속성 추가
'BE > 스프링 부트 3' 카테고리의 다른 글
롬복과 리팩터링 (0) | 2023.11.21 |
---|---|
DTO를 데이터 베이스에 저장하기 (1) | 2023.11.20 |
뷰 템플릿 페이지에 레이아웃 적용하기 (0) | 2023.11.15 |
MVC 패턴을 활용해 뷰 템플릿 페이지 만들기 (1) | 2023.11.15 |
뷰 템플릿과 MVC 패턴 (1) | 2023.11.14 |