링크(Link)
HTML
의 <a> 태그
or <form> 태그
로 작성.클라이언트
가 링크를 통해 페이지를 요청하면 서버
는 결과 페이지는 응답 함.리다이렉트(Redirect)
클라이언트
가 보낸 요청을 마친 후 계속해서 처리할 다음 요청 주소를 재지시하는 것.서버
에서 결과 페이지를 응답하지 않고 재요청하라는 회신을 보내는 것.서버
는 이에 대한 결과를 응답함.링크
, 리다이렉트
를 이용함.
뷰 파일
에 링크 거는 형식.
<a href="URL 주소">링크를 걸 대상</a>
리다이렉트 형식.
return "redirect:URL_주소";
글 목록 페이지
파일에 <a> 태그
의 href
속성 값으로 요청을 보낼 링크 주소
+ 텍스트
작성.<!-- 생략 -->
</table>
<a href="/articles/new" class="btn btn-primary">글 쓰기</a>
{{>layouts/footer}}
웹 페이지에서 잘 구현된 모습.
글 작성 페이지
파일에서도 마찬가지로 <a> 태그
의 href
속성 값으로 요청을 보낼 링크 주소
+ 텍스트
작성.<!-- 생략 -->
<button type="submit" class="btn btn-primary">등록</button>
<a href="/articles" class="btn btn-warning">뒤로가기</a>
</form>
<!-- 생략 -->
웹 페이지에서 잘 구현된 모습.
DB
에 저장 되겠지만 글이 제대로 잘 등록됐는 지 확인하고 싶음.리다이렉트
임.리다이렉트
는 클라이언트
의 요청을 받아서 새로운 URL
주소로 재요청
하라고 지시하는 것.Ex
1번 글은 /1
, 2번 글은 /2
, 100번째 글은 /100
식으로 됨.+
연산자를 이용해서 id
에 따라 URL
주소가 바뀌게 해주면 됨.@PostMapping("/articles/create")
public String createArticle(ArticleForm form) {
// 코드 생략.
Article saved = articleRepository.save(article);
return "redirect:/articles/" + saved.getId();
}
repository
의 save
메서드의 반환값을 저장한 변수로 부터 getId()
를 통해 id
값만 추출함.getter 메서드
가 있거나 @Getter
어노테이션이 있어야됨.Getter
: 외부에서 객체의 데이터를 읽을 때 사용하는 메서드.글 상세 페이지
파일에서 <a> 태그
의 href
속성 값으로 요청을 보낼 링크 주소
+ 텍스트
작성.<!-- 코드 생략 -->
</table>
<a href="/articles" class="btn btn-primary">목록</a>
{{>layouts/footer}}
글 상세 페이지
로 이동하도록.게시글의 제목
인 {{title}}
을 <a> 태그
로 감싸고 href
속성 값으로 주소를 입력해주면 됨. {{#articleList}}
<tr>
<th>{{id}}</th>
<td><a href="/articles/{{id}}">{{title}}</a></td>
<td>{{content}}</td>
</tr>
{{/articleList}}