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 | 31 |
Tags
- Merge sort
- 딥러닝
- 자바
- 지도학습
- 백준
- 너비우선탐색
- 코테
- 파이썬
- 머신러닝
- 깊이우선탐색
- 프로그래머스
- 스택과 힙
- 파이썬 오류
- HTTP
- 이진탐색
- rest api
- 코딩
- 해시
- 오버라이딩
- 파이썬 알고리즘
- post
- BOJ
- 비지도학습
- 딕셔너리
- 코딩테스트
- 캐싱
- 강화학습
- 멱등
- bineary search
- 알고리즘
Archives
- Today
- Total
chae._.chae
[Spring] 회원관리 예제 본문
728x90
반응형
@Controller
public class HomeController {
@GetMapping("/")
public String home() {
return "home"; // home.html
}
}
- @GetMapping("/") : localhost8080에 접속했을때, 호출된다.
- return "home" : home.html이 호출이 되어 연결된다.
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>
</body>
</html>
- home.html에 회원가입과 회원목록을 볼 수 있게 두가지 링크를 걸어둔다.
- 회원가입을 클릭하면, localhost:8080/members/new로 주소가 변경되고, 아직 만들어 둔게 없어서 에러가 뜬다.
static - index.html가 초기 페이지가 아니고, home.html이 초기 페이지이다.
- 컨트롤러가 정적 파일보다 우선 순위가 높다.
- 관련 컨트롤러가 있는지 먼저 찾고, 없으면 정적 파일을 찾는다.
template-members-createMemberForm
<!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>
<button type="submit">등록</button>
</form>
</div>
</body>
</html>
- 등록버튼 클릭 -> form의 action url로(members/new) post방식으로 이름이 넘어간다.
memberList
<!DOCTYPE html>
<html xmlns:th="http://www.thymelaf.org">
<body>
<div class="container">
<div>
<table>
<thead>
<tr>
<th>#</th>
<th>이름</th>
</tr>
</thead>
<tbody>
<tr th:each="member : ${members}">
<td th:text="${member.id}"></td>
<td th:text="${member.name}"></td>
</tr>
</tbody>
</table>
</div>
</div>
</body>
</html>
- ${members} : 모델 안에 있는 값을 꺼내온다.
- model.addAttribute("members", members) : 모델 안에는 리스트로 모든 회원이 들어있다.
- th:each를 통해 루프를 돌며 모든 회원에 대하여 아이디와 이름을 반환해준다.
MemberController
@Controller
public class MemberController {
private final MemberService memberService;
// 스프링 컨테이너에 등록을 하고 사용한다
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
// 등록
@GetMapping("/members/new")
public String createForm(){
return "members/createMemberForm";
}
@PostMapping("/members/new")
public String create(MemberForm form){
Member member = new Member();
member.setName(form.getName());
memberService.join(member);
return "redirect:/"; // 회원가입이 끝나면 홈화면으로 다시 돌아가기기
}
// 조회
@GetMapping("/members")
public String list(Model model){
List<Member> members = memberService.findMembers();
model.addAttribute("members", members);
return "members/memberList";
}
}
- 회원가입 -> /members/new로 연결되고, return members/createMemberForm을 실행한다. (템플릿에서 찾아 html을 뿌려준다.)
- url은 같지만, get/post에 따라서 다르게 mapping할 수 있다.
728x90
'스프링' 카테고리의 다른 글
Github Action과 AWS CodeDeploy를 사용한 CI/CD 구축 방법 (0) | 2023.01.02 |
---|---|
Spring Boot로 AWS S3에 이미지 저장하기 (0) | 2022.07.25 |
JPA 활용 프로젝트 - (1) 도메인 분석 (0) | 2022.05.10 |
Spring boot 구조 및 폼 데이터 전송 (0) | 2022.02.15 |
[Spring] 스프링 빈과 의존관계 (0) | 2022.01.21 |