파일업로드 설정파일
# multipart 허용
spring.servlet.multipart.enabled=true
# Multipart: 최대 파일 업로드 크기
spring.servlet.multipart.max-file-size=10MB
# Multipart: 동시 최대 요청 크기
spring.servlet.multipart.max-request-size=50MB
# Multipart: 파일 또는 매개 변수 액세스 시점에서 다중 파트 요청을 느리게 해결할지 여부
spring.servlet.multipart.resolve-lazily=false
<input type="file"> 이면 MultipartFile을 자동으로 매칭 시켜줌
@Data
public class NoticeForm {//RequestForm 타입, Command 객체 타입
private String noticeTitle;
private String noticeContent;
private List<MultipartFile> noticefileList; //스프링에서 제공하는 파일 타입
}
MultipartFile을 여러개 받으려면 배열로 받을 수 있음 -> 스프링에서는 List로 받으면 됨
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form method="post" action="${pageContext.request.contextPath}/addNotice" enctype="multipart/form-data"><!--enctype:사진보내기 -->
<div>
제목 : <input type="text" name="noticeTitle">
</div>
<div>
내용 : <input type="text" name="noticeContent">
</div>
<div>
파일 : <input type="file" name="noticefileList" multiple>
</div>
<div>
<button type="submit">입력</button>
</div>
</form>
</body>
</html>
<insert id="insertNotice" parameterType="com.example.di_aop.vo.Notice">
<selectKey order="AFTER" resultType="int" keyProperty="noticeId">
SELECT last_insert_id();<!-- 제일마지막에 입력된 키값을 받아옴 -->
</selectKey>
INSERT INTO notice(
notice_title, notice_content, notice_date
)VALUES(
#{noticeTitle},
#{noticeContent},
NOW();
)
</insert>
request 는 서비스에서 못꺼냄 컨트롤러에서 꺼내기 가능
session으로 패스 꺼내서 경로지정
# view 설정
spring.mvc.view.prefix=/WEB-INF/view/
spring.mvc.view.suffix=.jsp
# 서버설정
server.port=80
server.servlet.context-path=/st
# db설정
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3306/st
spring.datasource.username=root
spring.datasource.password=java1234
# multipart 허용
spring.servlet.multipart.enabled=true
# Multipart: 최대 파일 업로드 크기
spring.servlet.multipart.max-file-size=10MB
# Multipart: 동시 최대 요청 크기
spring.servlet.multipart.max-request-size=50MB
# Multipart: 파일 또는 매개 변수 액세스 시점에서 다중 파트 요청을 느리게 해결할지 여부
spring.servlet.multipart.resolve-lazily=false
뷰, 프로시저를 쓰지않고 서브쿼리를 사용 -> 깃허브에 노출시키기 위해
--목록
--ex)1안녕하세요(0) 첨부된 파일 수 출력
SELECT n.notice_id, n.notice_title, nf.noticefile_name
FROM notice n INNER JOIN noticefile nf
ON n.notice_id = nf.noticefile_id
LIMIT 0,10;
-- 조인이 틀림!
--JOIN 사용할 우측 테이블
--ex)1 제목 (2)
SELECT notice_id, COUNT(*)
FROM noticefile
GROUP BY notice_id;
--목록(join 수정)
SELECT n.notice_id, n.notice_title, ifnull(nfc.cnt,0)
FROM notice n LEFT OUTER JOIN (SELECT notice_id, COUNT(*) cnt
FROM noticefile
GROUP BY notice_id) nfc
ON n.notice_id = nfc.notice_id
LIMIT 0,10;
--상세보기 notice
SELECT notice_id, notice_title, notice_content
FROM notice
WHERE notice_id = 1
--상세보기 noticefile
SELECT noticefile_id, notice_id, noticefile_name, noticefile_type, notice_size
FROM notice
WHERE notice_id = 1