이번 포스팅에서는 웹소스에서 서버로 파일 전송을 위한 작업을 진행하기로 하겠음.
우선 파일업로드에 필요한 jar라이브러리를 추가하도록 하자
일반 웹프로젝트의경우 lib 폴더에 라이브러리를 추가하면 되지만 메이븐을 이용할 경우 pom.xml 파일에 dependency태그를 추가해주면 된다.
pom.xm의 dependencies 태그내에 다음 태그를 추가해주도록 하자
<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency>
이어서 WEB-INF -> mvc-config.xml 파일내에 다음과 같은 빈을 등록해주도록 하자
파일처리에 필요한 xml 설정이다.
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
이제 파일처리에 대한 준비과정은 끝이 났다.
이제 HelloWorld 클래스에 컨트롤러 맵핑을 해주도록 하자
@RequestMapping("/formFile") public String formFile(){ return "formFile"; }
이어서 return 페이지인 formFile.jsp 파일을 view 디렉토리내에 생성을 한후 다음코드를 body
태그내에 추가하도록 하자. 파일처리를 위해 form 태그내에 enctype을 추가해준다.
<form action="/requestFile" method="post" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit" value="서버전달"/> </form>
기존에 작성되어있는 RequestModel 모델클래스에 MultipartFile 타입의 변수와
getter/setter을 정의해주자
private MultipartFile file; public MultipartFile getFile() { return file; } public void setFile(MultipartFile file) { this.file = file; }
마지막으로 HelloWorld 컨트롤러에 파일정보를 받기위한 컨트롤러 맵핑을 추가해주자
@RequestMapping("/requestFile") public void requestFile(RequestModel model){ System.out.println("파일명:"+model.getFile().getOriginalFilename()); System.out.println("파일사이즈:"+model.getFile().getSize()); }
만약 console에 오류가 발생한다면 pom.xml -> Run As -> Maven Install 실행한번 해주도록
합시다.
자, 이제 url 호출 후, 파일첨부 후 콘솔로 파일정보를 확인해보도록 하겠다.
파일태그 폼화면
파일정보
도움이 되셨다면 공감클릭! 궁금하신점은 댓글!!
스프링3(Spring3)MVC 연동 (3) - 서버값 웹페이지로 전송하기 (0) | 2014.07.22 |
---|---|
스프링3(Spring3) MVC 연동 (2) - 폼값 전송 + 인코딩 설정 (7) | 2014.07.22 |
스프링3(Spring3) MVC 연동 (1) - STS 다운로드 및 헬로월드 출력하기 (6) | 2014.07.22 |
지난 글에는 클라이언트에서 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 |