게시판 만들기(스프링 부트3, 나도코딩 스터디)/6장. 게시판 내 페이지 이동하기

6.1~6.2 링크와 리다이렉트를 이용해 페이지 연결하기(게시판 만들기 / 길벗 코딩 자율학습단)

coding232624 2023. 11. 26. 17:02

링크

=> 미리 정해놓은 요청을 간편히 전송하는 기능(클릭하면 원하는 주소로 이동)

리다이렉트

=> 클라이언트가 보낸 요청을 마친 후 계속해서 처리할 다음 요청 주소를 재지시 하는것(a로 가는 페이지를 b로 가도록 만듦)

 

링크 만드는 방법

  1. 컨트롤러에서 반환하는 뷰파일 켜기(mustache)
  2. 주소가 들어가기를 원하는 위치에  "<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}}​

 

 

 

리다이렉트

  1. 컨트롤러에서 리다이렉트 할 메서드로 이동
  2. 리턴 값을 "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;
}