블로그를 변경하였습니다.

해당 블로그는 더 이상 추가 포스팅 없을 예정입니다.

👉 새 블로그 방문하기


[KH정보교육원 당산] 73일 (Spring - 파일업로드, 다국어처리, 데이터 변환)

2021. 6. 29. 00:04
728x90
반응형

파일업로드의 경우는 JSP파일 내에 기존 코드 처럼 form태그 내의 enctype 속성을 추가하고, 멀티파트 형식인 mulitipart/form-data로 지정, 또한 input 태그의 타입은 file로 하여 파일을 선택할 수 있는 화면을 구성한다.

 

파일의 값이 넘어갈때는 사용자와 관련된 데이터는 VO의 멤버 변수로 생성되어있기 때문에 정상적으로 넘어가지만,

file명은 따로 생성하지 않았기 때문에 값을 전달해도 받을 수가 없다. 그렇기 때문에 기존의 BoardVO 클래스에 uploadFile 변수를 추가한 후에 마찬가지로 getter/setter를 생성해 준다.

 

파일을 사용하기 위해 FileUpload라이브러리 추가

 

pom.xml에 해당 코드를 추가하여 라이브러리를 다운 받는다.

<dependency>
	<groupId>commons-fileupload</groupId>
	<artifactId>commons-fileupload</artifactId>
	<version>1.3.1</version>
</dependency>

JSP에서는 cos.jar파일을 직접 넣어서 사용했지만 spring에서는 디펜던시에 추가해줌으로써 간편하게 사용할 수 있다.

 

라이브러리를 다운 받았으면 이제 라이브러리 사용을 위한 bean을 생성한다.(CommonsMultipartResolver)

 

<bean id="multipartResolver" class="org.springframework.web.multipart
						.commons.CommonsMultipartResolver">
	<property name="maxUploadSize" value="100000" />
</bean>

 

** id값은 해당 명으로 고정!!

파일 사이즈의 경우 기본값으로 -1로 되어있다.(-1 => 무한)

 


다국어 처리

 

이부분은 좀 더 공부가 필요할듯...어떤식으로 이 코드를 적용시킬지 생각이 안난다..

 

 


데이터 변환

JSON형식으로 데이터를 변환하여 브라우저에 출력

 

게시글을 작성할때 JSON형식으로 변환하여 넘긴다면 다음과 같다.

{
    "seq":1,
    "title": "제목입니다.",
    "writer": "작성자명",
    "content": "게시글의 본문내용",
    "regDate": "2021-06-28",
    "cnt": 0
}

키와 값의 형태로 데이터가 넘어가게된다.

 

JSON 데이터 변환을 사용하기 위해서는 그에 해당하는 라이브러리 사용

JSP에서 json.jar를 사용했지만 Spring에서는 디펜던시를 통하여 라이브러리 다운

<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-databind</artifactId>
	<version>2.7.2</version>
</dependency>

 

** 디펜던시를 통하여 라이브러리를 다운 받을 때는 항상 xml문서를 수정한 후에 프로젝트 -> Mavern update를 통하여 다운

 

JSON형태로 데이터를 변환하기 위해서는 MappingJackson2HttpMessageConverter 필요

 

<mvc:annotation-driven></mvc:annotation-driven>

해당 태그를 선언하면 HttpMessageConverter를 구현한 모든 변환기가 생성된다.

**MVC => 네임스페이스에서 추가해줘야한다.

 

게시글 데이터 변환을 위해서 BoardController 클래스에 메서드 추가

@RequestMapping("/dataTransform.do")
@ResponseBody
public List<BoardVO> dataTransform(BoardVO vo){
    vo.setSearchType("TITLE");
    vo.setSearchKeyWord("");
    List<BoardVO> boardList = boardService.getBoardList(vo);
    
    return boardList;
}

자바 객체를 Http 응답 프로토콜의 몸체로 변환하기 위하여 사용된 어노테이션

@ResponseBody

 

<mvc:annotation-driven> 태그를 추가하여 자동 변환기를 설정했고, 변환기가 @ResponseBody가 적용된 메서드를 찾아서

실행될 때 JSON으로 변환하여 HTTP 응답에 설정된다.

 

BoardVO 클래스에서 JSON파일로 변환이 되면 안되는 변수가 있다면

 

해당 getter위해 @JsonIgnore 어노테이션을 부여한다.

말 그대로 해당 어노테이션이 부여된 메서드는 제외한 나머지는 데이터 변환이 이루어지게 된다.

 

** 다른 어노테이션과 다르게 @JsonIgnore는 getter 메서드에 사용된다!!

 


자바 객체를 XML형식으로 변환

JSON과 마찬가지로 

<mvc:annotation-driven>가 사용되는데 이 태그 하나를 통해 JSON데이터로 변환하던 XML로 변환하던 사용할 수 있다.

 

게시글 목록을 XML로 표현하기 위해서는 새로운 BoardVO객체가 필요하다.

 

BoardListVO 클래스 생성

@XmlRootElement(name="boardList")
@XmlAccessorType(XmlAccessType.FIELD)
public class BoardListVO(){
	
    @XmlElement(name="board")
    private List<BoardVO> boardList;
    
    
}

XML로 받기 위한 준비가 다 되었으니

 

JSON데이터 변환을 위해 사용되었던 dataTransform 메서드를 수정 해줄 것이다.

 

리턴 타입을 기존의 BoardVO가 아닌 BoardListVO로 변경하여 해당 클래스가 값을 전달 받을 수 있게 한다.

 


 

728x90
반응형

BELATED ARTICLES

more