Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Backtracking
- 프로그래머스
- 그리디
- switch
- greedy
- 해시
- DFS
- 브루트포스
- Algorithm
- 동적계획법
- 네트워크
- 구현
- 해시맵
- 너비우선탐색
- programmers
- 깊이우선탐색
- dynamic programming
- Spring
- 스프링
- broadcast
- BFS
- 알고리즘
- boj
- 백트래킹
- DynamicProgramming
- DP
- 이분탐색
- 백준
- Network
- HashMap
Archives
- Today
- Total
옌의 로그
[Spring] 스프링 입문 | 5. 회원관리 예제 - 웹 MVC 개발 본문
(본 게시글은 인프런 스프링 입문 강의에 의해 작성되었습니다.)
회원 웹 기능 - 홈 화면 추가
홈 컨트롤러 추가
src/main/java/hellospring/controller/HelloController.java
package yenie.hellospring.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HomeController {
@GetMapping("/")
public String home() {
return "home";
}
}
- @GetMapipng("/") 을 통해 "/" url로 접속시 HomeController가 호출된다
- http://localhost:8080/
회원 관리용 홈 html
src/main/java/resources/templates/home.html
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div class="container">
<div>
<h1>Hello Spring</h1> <p>회원 기능</p>
<p>
<a href="/members/new">회원 가입</a>
<a href="/members">회원 목록</a>
</p>
</div>
</div> <!-- /container -->
</body>
</html>
welcome page인 index.html이 존재하더라도, 컨트롤러가 정적 파일보다 우선순위가 높기 때문에 HomeController를 만들어 둔 이상 "/" url의 get 매핑에 의해 컨트롤러가 실행된다
(실행 스크린샷)
회원 웹 기능 - 등록
회원 등록 폼 개발
회원 등록 폼 컨트롤러
src/main/java/hellospring/controller/MemberController.java
package yenie.hellospring.controller;
import org.springframework.stereotype.Controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import yenie.hellospring.domain.Member;
import yenie.hellospring.service.MemberService;
import java.util.List;
@Controller
public class MemberController {
private final MemberService memberService;
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
@GetMapping(value = "/members/new")
public String createForm() {
return "members/createMemberForm";
}
}
- /members/new 로 접근했을 때, GET 매핑에 의해 HTML(members/createMemberForm)로 작성된 폼이 연결된다
회원 등록 폼 HTML
src/main/java/resources/templates/members/createMemberForm.html
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div class="container">
<form action="/members/new" method="post">
<div class="form-group">
<label for="name">이름</label>
<input type="text" id="name" name="name" placeholder="이름을 입력하세요"> </div>
<label for="age">나이</label>
<input type="number" id="age" name="age" placeholder="나이를 입력하세요"> </div>
<button type="submit">등록</button> </form>
</div> <!-- /container -->
</body>
</html>
- <form> 태그 세부 속성 method를 보면 post 방식으로 입력받은 데이터를 전송할 것임을 확인할 수 있다
(실제 화면)
회원 등록 컨트롤러 만들기
웹 등록 화면에서 데이터를 전달 받을 Form 객체
src/main/java/hellospring/controller/MemberForm.java
package yenie.hellospring.controller;
public class MemberForm {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
- 이름 getter/setter
- 나이 getter/setter
회원 컨트롤러에서 회원을 실제 등록하는 기능
src/main/java/hellospring/controller/MemberController.java
@PostMapping(value = "/members/new")
public String create(MemberForm form) {
Member member = new Member();
member.setName(form.getName());
member.setAge(form.getAge());
System.out.println(form.getName() + form.getAge()); // 테스트용
memberService.join(member);
return "redirect:/";
}
- 위 코드를 MemberController.java에 붙여넣는다
- POST 매핑을 통해 form으로부터 데이터를 받으면 해당 데이터를 사용중인 DB (현재로선 내장 레포지토리) 에 저장한다
- 문제가 없는 경우(try-catch로 작성해야한다. 위 코드엔 빠져있음), memberService를 확인해 가입시킨다(join)
회원 웹 기능 - 조회
회원 컨트롤러에서 조회 기능
src/main/java/hellospring/controller/MemberController.java
@GetMapping(value = "/members")
public String list(Model model) {
List<Member> members = memberService.findMembers();
model.addAttribute("members", members);
return "members/memberList";
}
- 위 코드를 MemberController.java에 붙여넣는다
- GET 매핑을 통해 /members 로 접근시 전체 회원 목록을 가져오게 한다.
- 회원 목록을 보여주는 뷰(HTML)는 members/memberList에 구현
회원 리스트 HTML
src/main/java/resources/templates/members/memberList.html
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div class="container">
<div>
<table>
<thead>
<tr>
<th>#</th>
<th>이름</th>
<th>나이</th>
</tr>
</thead>
<tbody>
<tr th:each="member : ${members}">
<td th:text="${member.id}"></td>
<td th:text="${member.name}"></td>
<td th:text="${member.age}"></td>
</tr>
</tbody>
</table>
</div>
</div> <!-- /container -->
</body>
</html>
(실제 화면)
'스터디 > 스프링' 카테고리의 다른 글
[Spring] 스프링 핵심 원리 기본편 | 1. 객체 지향 설계와 스프링 (0) | 2023.08.24 |
---|---|
[Spring] 스프링 입문 | 4. 스프링 빈과 의존관계 (2) | 2023.07.06 |
[Spring] 스프링 입문 | 3. 회원관리 예제 - 백엔드 개발 (0) | 2023.07.06 |
[Spring] 스프링 입문 | 2. 스프링 웹 개발 기초 (1) | 2023.06.15 |
[Spring] 스프링 입문 | 1. 프로젝트 환경설정 (0) | 2023.06.12 |
Comments