[Spring] 3.Spring Controller & 요청방식 & JSP

백준호·2022년 10월 22일
0

스프링스터디

목록 보기
3/5
post-thumbnail

@RequestMapping 어노테이션

  • URL 을 컨트롤러의 메서드와 매핑할 때 사용하는 어노테이션
  • 요청 주소(url) 설정, 요청 방식(GET, POST, DELETE, PATCH) 설정
  • 요청방식들을 동시에 설정 가능
    @RequestMapping(value = "/test7", method = {RequestMethod.GET, RequestMethod.POST})

@GetMapping / @PostMapping 어노테이션

  • 요청방식별로 제공되는 어노테이션

예제 코드)

package spring.di.log;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

	@Controller // controlloer연결
    @RequestMapping("/login") //상위경로가 같은 데이터 경로 끼리는 묶어서 처리할 수 있음... 다만 반드시 상위경로가 같아야함 ...이 경우 /login은 안써도 된다.

public class HomeController {

 1. @GetMapping("/") 
    @RequestMapping(value = "/", method= RequestMethod.GET)
	//두가지 모두 가능 
	public String start()
	{
		return "redirect:login/form1"; //return "form"과 같음 ... 
	}
	
 2.	@GetMapping("/login/form1") //맵핑주소는 맨앞에 '/'를 붙여야함
	public String login() {
		
		return "form"; // return값은 jsp 경로.
	}
	
 3.	@GetMapping("/login/read1")
	public String process(Model model,@RequestParam(value = "myid") String id, @RequestParam String mypass) {
		//보통 request나 session 내장객체에 정보를 담아 jsp에 넘겨준다. 그러나 Spring에서는 Model 별도의 객체 생성 없이(자동생성) 쓴다.
        //값을 넘길때는 @RequestParam ... (value = "myid")값은 string 변수값과 같을 경우 안써줘도 됨 ...변수값을 다르게 입력하고 싶으면 적어준다.
	
        model.addAttribute("id",id);
		
        String msg="";
		if(mypass.equals("1234"))
			msg="로그인성공";
		else
			msg="로그인실패";
		
		model.addAttribute("msg",msg);
		
		return "result";
	}
    
    
  4. public ModelAndView read1(@RequestParam String name,
			@RequestParam int age, @RequestParam(required = false) String msg, @RequestParam(defaultValue = "1") int currentPage) 
            /* 폼에 요소가 없으면 씀.(require = false) 라고 써주는 이유는 true가 기본값이라, 
			 * 항목이 없어도 에러가 안나게 하려면 false입력 요소가 없는값은 무조건 다써줘야함*/
            /* (defaultValue = "1") default값 출력 */
            // ModelAndView은 객체를 따로 생성해서 사용
            {
		
		ModelAndView model=new ModelAndView();
		
		//request에 저장
		model.addObject("name",name);
		model.addObject("age",age);
		model.addObject("msg", msg);
		model.addObject("currentPage", currentPage);
        
		//포워드해준다
		model.setViewName("process1");
		
		return model;
	}
    
    5. //map방식으로 읽기
	@PostMapping("/read3")
	public ModelAndView read3(@RequestParam Map<String, String> map) {
		ModelAndView model=new ModelAndView();
		
		//request저장
		String sang = map.get("sang");
		String price = map.get("price");
		
		String data=sang+"의 가격은"+price+"입니다";
		
		model.addObject("data", data);
		
		//포워드
		model.setViewName("process3");
		
		return model;
	}
    
	}

값들은 jsp에서 jstl(${..}) 문법을 이용해 출력가능하다.
https://velog.io/@bjtiger516/JSP-JSTLEL-%EC%A0%95%EB%A6%AC

profile
남들이 다 아는 걸 모를 수는 없지!

0개의 댓글