재밌고 어려운 IT를 이해해보자~!

@PathVariable, 다양한 Ctrl 메서드 본문

코리아IT핀테크과정

@PathVariable, 다양한 Ctrl 메서드

언제나즐거운IT 2024. 3. 11. 23:50

이제 패스정보에 .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