메이븐에 파일관련 라이브러리를 추가하여 진행해야 하므로
pom.xml에 dependency를 등록 하도록 하겠습니다.
<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>
등록하였으면 컨트롤러에 2개의 맵핑을 선언합니다.
/** * 파일등록화면 * @return */ @RequestMapping("/form") public String form(){ return "form"; } /** * form submit 파일결과 받기 * @param file */ @RequestMapping("/getFile") public void getFile(FileVo file){ System.out.println(file.getFile().getOriginalFilename()); }
첨부파일을 서버에서 받기위하여 vo클래스를 하나 생성 해보겠습니다.
패키지명 : com.spring.study.vo
vo 클래스명 : FileVo
package com.spring.study.vo; import org.springframework.web.multipart.MultipartFile; public class FileVo { private MultipartFile file; public MultipartFile getFile() { return file; } public void setFile(MultipartFile file) { this.file = file; } }
등록폼을 위한 form.jsp 파일을 view 디렉토리내에 생성 하여
body태그에 간단하게 다음코드를 추가합니다.
<form action="/getFile" method="post" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit" value="서버전달"/> </form>
서버를 시작하여 form URL 호출을 해보겠습니다.
파일 첨부 후 "서버전달" 버튼 클릭을 하게 되면
위 오류메시지가 발생하게 됩니다.
스프링에서 파일처리를 위해서는
MultipartResolver 설정을 잡아주어야 하는데
해당 설정부분이 빠져있어서 파일처리도중 Exception 발생이 일어난겁니다.
mvc-config.xml 파일내에 다음 코드를 추가해주도록 합니다.
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
위 코드를 추가하신다음 다시한번 파일첨부후 실행을 해보도록 합니다.
첨부후 "서버전달"버튼 클릭을 하면
이번에는 500에러가 아닌 404 에러가 나타난다면
정상적으로 파일전송이 완료된겁니다.
이클립스의 콘솔을 확인해보시면 System.out.println을 이용하여
전송한 첨부파일의 파일명이 출력된 것을 확인할 수 있습니다.
by 개발로짜
Spring3 Pathvariable 어노테이션을 이용하여 PARAMETER를 URL처럼 받아보기 (0) | 2014.11.11 |
---|---|
Spring3 jackson JSON 라이브러리 + ResponseBody 이용하여 JSON 파싱하기 (0) | 2014.11.10 |
Spring3 RESTFUL 방식 리소스파일 및 favicon 인식할수 있게 설정하기 (3) | 2014.11.07 |
Spring3 한글깨짐 방지를 위한 UTF-8 인코딩 설정하기 (6) | 2014.11.06 |
STS 이클립스를 이용하여 UTF-8 인코딩 설정 및 Spring3 MVC 연동해보기 (3) | 2014.11.06 |
이번 포스팅은 스프링 MVC 환경 설정중
한글깨짐 현상을 해결하기 위한방법을 포스팅 하도록 하겠습니다.
테스트를 위하여 form submit 테스트를 해보겠습니다.
2014/11/06 - [개발에필요한연동법/스프링연동] - STS 이클립스를 이용하여 UTF-8 인코딩 설정 및 Spring3 MVC 연동해보기
@RequestMapping("/form") public String form(){ return "form"; } @RequestMapping("/submit") public String submit(HttpServletRequest request, Model model){ model.addAttribute("text",request.getParameter("text")); return "submit"; }
2개의 컨트롤러를 추가 하였습니다.
form url은 입력폼이 들어있는 페이지입니다.
submit은 form페이지에서 입력받은 text태그의 내용을 출력하는 화면입니다.
각 페이지를 다음처럼 작성합니다.
<h3>폼전송</h3> <form action="/submit" method="post"> <input type="text" name="text" /> <input type="submit" value="전송"/> </form>
<h3>폼전송 결과 : ${text }</h3>
코드 작성을 하였다면 실행을 해보도록 하겠습니다.
실행결과 한글깨짐이 발생합니다.
request.setCharacterEncoding("utf-8");
submit 컨트롤러에 위와같이 설정을 해주면 한글을 깨지지 않겠지만
각 컨트롤러마다 추가를 해줄 수 없으므로 web.xml파일의 web-app 태그내에
다음과 같이 코드를 추가해주도록 합니다.
<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>
코드를 추가하셨다면 form URL을 재호출하여
한글전송을 테스트 해보도록 하겠습니다.
정상적으로 한글 출력이 잘되네요.
다음은 파일전송에 대하여 포스팅 하도록 하겠습니다.
by 개발로짜
Spring3 Pathvariable 어노테이션을 이용하여 PARAMETER를 URL처럼 받아보기 (0) | 2014.11.11 |
---|---|
Spring3 jackson JSON 라이브러리 + ResponseBody 이용하여 JSON 파싱하기 (0) | 2014.11.10 |
Spring3 RESTFUL 방식 리소스파일 및 favicon 인식할수 있게 설정하기 (3) | 2014.11.07 |
Spring3 파일전송을 위한 multipartResolver 설정하기 (2) | 2014.11.07 |
STS 이클립스를 이용하여 UTF-8 인코딩 설정 및 Spring3 MVC 연동해보기 (3) | 2014.11.06 |
스프링 MVC 연동에 대해서 포스팅해보도록 하겠습니다.
개발툴은 STS(Spring Tool Suite) 를 이용하겠습니다.
http://spring.io/tools/sts/all
해당 페이지로 이동하여 자신의 OS환경에 맞는 툴을 다운로드 받습니다.
저는 Windows 32bit 툴을 다운로드 받았습니다.
압축해제를 하도록 하겠습니다.
/sts-bundle/sts-3.x.x.RELEASE/
디렉토리에 들어가시면 STS 실행 프로그램이 있습니다.
실행!!!
Spring 프로젝트 진행시 인코딩을 UTF-8환경으로 진행할 예정이므로
제일먼저 STS(이클립스) 인코딩설정을 먼저 해줍니다.
① Window -> Preferences -> General -> Workspace의 Text encoding을 UTF-8로 변경해주십니다.
보통 Default로 MS949로 정의되어있어서 간혹가다 인코딩 문제가 발생하기 쉽기 때문입니다.
Other를 클릭하셔서 UTF-8로 입력해주시거나 selectbox로 선택 후 Apply 버튼을 클릭합니다.
② Window -> Preferences -> General -> Web 의 CSS,HTML,JSP 3개지 설정의 Encoding을 UTF-8로 변경해주십니다.
역시 이부분도 Apply 버튼 클릭!!
③ 마지막으로 Window -> Preferences -> General -> Contetn Types의 Text가 있습니다.
Text선택 후 Default encoding을 UTF-8이라고 입력 후 Update클릭합니다.
"OK" 버튼을 클릭하면 이클립스(STS)의 인코딩 설정은 마무리가 되었습니다.
본격적으로 프로젝트 생성하여 간단하게 Spring MVC 설정을 해보도록 하겠습니다.
※ Spring 프로젝트는 별도로 정의를 해주지 않아도 RESTFUL로 설정이 되어있으므로
"xxx.do"와 같은 확장자 지정을 해주지 않아도 됩니다.
① New -> Spring Project
② Project name 입력 -> Simple Projects(Simple Spring Web Maven) 선택 -> Select Spring version 선택(Default로 하여도 무관)
-> Finish 클릭
그럼 프로젝트 생성이 완료 되었습니다.
"Dynamic Web Project" 로 생성해도 무관하지만
라이브러리파일들을 일일이 모두 lib 디렉토리내에 넣어줘야하는 번거로움이 있어서
Maven으로 간편하게 라이브러리 관리 및 Spring 환경설정을 위하여
"Spring Web Maven" 프로젝트로 진행하도록 하겠습니다.
Spring 프로젝트 생성을 하였는데 Tomcat 에 Add가 되지 않을경우
생성프로젝트 우클릭 -> Maven -> Update Project 를 해주시면 됩니다.
이어서 Spring MVC 기본 설정을 위하여 프로젝트의 설정 부분을 수정해보도록 하겠습니다.
ⓐ /스프링프로젝트/src/main/webapp/WEB-INF/mvc-config.xml 코드 추가
<context:component-scan base-package="com.spring"/>
ⓑ /스프링프로젝트/src/main/java/ 내에 다음과 같이 패키지 구조를 생성하였습니다.
StudyController 클래스에 다음과 같이 코드작성을 해줍니다.
package com.spring.study.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class StudyController { @RequestMapping("/hello") public String hello(){ return "hello"; } }
ModelAndview를 이용하여 return 페이지를 정해줄 수 있지만 String을 이용하여 return 페이지를 정의하도록 하겠습니다.
return "hello" 를 쉽게 이해해보시자면 mvc-config.xml에 정의되어있는 코드 중
<property name="prefix" value="/WEB-INF/view/"/> 라고 정의되어있는 코드가 있는데
저 디렉토리가 WEBROOT가 되는 것입니다.
return "hello"로 정의해주었다면 /WEB-INF/view/hello.jsp 페이지로 이동한다는 것입니다.
view디렉토리 경로에 hello.jsp페이지를 생성해보도록 하겠습니다.
default로 생성시 showMessage.jsp 가 존재하는데 삭제하셔도 됩니다.
hello.jsp를 생성하셨다면 body태그 부분에 테스트를 위하여 하단 코드를 작성합니다.
<h3>HELLO WORLD!!</h3>
톰캣을 실행 후 브라우저로 접속하기 전
server.xml 의 context path를 root경로로 잡아주도록 합니다.
앞으로 context root 기준으로 진행하도록 하겠습니다.
<Context docBase="spring_mvc" path="/spring_mvc" reloadable="true" source="org.eclipse.jst.jee.server:spring_mvc"/></Host>
<Context docBase="spring_mvc" path="/" reloadable="true" source="org.eclipse.jst.jee.server:spring_mvc"/></Host>
위 설정 까지 변경하셨다면 톰캣 서버를 실행 후 브라우저에 다음과 같이 입력합니다.
http://localhost:8080/hello
실행화면에서는 7070 포트로 호출을 하였는데 포트는 본인이 정한 포트로 실행하시면 되겠습니다.
정상적으로 결과가 출력되었습니다.
다음장에서는 spring mvc의 UTF-8 인코딩 설정을 해보도록 하겠습니다.
by 개발로짜
Spring3 Pathvariable 어노테이션을 이용하여 PARAMETER를 URL처럼 받아보기 (0) | 2014.11.11 |
---|---|
Spring3 jackson JSON 라이브러리 + ResponseBody 이용하여 JSON 파싱하기 (0) | 2014.11.10 |
Spring3 RESTFUL 방식 리소스파일 및 favicon 인식할수 있게 설정하기 (3) | 2014.11.07 |
Spring3 파일전송을 위한 multipartResolver 설정하기 (2) | 2014.11.07 |
Spring3 한글깨짐 방지를 위한 UTF-8 인코딩 설정하기 (6) | 2014.11.06 |