Spring - mvc, 바인딩, 포워딩 등

Hwawon_2·2022년 3월 30일
0

바인딩

BasicControl
1.포워딩시 바인딩을 하고 싶다면 Model을 선언합니다.

2.model.addAttribute("보낼 이름", 보낼 자료);
넘어간 데이터는 .jsp파일에서 el을 이용해 출력합니다.
ex - > model.addAttribute("test", 자료); 로 바인딩한 경우
${test}로 .jsp에서 출력 가능

result를 먼저 선언을 해줍니다.

model.addAttribute("test", 자료);

ㄴ> result라는 이름으로 exchange.jsp로 보내주겠다.
ㄴ> won이라는 이름으로 exchange.jsp로 보내주겠다.

  1. exchange.jsp를 타겟으로 하니 viesw폴더에 생성해주세요
    views / 우클릭 new / jspfile / exchange 생성

    = 컨트롤러에서 데이터를 뷰즈로 보내주는 역할이 model.addAttribute


    /getDate 바인딩을 해주겠습니다.

  2. Model을 선언해줍니다.

  3. model.addAttribute("보낼 이름", 보낼 자료);
    data1, data2 변수를 getResult.jsp 보내서 위 콘솔메세지를 화면에서 조회가능하게 해줍니다.

    getResult 타겟으로 하니 viesw폴더에 생성

    views / 우클릭 new / jspfile / getResult 생성

form으로 보내는 방법

form 페이지와 결과페이지를 분리해야 합니다.
다만 목적지 주소가 .jsp기준이 아닌, @RequestMapping상의 주소기준으로 갑니다.
주소 moneyForm으로 연결되도록 아래에 어노테이션 + 메서드를 구성해주세요. moneyForm.jsp로 연결됩니다. moneyForm.jsp 에는 목적지를 # 으로 하고 name = won 인 폼을 추가로 만들어주세요.

  1. @RequestMapping에 어떤 주소로 접속해야 하는지 적는다.
  2. public String 메서드()를 만든다.
  3. return구문 뒤에 연결할 .jsp파일의 이름을 적는다 (확장자는 x)
  4. moneyForm 타겟으로 하니 viesw폴더에 생성
    views / 우클릭 new / jspfile / moneyForm 생성

    ㄴ> 이걸 어디로 보내야 돈을 체크할수 있을까요?

    답: action="getMoney"
    실행 하면 /moneyForm

    /getMoney 로 온다.
    상단 /getData 주소를 타겟으로 하는 /dataForm을 만들어 보겠습니다.
    -1. @RequestMapping에 어떤 주소로 접속해야 하는지 적는다.

    -2. public String 메서드()를 만든다.

    -3. return구문 뒤에 연결할 .jsp파일의 이름을 적는다

    -4. dataForm 타겟으로 하니 viesw폴더에 생성
    views / 우클릭 new / jspfile / dateForm 생성

    실행하면 /dataForm

    제출 /getData

메서드 방식을 post로 변경하겠습니다.

f12누르고 확인할수 있다

(post 방식은 한글이 깨져서 나옴)
해결 방안은
web.xml에 와서

작성해 준다.
실행 해주면

한글로 들어가서 글이 안깨지는걸 확인할수 있다.

@RequestMapping는 모든 방식을 허용하는걸 알수 있다.

post 방식으로만 받는 방법


method=RequestMethod.POST 이걸 써주면 post방식으로만 받을수 있다.
주소창에 getMoney?won=10000 입력을 하고 엔터를 치면 안들어 가지는걸 확인 할수 있다. (get방식 이라서 안됨 post방식으로만 받고 있어서)

moneyForm
에서 메서드 지정을 안해서 get방식으로 인식을 합니다.

ㄴ실행을 하면 에러가 남

post방식을 주고

실행하면 post 방식이기 때문에 에러가 안나는걸 확인할수 있다.

/getData post만 처리할 수 있게 처리

ㄴ> method=RequestMethod.POST 작성
연동된 form도 post로 전송하도록 처리
dataForm

ㄴ> method="post"
method=RequestMethod.POST(GET)이걸 작성하기 싫을때
바로 작성하는 거
@GetMapping (대놓고 겟방식만 허용하겠다)
@요청메서드 Mapping 은 해당 메서드만 허용하는 어노테이션

실행 해보면
/onlyGet 을 치고 들어갔을때

잘 되는걸 확인 가능( 파일이 없기 때문에 에러나는게 맞음)
@PostMapping로 바꿔서 실행 해보면

get방식은 허용하지 않는 다는 문구를 확인 가능

profile
코딩 일기장

0개의 댓글