변수를 품은 URL
@GetMapping("/board/ { id }/" ) => { id } < - 변수 URL
public String show ( @PathVariable Long id ){ => @PathVariable < - 변수URL 값을 파라미터로 가져오겠다.
Optional<Board> boardEntity = boardrepository . findById(id); // 입력받을 변수URL을 pk값처럼 사용
// repository . find 해서 찾은 객체를 Entity 에 넣기
( DB에서 data 가져오는건 Repository 역할 )
<DB>
<JPA - Repository>
이 Entity 를 VIEW 에 뿌려주면 되는데, 그러려면 Model 이 필요함 <MVC>
public String show( @PathVari Long id , Model model ) { model.addAttribute("boardkey", boardEntity); ~} // 모델에 담고
VIEW 하고 연결 (mustache 활용)
1. Model 에 "변수" 만 담기
( 객체 자체 X / 객체 안의 변수 O => {{ username }} - > ("username" , entitiy.getusername( ) ); )
2. Model 에 "객체" 자체를 담기
( 객체 자체 O => {{BoardEntityKey}} -> ("BoardEntityKey" , BoardEntity )
{{ #BoardEntityKey }} ~ {{ / BoardEntityKey }} - 객체 가져다 쓸 범위 지정 하고
<td> {{ id }} </td>
<td> {{ name }} </td> - 객체 안에 변수들을 가져다 {{ }} 로 쓰면 됨
- 따로따로 객체 안의 변수를 model 에 넣어서 하는거
{{ id }} -> model.addAttribute("id", entitiy.getid());
{{ name }} -> model.addAttribute("name", entitiy.getname());
.... 계속 따로따로 하나하나 다 모델에 담아야 함.
담을거 많으면
=> 객체 자체를 model 에 담아서 쓰자!
< 머스타치 객체 model 쓰는법 >
1. {{ # resultkey }} // Key값 소환. 객체를 #여기서부터 /저기까지 가져다 쓰겠다.
<th> {{ id }} </th>
<td> <a href = " http://localhost:8080/board/ {{ id }} " {{ title }} </a> </td>
// 링크걸때, 변수 URL 값을 객체 가져왔으니까 거기서 {{ id }} 로 그대로 쓰면됨
{{ / resultkey }}
2. <td> <a href = "/board/ {{ resultkey . id }} > {{ title }} </a> </td> // {{ 객체 . id }} 메소드처럼 뽑아서 쓰기
-------------------------------------------------------------------------------------------------------------------------------------------
< @PostMapping 에서 변수URL로 링크시키는법 => REDIRECT >
변수URL 은 < @GetMapping 에서 링크로 다른 @GetMapping 페이지로 단순 이동 >
1. @GetMapping{ "/board/{ id }/ 로 일단 받을 페이지만 만들어놓고
2. 그 URL 로 들어가는건, showall 전체조회 HTML 에서 글 눌렀을때의 "링크"로 URL 을 걸어서 들어가는 것
3. Edit 에서도 마찬가지로, "링크"로 걸어둬서 들어가는 것
4. HTML 에서는 "/board/ {{ boardentity . id }} / edit / " 이런식으로 id 받아서 링크걸기가 가능해서
그걸 링크로 이용하는 것. Controller 에서는 그 url Link 를 받을 @GetMapping 만 해두는 것.
< @PostMapping 에서 data를 Repository 에 Save 하면서, "동시"에 링크 >
- "작성" 이라는 PostMapping 행동 에다가 동시에 "링크" 까지 걸어주어야 한다.
=> @PostMapping 에 리다이렉트를 이용한다.
Redirect : " " + saved.getid( );
변수 URL 이 들어왔을 시에 page 는 @GetMapping으로 만들어 뒀고,
글을 작성한 후, @PostMapping 에서 저장함과 동시에 자기가 작성한글(변수 URL)로 이동하게 하고 싶을 때,
=> 리다이렉트
1. form action = "url" 2. PostMapping("url") 3. redirect : "url"
return " redirect : /board/ " + saved.getId( ); (객체 저장한거에서 id값 꺼내와서 직접 url 에 더해주기)
=> localhost:8080/board/12 이렇게 되서 redirect 된다.
'Back to the Spring' 카테고리의 다른 글
Dependency Injection => Inversion Of Control (0) | 2022.08.18 |
---|---|
[Spring] Spring MVC 의 등장 (0) | 2022.08.18 |
세션 VS JWT(토큰) .Feat 쿠키 (1) | 2022.06.12 |
MultiThread - 몇 명이든 내가 처리한다. (0) | 2022.06.11 |
Servlet 서블릿 등장 , http? 내가 다 연결해줄게! (0) | 2022.06.11 |