스프링 기초(인강 보충)_2

bitna's study note·2022년 7월 6일

스프링

목록 보기
12/54

7월7일

1.파일 업로드
(1)commons-fileupload 메이븐에서 가져오기
pom.xml 붙여넣기

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

(2)파일 업로드를 위한 servlet-context.xml설정
파일 업로드 빈등록 하는 xml 설정코드

<beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<beans:property name="defaultEncoding" value="UTF-8"></beans:property>
	     <!-- 1024 * 1024 * 10 bytes 10MB -->
	    <beans:property name="maxUploadSize" value="104857560"></beans:property>
	      <!-- 1024 * 1024 * 2 bytes 2MB -->
	    <beans:property name="maxUploadSizePerFile"
	         value="2097152"></beans:property>
	    <beans:property name="uploadTempDir"
	         value="file:/C:/springDocument/upload"></beans:property>
	    <beans:property name="maxInMemorySize" value="10485756"></beans:property>
	</beans:bean>

(3)코드작성

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/Sample/exUploadPost" method="post" enctype="multiPart/form-data">
<div>
<input type="file" name="files">
</div>
<div>
<input type="file" name="files">
</div>
<div>
<input type="file" name="files">
</div>
<div>
<input type="submit" value="업로드">
</div>
</form>
</body>
</html>

Sample/exUpload 로 접속해서 jsp페이지 갔다가 submit하면 /Sample/exUploadPost 로 이동함

@Controller
@RequestMapping("/Sample/*")
@Log4j
public class SampleController {

	@GetMapping("/exUpload")
	public void exUpload() {
		log.info("log...........");
	}
	
	
	@PostMapping("/exUploadPost")
	public void exUploadPost01(ArrayList<MultipartFile> files) {
		files.forEach(file->{
			log.info(file.getOriginalFilename());
			log.info(file.getSize());
			log.info(file.getContentType());
		});
	}	
 }

2.예외처리
예외처리에도 어노테이션이 따로 존재 한다.
예외 처리를 코드를 분리를 해놓으면 나중에 실행될때 결합하여 스프링이 실행해준다.

(1)@ControllerAdvice
Advice가 붙어있는 애들은 AOP와 관련된 애들이다.
*AOP:핵심적인로직은 아니지만 프로그램에서 필요한 '공통적인 관심사 를 분리하자' 라는 개념

@ControllerAdvice는 스프링의 빈으로 등록 할때 사용하는 어노테이션 이다.

(2)@ExceptionHandler(내가처리하고픈 Exception지정)
Exception은 모든 예외의 조상으로 예외처리 가능함

package com.keduit.controll;

import java.util.ArrayList;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;

import com.keduit.sample.SampleDTO;

import lombok.extern.log4j.Log4j;

@Controller
@RequestMapping("/Sample/*")
@Log4j
public class SampleController {
	
	@GetMapping("/ex01")
	public void ex01(SampleDTO dto) {
		log.info(dto);
	}
    //정상 쿼리문: http://localhost:8080/Sample/ex01?name=aaa&age=111
	//에외발생 쿼리문: http://localhost:8080/Sample/ex01?name=aaa&age=aaa
    
	}
	
}

SampleDTO dto의 파라미터인 age는 int타입으로 문자를 입력시 예외발생함
예외발생시 아래와 같은 예외 처리 클래스로 갔다가 예외처리 jsp로감

package com.keduit.exception;

import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

import lombok.extern.log4j.Log4j;


@ControllerAdvice //이거는 예외처리 어노테이션 입니다! 라는 의미
@Log4j
public class ExceptionPrectice {

	@ExceptionHandler(Exception.class) //Exception 예외는 이쪽으로와!!!
	public String except(Exception ex,Model model) {
		log.error("Exception...........");
		return "Sample/errorPage"; //해당 jsp로 넘어가랏!!
	}
}

해당 jsp파일임

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Exception Page</h1>
</body>
</html>
profile
좋은개발자가 되기위한 삽질기록 노트

0개의 댓글