링크
=> 미리 정해놓은 요청을 간편히 전송하는 기능(클릭하면 원하는 주소로 이동)
리다이렉트
=> 클라이언트가 보낸 요청을 마친 후 계속해서 처리할 다음 요청 주소를 재지시 하는것(a로 가는 페이지를 b로 가도록 만듦)
링크 만드는 방법
- 컨트롤러에서 반환하는 뷰파일 켜기(mustache)
- 주소가 들어가기를 원하는 위치에 "<a href"주소">화면에 보일 문구</a>" 입력하기
{{>layouts/header}}
<form class="container" action="/articles/create" method="post">
<div class="mb-3">
<label class="form-label">제목</label>
<input type="text" class="form-control" name="title">
</div>
<div class="mb-3">
<label class="form-label">내용</label>
<textarea class="form-control" rows="3" name="content"></textarea>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
<a href="/articles">Back</a>
</form>
{{>layouts/footer}}

리다이렉트
- 컨트롤러에서 리다이렉트 할 메서드로 이동
- 리턴 값을 "return "redirect:URL_주소";" 로 입력하기
@PostMapping("/articles/create")
public String createArticle(ArticleForm form) {
log.info(form.toString());
// System.out.println(form.toString());
// 1. DTO를 엔티티로 변환
Article article = form.toEntity();
log.info(article.toString());
//2. 리파지터리로 엔티티를 DB에 저장
Article saved = articleRepository.save(article);
log.info(saved.toString());
return "redirect:/articles/" + saved.getId();
}
@Getter 어노테이션
- 자바에서 전통적으로 사용해 온 메서드로 외부에서 해당 필드값을 읽어올때 사용(위의 예시에서는 Id를 읽어온다)
- 위의 예시에서는 entity의 값을 읽어와야 하기 때문에 entity 파일에 @Getter 추가
- 롬복을 통해 사용가능
package com.example.firstproject.entity;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.ToString;
@Entity
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Getter
public class Article {
@Id
@GeneratedValue
private Long id;
@Column
private String title;
@Column
private String content;
}