보라코딩
코드로 배우는 스프링 웹 프로젝트 Part2 본문

http://localhost:8080/sample/ex01?name=AAA&age=32
톰캣 실행 후에 이렇게 보내면 HTTP상태는 404 찾을 수 없음이 나오지만 (보이는 화면 설정안해줘서)
Console에는 아래와 같이 값을 받음을 알 수 있다.
INFO : org.zerock.controller.HomeController - Welcome home! The client locale is ko_KR. INFO : org.zerock.controller.SampleController - SampleDTO(name=AAA, age=32) WARN : org.springframework.web.servlet.PageNotFound - No mapping for GET /favicon.ico INFO : org.zerock.controller.SampleController - SampleDTO(name=AAA, age=32)
The type List is not generic; it cannot be parameterized with arguments <SampleDTO>
List에 갑자기 빨간줄이 쳐져 있었고 import는 되어있어서 왜지? 생각했는데
너무 간단하고 어이없는 오류였다..
import 된 List가 import java.util.List; 이 아니였다..........
util이 아닌 awt인지 확인할 것!!

http://localhost:8080/sample/ex02Bean?list%5B0%5D.name=bora&list%5B2%5D.name=dory
** 참고 [ 대신에 %5B 넣고 ] 대신에 %5D 넣음
결과값
INFO : org.zerock.controller.SampleController - list dtos : SampleDTOList(list=[SampleDTO(name=bora, age=0), SampleDTO(name=null, age=0), SampleDTO(name=dory, age=0)])


http://localhost:8080/sample/ex03?title=test&dueDate=2023/01/29
이렇게 실행시
아래와 같이 log 찍힘INFO : org.zerock.controller.SampleController - todo : TodoDTO(title=test, dueDate=Sun Jan 29 00:00:00 KST 2023)
SampleController 연습한 내용들
package org.zerock.controller;
import java.util.ArrayList;
import java.util.Arrays;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.zerock.domain.SampleDTO;
import org.zerock.domain.SampleDTOList;
import org.zerock.domain.TodoDTO;
import lombok.extern.log4j.Log4j;
@Controller
@RequestMapping("/sample/*")
@Log4j
public class SampleController {
@RequestMapping("")
public void basic() {
log.info("basic!");
}
@RequestMapping(value = "/basic", method = {RequestMethod.GET,RequestMethod.POST})
public void basicGet() {
log.info("basic get!");
}
@GetMapping("/basicOnlyGet")
public void basicGet2() {
log.info("basic get only get");
}
@GetMapping("/ex01")
public String ex01(SampleDTO dto) {
log.info("" + dto);
return "ex01";
}
@GetMapping("/ex02")
public String ex02(@RequestParam("name") String name, @RequestParam("age") int age) {
log.info("name : " + name);
log.info("age : " + age);
return "ex02";
}
@GetMapping("/ex02List")
public String ex02List(@RequestParam("ids")ArrayList<String> ids) {
log.info("ids : " + ids);
return "ex02List";
}
@GetMapping("/ex02Array")
public String ex02Array(@RequestParam("ids") String[] ids) {
log.info("array ids : " + Arrays.toString(ids));
return "ex02Array";
}
@GetMapping("/ex02Bean")
public String ex02Bean(SampleDTOList list) {
log.info("list dtos : " + list);
return "ex02Bean";
}
@GetMapping("/ex03")
public String ex03(TodoDTO todo) {
log.info("todo : " + todo);
return "ex03";
}
}
아직 공부 중
** Model에 담는 데이터는 파라미터가 아니라 다른 곳에서 발생한(DB같은) 데이터를 담기 위한 용기
@ModelAttribute
컨트롤러에서 메서드의 파라미터는 기본자료형을 제외한 객체형 타입은 다시 화면으로 전달@RedirectAttribute
파일 업로드
maven fileupload 검색해서 pom.xml에 붙여넣기
servlet-context.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:/upload/tmp"></beans:property>
<beans:property name="maxInMemorySize" value="10485756"></beans:property>
</beans:bean>
SampleController에 아래 내용 쓰기
@GetMapping("/exUpload")
public void exUpload() {
log.info("exUpload!~~~!!");
}
src/main/webapp/WEB-INF/views폴더 안에 sample 폴더 만들고 그안에 exUpload.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>
<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='file' name='files'>
</div>
<div>
<input type='file' name='files'>
</div>
<div>
<input type='submit'>
</div>
</form>
</body>
</html>
톰캣 실행 후
http://localhost:8080/sample/exUpload 여기로 들어가면 아래와 같은 화면이 뜬다.
이제 파일 제출하는 것을 연동하기 위해
SampleController에 아래 내용 붙여넣기
@PostMapping("/exUploadPost")
public void exUploadPost(ArrayList<MultipartFile> files) {
files.forEach(file -> {
log.info(file.getOriginalFilename());
log.info(file.getSize());
log.info(file.getContentType());
});
}
이후 파일 업로드 후 제출 누르면 화면은 아직 안만들어서 안뜨지만 로그 확인가능
'코딩 > Spring' 카테고리의 다른 글
코드로 배우는 스프링 웹 프로젝트 Part3 (ch9) (0) | 2023.02.05 |
---|---|
코드로 배우는 스프링 웹 프로젝트 Part3 (ch8) (0) | 2023.02.05 |
코드로 배우는 스프링 웹 프로젝트 Part3 (0) | 2023.02.05 |
코드로 배우는 스프링 웹 프로젝트 Part2 (0) | 2023.01.29 |
코드로 배우는 스프링 웹 프로젝트 Part1 (0) | 2023.01.24 |