이번시간에는 


클라이언트 -> 서버로 값 전달하기를 다루어 보도록 하겠다.


우리는 보통 클라이언트 -> 서버로 값들을 전달하였을때 

request.getParameter("파라미터명")으로 값전달을 했었을 것이다.


스프링에서 위와 같은 방식으로도 값을 받아도 동일하게 받을 수 있지만

만약 여러 값을 받을경우에 model 클래스를 하나 생성해서 그안에다가 변수 선언 + getter / setter을 정의해주는 방법으로도 값을 서버에서 

받을 수 있을 것이다.


우선은 테스트를 위하여 기본 html 폼화면을 출력하는 컨트롤러+jsp페이지와 값 전달을 위한 request컨트롤러 하나를 만들어 보도록 하겠다.


연동 소스는 이전 시간에 생성했던 프로젝트에 이어서 작성하기로 하겠음.


1. 기본 폼화면(컨트롤러명 : /form, jsp 파일명 : form.jsp)


기존소스인 HelloWorld 클래스에 다음과 같은 컨트롤러를 맵핑해주도록 하자


@RequestMapping("/form")
public String form(){
	return "form";
}

이어서 WEB-INF -> view 디렉토리에 form.jsp를 생성해주고 다음과 같이 코드를 작성해보도록 

하자


<form action="/request" method="post">
	제목 : <input type="text" name="title"/>
	<br/>
	내용 : <textarea rows="10" cols="50" name="content"></textarea>
	<br/>
	<input type="submit" value="서버전달"/>
</form>


submit버튼 클릭시, 소스내에 form안에 정의한 값들을 받기위해  form action의 값인 /request명으로 컨트롤러 맵핑해주도록 하자


2. 클라이언트 -> 서버로 값 확인하기 위한 컨트롤러

* 두가지 방식으로 예를 들 수 있겠다. 

   일반적인 request.getparameter로 값 전달 받는방법과 model 클래스 생성하여 폼의 name

   명칭으로 맞춰주는 방식이 있다.


1) request.getParameter로 값 전달받기

@RequestMapping("/request")
public void request(HttpServletRequest request){
	System.out.println("제목:"+request.getParameter("title"));
	System.out.println("내용:"+request.getParameter("content"));		
}


2) model 클래스생성하여 값 전달받기

현재 com.spring.web패키지내에 model 패키지를 생성해준후 생성 패키지에 Model.java 클래스를 생성다음과 같이 선언을 해주도록 하겠다.


 - RequestModel.java - 

package com.spring.web.model;

public class RequestModel {
	private String title;
	private String content;
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
}


다음 기존 /request  맵핑된 컨트롤러를 약간 수정해보도록 하자

@RequestMapping("/request")
public void request(RequestModel model){
	System.out.println("제목:"+model.getTitle());
	System.out.println("내용:"+model.getContent());
		
}


본인의 경우 실행시, 화면이 깨졌다.





인코딩설정이 안맞아서 그런거 같다.


이클립스 및 web.xml 인코딩 설정을 해주도록 하자


* 이클립스 인코딩 설정











* 스프링 인코딩 설정


web.xml 의 servlet-mapping 다음태그에 추가해보도록 하자

<filter>
    	<filter-name>encodingFilter</filter-name>
    	<filter-class>
			org.springframework.web.filter.CharacterEncodingFilter
	</filter-class>
   	<init-param>
      		<param-name>encoding</param-name>
      		<param-value>UTF-8</param-value>
    	</init-param>
</filter>
<filter-mapping>
    	<filter-name>encodingFilter</filter-name>
    	<url-pattern>/*</url-pattern>
</filter-mapping>



다시 실행해보도록 하자 




한글값까지 정상적으로 넘어왔다.

이번시간에는 클라이언트의 값을 서버로 전달하였다면, 

다음포스팅에는 서버값을 클라이언트로 전달해보도록 하겠다.





슈퍼맨슈퍼맨슈퍼맨



도움이 되셨다면 공감클릭! 궁금하신점은 댓글!!