10.Controller & RequestMapping

sen·2023년 10월 20일

스프링프레임워크

목록 보기
7/7
post-thumbnail
  • homeController에서 매개면수 Locale은 현재 시간을 뜻한다.
  • Model은 데이터 전달자로, 데이터를 request scope에 저장하려고 하면 Model이라는 전달자를 request대신에 사용하는것
  • request 객체가 model안에 포함되어 있다.
package com.example.ex02.controller;

import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import com.example.ex02.domain.vo.InfoDTO;

import lombok.extern.log4j.Log4j;

@Controller
@RequestMapping("/ex/*")
@Log4j
public class SampleController {

	@RequestMapping(value ="/basic",method = {RequestMethod.GET, RequestMethod.POST})
	public void basic(HttpServletRequest req) {
		
		log.info("basic····"+req.getMethod());
		}
	
	@RequestMapping //경로를 안정해주면 부모 requestMapping이 디폴트 값
	public void basic2() {
		log.info("basic2");
	}
	
	@GetMapping("/basicOnlyGet")
	public void basic3() {
		log.info("basic3 only get");
	}
	
	//외부에서 전달된 파라미터를 매개변수 필드명과 자동으로 매핑한다.
	@GetMapping("/ex01")
	public void ex01(InfoDTO infoDTO) {
		log.info("ex01"+infoDTO.getName()+","+infoDTO.getAge());
	}
	
	//외부에서 전달된 파라미터의 이름과 매개변수가 다를경우 @RequestParam을 통해 어디로 전달받을지 알려준다.
	@GetMapping("/ex02")
	public void ex02(@RequestParam("data1") String name, @RequestParam("data2")int age) {
		log.info("ex02"+name+","+age);
	}
	
	//파라미터를 arrayList 사용 return을 사용해 바로 경로가 ex03으로 뜰 수 있도록 지정
	@GetMapping("/ex03")
	public String ex03(@RequestParam("data") ArrayList<String> datas) {
		
		log.info("datas:"+datas);
		
		return "ex03";
		
		
	}
	
}
  • 만약 매게변수가 객체라면, 해당 클래스타입의 앞글자만 소문자로 변경된 값이 화면에서 사용할 key값이다
  • 예) 매개변수 타입이 InfoDTO라면 화면에서 사용 시 key값은 infoDTO가 된다.
  • 만약 key값을 수정하거나 매개변수가 많아진다면, 직접 requestScope에 담아서 전달해야한다.
  • 이때 request 객체를 직접 불러오지 않고, Model이라는 데이터전달자를 사용하게된다
  • 하지만 화면쪽에 전달할 데이터가 여러개가 아니라면 @ModelAttribute()를 사용하여 화면에 전달해 준다.
  • ModelAttribute를 사용하지 않으면 내가 적은 파라미터의 첫글자가 소문자로 바뀐걸 키값으로 설정한다.
@GetMapping("/ex04")) 매개변수 타입이 InfoDTO라면 화면에서 사용 시 key값은 
		infoDTO가 된다.
	public String ex04(~~@ModelAttribute("dto")~~ InfoDTO infoDTO) {
		log.info("======================");
		log.info("Ex04........");
		log.info(infoDTO.toString());
		log.info("======================");
		
		return "ex04";
	}

---------------------------------------

<body>

<h1>ex04PAGE</h1>
<table border="1">
<tr>
<th>이름</th>
<th>나이</th>
</tr>

<tr>
<td><c:out value="${infoDTO.name}"></c:out></td>
<td><c:out value="${infoDTO.age}"></c:out></td>

~~<td><c:out value="${dto.name}"></c:out></td>
<td><c:out value="${dto.age}"></c:out></td>~~
</tr>

</table>
</body>
</html>
profile
가보자고~!

0개의 댓글