[Spring Boot] 게시판 내 페이지 이동하기 - 링크와 리다이렉트⛓️
리다이렉트(Redirect)란?
클라이언트가 보낸 요청을 마친 후 계속해서 처리할 다음 요청 주소를 재지시하는 것
- 리다이렉트를 지시받은 클라이언트는 해당 주소로 다시 요청을 보내고 서버는 이에 대한 결과를 응답한다.
- 이를 통해 분리된 기능을 하나의 연속적인 흐름으로 연결할 수 있다.
링크와 리다이렉트를 이용해 페이지 연결하기
링크 만들기
1
<a href="/articles/new">New Article</a>
<a>
태그의 href
속성 값으로 요청을 보낼 링크 주소를 작성한다. 페이지와 페이지를 연결할 때 사용한다.
엔티티를 받고 있는 페이지가 있다면, href
속성 값으로 변수 값도 넣어줄 수 있다.
예를 들어 리스트 페이지에서 게시글 제목을 클릭하면 각 게시글의 상세 페이지를 보여주게 할 수 있다.
1
2
3
4
5
6
7
8
9
<% raw %>
{{#articleList}}
<tr>
<th scope="row">{{id}}</th>
<td colspan="2"><a href="/articles/{{id}}">{{title}}</a></td>
<td>{{content}}</td>
</tr>
{{/articleList}}
<% endraw %>
리다이렉트 사용하기
예를 들어, localhost:8080/articles/new 페이지에 접속해 새 글을 작성하는 경우를 생각해보자.
새 글 작성 Controller에서는 폼을 통해 /articles/create라는 URL 요청을 받고 있다.
요청에 대한 처리를 마친 후에 return
문에 원하는 화면을 리다이렉트(다음 요청 주소를 재지시)하면 새 글 작성 후 상세 페이지 화면으로 자연스럽게 넘어갈 수 있다.
1
2
3
4
5
6
@PostMapping("/articles/create")
public String createArticle(ArticleForm form) {
Article article = form.toEntity();
Article saved = articleRepository.save(article);
return "redirect:/articles/" + saved.getId();
}
이제 새 글을 입력하고 Submit을 누르면,
이렇게 해당 게시글의 상세 페이지를 볼 수 있다.
🔗 참고자료
📚 더 공부해야 할 것
- HTTP 리다이렉트
- 리다이렉트와 포워드의 차이점
This post is licensed under CC BY 4.0 by the author.