220801 오늘의 훈련 / 스프링 컨트롤러

(。◠ ◠。)·2022년 8월 1일

국비 개발 훈련 일기

목록 보기
11/35

컨트롤러에서 서비스를 부른다
서비스 구현체는 서비스어노테이션을 붙인다

오늘 스프링 설정을 하느라 약간 정신이 없었다....

@Controller
//얘는 컨트롤러야
@RequestMapping("/sample/*")
//이런 요청을 처리해
@Log4j
public class SampleController {
	
		//거기서 또 나눠서 처리해
	@RequestMapping("/basic")
	public void basic() {
		log.info("basic.......")  ;
	}
	
	@RequestMapping("/ex01")
	public String ex01(SampleDTO dto) {
		//맴버변수랑 이름이 같으면 파라메타가 자동으로 들어가융
//		ex01?name=aaa&age=11
		log.info(" " + dto);
		return "ex01";
		//같은이름의 jsp파일을 불러냄
	}
	
	@RequestMapping("/ex02")
	//맴버변수랑 이름이 다르면 @RequestParam를 사용해요
	public String ex02(@RequestParam("str") String name, @RequestParam("num")int age) {
//		ex02?str=aaa&num=10
		
		log.info("name : "+ name);
		log.info("age : "+ age);
		
		return "ex02";
	}
	
	@RequestMapping("/ex02List")
	public String ex02List(@RequestParam("ids")ArrayList<String> ids) {
//		ex02List?ids=aa&ids=bbb&ids=cc
		log.info("ids : "+ids);
		
		return "ex02List";
	}
	
	
	@RequestMapping("/ex02Array")
	public String ex02Array(@RequestParam("ids")String[] ids) {
//		/ex02Array?ids=aa&ids=bbb&ids=cccc
		log.info("ids : "+Arrays.toString(ids));
		
		return "ex02List";
	}
	
	@RequestMapping("/ex04")
	public String ex04(SampleDTO dto, @ModelAttribute("page") int page) {
//		ex04?name=bbb&age=20&page=1&str=마끄리마끄리
//		@ModelAttribute("page") 안쓰면 param으로 받아오고 쓰면 걍 받아올수있다.
//		SampleDTO dto < 커맨드개체
//		내가 받는다고 안해도 페이지에 받아오는 내용이 있으면 값이 간다.여기는 안들어오고..
		String str="";
		log.info("dto : "+dto);
		log.info("str : "+str);
		log.info("page : "+page);
		return "/sample/ex04";
	}
	
	@RequestMapping("/ex05")
	public String ex05(RedirectAttributes rttr) {
		log.info("ex05....................");
//		return "/sample/ex05_1";
		//페이지이름
		
		rttr.addAttribute("data","aaa");
//		주소창에 ex05_1?data=aaa 하고 데이터가 간다
//		 ${param.data}로 받을 수 있다 
//		주소창에 값이 있어서 새로고침해도 데이터가 남아 있다
		
		rttr.addFlashAttribute("data2","bbb");
//		주소에 없이 데이터가 간다
//		${data2}로 받을 수 있다.
//		주소창에 값이 없어서 새로고침하면 데이터가 사라진다
		
		return "redirect:/sample/ex05_1";
		//리다이렉트를 붙이니까 @RequestMapping("/ex05") 처럼 ex05_1로 감
	}
	
	@RequestMapping("/ex05_1")
	public void ex05_1() {
		log.info("ex05_1ex05_1ex05_1ex05_1");
	}
	
	@GetMapping("/ex06")
	//get요청만 처리합니다.
	public @ResponseBody SampleDTO ex06() {
//		SampleDTO를 보내줌
		log.info("ex06.....................");
		SampleDTO dto = new SampleDTO();
		dto.setName("둘리");
		dto.setAge(10);
		
		return dto;
	}
}

보이드형식이라 form.jsp를 부를거다

	@RequestMapping("/form")
	public void form() {
		log.info("폼입니다.");
	}
	
form.jsp    
<form action="result" method="post">
	id <input type="text" name="id"><br>
	pw <input type="password" name="pw"><br>
	name <input type="text" name="name"><br>
	tel <input type="text" name="tel"><br>
	<input type="submit" value="전송">
</form>

result페이지 result(SampleDTO dto)를 넣어줘서
${sampleDTO.id}로 받아올 수 있다

	@RequestMapping("/result")
	public void result(SampleDTO dto) {
	}
    
<h1>파람</h1>
${param.id}
${param.pw}
${param.name}
${param.tel}

<h1>SampleDTO</h1>
${sampleDTO.id}
${sampleDTO.pw}
${sampleDTO.name}
${sampleDTO.tel}

dto를 addAttribute해서 보냄

		@RequestMapping("/e")
		public String e (SampleDTO dto, Model model) {
		model.addAttribute("dto",dto);
		return "/sample/result";
	}
profile
화이탱!

0개의 댓글