Post

[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 %>

Create Title Link

리다이렉트 사용하기

예를 들어, 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();
    }

Insert Article

이제 새 글을 입력하고 Submit을 누르면,

Show Article List

이렇게 해당 게시글의 상세 페이지를 볼 수 있다.

🔗 참고자료

📚 더 공부해야 할 것

  • HTTP 리다이렉트
  • 리다이렉트와 포워드의 차이점
This post is licensed under CC BY 4.0 by the author.