재밌고 어려운 IT를 이해해보자~!
@PathVariable, 다양한 Ctrl 메서드 본문
이제 패스정보에 .do가 붙지않는다~
우리는 jsp를 더많이쓴다~ -> 동적인곳 사용
application.properties 웹설정이 담겨있는곳
WEB-INF는 반드시 viewResolver로 못가기때문에
properties에 설정이 되어있어야한다
gradle엔 jstl을 사용하기위한 implementtation 작성
VIEW가 컨트롤러한테 필요한 데이터를 요청해야한다.
-----------------------------------------------
[ @PathVariable ]
: Command 객체 외에 해당 C 메서드에서 필요한 데이터를 V 측에서 전송한 경우 ▶ 요청 경로에 보냄
V 측에서 전송한 데이터를 C 메서드에서 받기위해 사용하는 @ ▶ 메서드 인자에서 받음
TestController.java
package com.koreait.day0681;
import java.util.ArrayList;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import jakarta.servlet.http.HttpServletRequest;
@Controller
public class TestController {
@RequestMapping("/")
public String root(Model model) { // 첫요청 root ()안의 커맨드객체 사용
//data 와 리스트 타입의 datas 가 필요함
//Model model=new Model(); enw 사용 금지
model.addAttribute("data","홍길동");
ArrayList<String> datas=new ArrayList<String>();
datas.add("apple");
datas.add("banana");
datas.add("kiwi");
model.addAttribute("datas",datas);
System.out.println("로그");
return "index" ;
}
//다른방식
public ModelAndView root2(ModelAndView mav) { // 첫요청 root ()안의 커맨드객체 사용
//mav는 addObject 사용
mav.addObject("data","홍길동"); //output이 스트링으로 return 이 아닌 mav 객체를 return
mav.setViewName("index");
return mav;
// 대부분 mav를 사용하지않고 Model을 선호 방식이나 전달하는것은 모두동일
}
//프론트단과 백단이 아예다른회사일떄 가끔 쓰이는 방법
//커맨드를쓰려면 멤버변수의 인자이름이 같아야하는데 안같을때 쓴다.
// test 1,2,3 은 모두 같은기능!
@RequestMapping("/test")
public String test(Data data) { // boot라면 어노테이션으로 쓸것같다
//근본은 Command 객체 사용
System.out.println(data);
return "test";
}
//@RequestMapping("/test") 얘네도 RequestMapping이 필요하다
public String test1(HttpServletRequest req) { // // http를 사용하면 무거워짐
String apple=req.getParameter("a");
String banana=req.getParameter("b");
Data data=new Data();
data.setApple(apple);
data.setBanana(banana);
System.out.println(data);
return "test";
}
//@RequestMapping("/test")
public String test2(@RequestParam("a")String apple, @RequestParam("b")String banana) { // boot라면 어노테이션으로 쓸것같다
Data data=new Data();
data.setApple(apple);
data.setBanana(banana);
System.out.println(data);
return "test";
}
//예시 ...
// 너무많이 사용되는 케이스라 DTO에 넣는게 더일반적
@RequestMapping("/test3/{searchCondition}/{searchKeyword}") // 추가데이터를 요청 자체에 넣는방법 searchContent or saerchKeyword 둘다사용
public String test3(@PathVariable String searchCondition, @PathVariable String searchKeyword,Data data) { // boot라면 어노테이션으로 쓸것같다
//근본은 Command 객체 사용
System.out.println(data);
return "test3";
}
@RequestMapping("/async")
public @ResponseBody String async() {
// 비동기처리시,
// 페이지 이동 xxx
// 정보 전달 O
return "apple" ; // ture나 1이나 apple 같은 정보전달 (비동기)
}
}
'코리아IT핀테크과정' 카테고리의 다른 글
Validator (0) | 2024.03.13 |
---|---|
Lombok (0) | 2024.03.12 |
MySQL 설치 (0) | 2024.03.10 |
Command 객체 (2) | 2024.03.07 |
Spring 궁금증 정리 (0) | 2024.03.06 |
Comments