티스토리 뷰

void 메소드일 경우, 요청한 경로의 페이지를 자동으로 응답한다.

>> templates/test1/test1

 

원하는 페이지가 있다면,

리턴타입을 String으로 하고,

return " " 경로 작성 

ViewResolver가 return 앞에는 경로 뒤에는 확장자를 붙여줌.

templates + " " + .html

 

 

 

페이지이동(GET) / 연산(POST)

동일한 경로일지라도 어떻게 요청하느냐에 따라서 다른 작업이 들어가야 한다.

경로 > /join

GET > join페이지 이동

POST > 회원가입 DB insert

 

원래 value안에다가 써야하지만 하나만 쓸 때는 생략가능

 

경로는 동일하게 /ex02이지만
무슨 방식으로 전송했는지에 따라서 
실행되는 메소드가 다름.

보통,
get : 페이지 이동
post : DB CRUD 
request.getParameter를 쓰지 않아도
spring에서는 자동으로 매핑이 된다
Get방식이니까 쿼리스트링으로 name 전달

localhost:10002/ex/ex04?name=바나나
필드명과 매핑된다.
필드명과 다를 경우, @RequestParam을 넣어서
id가 들어오면 name에 들어간다.

//참고
@RequestParam("name") String updated_name
필드명을 바꿀 수 없으니까~~

한글깨짐도 없고, 형변환도 자동으로 된다.

 

html에서는 연산이 불가능 >> Thymeleaf 사용

html 상단에 추가하기

<html lang="en" xmlns:th="http://www.thymeleaf.org">

컨트롤러에서 받은 객체에서 앞글자 소문자로 바뀐게 자동으로 화면으로 날아감.

타입의 앞글자가 소문자로 바뀐 key값으로 쓸 수 있다. 

Controller
 
ex06.html
태그의 속성처럼 타임리프 사용
필드명만 써도 getter를 호출해준다.
부모에 접근해서 필드를 갖고 와라
부모는 ${}
필드는 *{}

 

//Domain.vo
@Component
@Data
public class MemberVO {
    private String name;
    private int age;
}
//Controller
@GetMapping("ex07")
public void ex07(String gender, MemberVO memberVO){
    log.info("ex07.................");
    log.info("memberVO : " + memberVO);
    log.info("gender : " + gender);
}
    
@GetMapping("ex07")
public void ex07(MemberVO memberVO, String gender){
    log.info("ex07.................");
    log.info("memberVO : " + memberVO);
    log.info("gender : " + gender);
}
//순서에 상관없이 값이 잘 들어간다.

@GetMapping("ex07")
public void ex07(@ModelAttribute("gender") String gender, MemberVO memberVO){
    log.info("ex07.................");
    log.info("memberVO : " + memberVO);
    log.info("gender : " + gender);
}

//원래 방식
@GetMapping("ex07")
public void ex07(String gender, MemberVO memberVO, Model model){
    log.info("ex07.................");
    log.info("memberVO : " + memberVO);
    log.info("gender : " + gender);
    
    model.addAttribute("gender", gender);
}

모델이라는 데이터 전달자 안에 request객체가 있다.
데이터 전송역할만 해주는 게 Model
개념상으로는 request가 더 큰 개념이다. request는 세션 가져오기, 캐릭터인코딩 설정 가능 등 할 수 있는 게 많음.

request를 축소했지만, scope영역은 Model이 관리하게 됨.

2개 이상부터는 @(어노테이션)사용하지 말고, Model객체 쓰는 것이 가독성에 좋다.

 

 

localhost:1002/ex/ex07?name=바나나&age=20&gender=여성

//ex07.html
<tr th:object="${memberVO}">
    <td th:text="*{name}"></td>
    <td th:text="*{age}"></td>
    <td th:text="${gender}"></td>
</tr>

 

 

 

'2022 > spring boot' 카테고리의 다른 글

day02[Proxy(프록시)]  (0) 2022.11.03
day02[spring MVC 실습]  (0) 2022.11.02
day02[oracle cloud]  (0) 2022.11.02
day01[IntelliJ]  (0) 2022.11.01
day01[framework, spring boot]  (0) 2022.11.01
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함