이번시간에는
클라이언트 -> 서버로 값 전달하기를 다루어 보도록 하겠다.
우리는 보통 클라이언트 -> 서버로 값들을 전달하였을때
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>
다시 실행해보도록 하자
한글값까지 정상적으로 넘어왔다.
이번시간에는 클라이언트의 값을 서버로 전달하였다면,
다음포스팅에는 서버값을 클라이언트로 전달해보도록 하겠다.
도움이 되셨다면 공감클릭! 궁금하신점은 댓글!!
스프링3(Spring3) MVC 연동 (4) - 서버에 파일전송 (0) | 2014.07.22 |
---|---|
스프링3(Spring3)MVC 연동 (3) - 서버값 웹페이지로 전송하기 (0) | 2014.07.22 |
스프링3(Spring3) MVC 연동 (1) - STS 다운로드 및 헬로월드 출력하기 (6) | 2014.07.22 |