지난 글에는 클라이언트에서 html form 값을 서버로 전송하였다면 이번 포스팅에는 서버값을
웹페이지로 넘겨보도록 하겠음.
지난시간과 마찬가지로 HelloWorld 클래스에 컨트롤러를 추가로 해보도록하겠다.
우선 컨트롤러 코드는 다음과 같다.
@RequestMapping("/response") public String response(Model model){ model.addAttribute("value1", "값넘기기1"); model.addAttribute("value2", "값넘기기2"); return "response"; }
이어서 response.jsp 파일을 view 디렉토리에 생성하도록 하고 body 태그내에
다음과 같이 작성해주자
값 1 : ${value1 } <br/> 값 2 : ${value2 }
서버 컨트롤러에서 model객체를 이용하여 addAttribute를 해주었는데 value1/value2라는 key값을
이용하여 jsp 페이지에 EL태그를 사용하면 다음과 같이 화면에 key값의 value가 출력되는것을
확인할 수 있을것이다.
잘 나오는고만~~
지금까지 request /response에 대하여 알아보았다.
도움이 되셨다면 공감클릭! 궁금하신점은 댓글!!
스프링3(Spring3) MVC 연동 (4) - 서버에 파일전송 (0) | 2014.07.22 |
---|---|
스프링3(Spring3) MVC 연동 (2) - 폼값 전송 + 인코딩 설정 (7) | 2014.07.22 |
스프링3(Spring3) MVC 연동 (1) - STS 다운로드 및 헬로월드 출력하기 (6) | 2014.07.22 |
이번시간에는
클라이언트 -> 서버로 값 전달하기를 다루어 보도록 하겠다.
우리는 보통 클라이언트 -> 서버로 값들을 전달하였을때
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 |
4일동안 휴가를 다녀오는 바람에 그동안 밀렸던 포스팅이나 해야겄다~
Spring에선느 제공하는 STS 를 이용하여 스프링 기본설정부터 DB설정등 다양한 설정을 다루어
보도록 하겠음..
확장자가 없는 restful 방식으로 진행 하도록 하겠음. ㅎㅎ
보통 spring 진행하면 .do로 작업하는데 요놈이 거슬림 -_- ...
우선 툴을 다운로드 받도록 하자
다운로드 URL - http://spring.io/tools
SPRING TOOL SUITE의 DOWNLOAD STS로 STS툴을 다운로드 받도록 하자
이클립스와 같은 툴이라서 이클립스를 사용했었더라면 익숙한 화면일 것이다.
다운로드가 완료되었다면 압축해제!
(현재최신버전인 3.6.0 으로 진행)
sts-bundle -> sts-X.X.X.RELEASE -> STS 실행
[실 행 화 면]
[프로젝트 진행할 워크스페이스폴더 지정]
워크스페이스까지 지정 후, 프로젝트를 생성한다
우클릭하여 New -> Spring Project
Spring Project를 생성하고자 한다면 프로젝트명을 입력하고 Select Spring version을 선택
(본인은 현재 최종인 3.2.3선택) 후,
Simple Projects -> Simple Spring Web Maven 선택 후 Finish 클릭
프로젝트 생성완료시 다음과 같이 프로젝트가 생성되는것을 확인 할 수 있다.
그럼 이제 웹서버를 등록해야 해보자
이클립스와 동일하기 Servers -> 마우스 우클릭후,
New -> Server 클릭
본인은 Tomcat 7.0으로 설정을 잡도록 하겠음
톰캣 설치 디렉토리 지정하고 JRE까지 설정 후 Finish를 해보도록 하자
아마 다음과 같이 프로젝트 추가가 되지 않을 수 있을 것이다.
이럴경우 다음화면처럼 Update Project를 해주도록 하자
[톰캣에 프로젝트 추가 안될시, 해결방법]
위 화면처럼 진행을 하면 다음 화면처럼 프로젝트 추가가 가능할것이다.
Finish!!
프로젝트 -> src -> main -> webapp -> mvc-config.xml xml파일이 존재한다.
해당 소스를 보면
<context:component-scan base-package="org.springframework.samples.web"/>
주석으로 막혀 있는데 이부분을 풀고 base-package값을 본인이 작업하고자 하는 패키지에 맞춰서 작성하도록 하자
본인은 다음과 같이 설정을 하였다.
<context:component-scan base-package="com.spring.web"/>
그리고 위와같은 base-package 영역과 동일하게 패키지를 만들어 준다음, 추가로 controller라는 패키지를 하단에 추가한 후,
HelloWorld라는 클래스를 하나 생성하였다.
생성한 HelloWorld 클래스내에 다음과 같이 코드를 작성하였다.
package com.spring.web.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HelloWorldController { @RequestMapping("/helloWorld") public String helloWorld(){ System.out.println("HelloWorld 콘솔내용"); return "helloWorld"; } }
return값으로 넘겨준 문자열은 jsp 페이지를 의미한다.
return "helloWorld" 를 주었으므로
helloWorld.jsp 를 하나 생성하도록 하자
jsp 생성경로는 src -> main -> webapp -> WEB-INF -> view안에다 생성해주면 되겠음.
생성된 jsp 내에 body 태그에 다음코드를 추가해보도록 하자
<H2>HELLO WORLD!!</H2>
코드는 작성이 완료 되었다.
본인은 프로젝트 명을 url에 작성하기 귀찮으므로 프로젝트명과 동일한 위치에 존재하는 Servers 폴더내에 본인이 추가한 웹서버디렉토리 내에 server.xml을 보면 거의 맨하단 context docbase= 어쩌구라는 태그가 존재한다.
거기서 path 값을 "/"변경해주었다.
<Context docBase="spring_study" path="/" reloadable="true" source="org.eclipse.jst.jee.server:spring_study"/>
이제 홈페이지 URL에 다음과 같이 호출을 해보았다
http://localhost:자신의웹서버포트/helloWorld
를 준다음의 동작화면이다.
이로써 spring의 mvc의 기본적인 hello world를 웹에 뽑아보았다.
도움이 되셨다면 공감클릭! 궁금하신점은 댓글!!
스프링3(Spring3) MVC 연동 (4) - 서버에 파일전송 (0) | 2014.07.22 |
---|---|
스프링3(Spring3)MVC 연동 (3) - 서버값 웹페이지로 전송하기 (0) | 2014.07.22 |
스프링3(Spring3) MVC 연동 (2) - 폼값 전송 + 인코딩 설정 (7) | 2014.07.22 |