더보기
Spring:4 spring(maven project)를 Mybatis, Mysql과 연결하기(환경설정)-1
Spring:5 spring(maven project)기본 스타일 지정하기-2
Spring:6 로그인 회원가입폼 구현 하고 회원가입 DB연결-3
Spring:7 로그인(DB연동), 로그아웃, 회원정보수정(DB연동)-4
Spring:8 아이디 중복검사(ajax 이용)-5
Spring:9 게시판 리스트생성, DB연결, 글등록폼 생성-1
Spring:10 게시판 리스트 글 등록하고 보여주고 조회수증가-2
Spring:11 게시판 리스트 페이징과 검색 기능, 선택 기능 추가-3
Spring:12 게시판 글 수정, 삭제(한 레코드와 여러 레코드) 구현-4
Spring:13 Interceptor(인터셉터)-5
Spring:14 글 내용에서 댓글 등록,수정,삭제 구현(DB설계와연동)-1
Spring:5 spring(maven project)기본 스타일 지정하기-2
Spring:6 로그인 회원가입폼 구현 하고 회원가입 DB연결-3
Spring:7 로그인(DB연동), 로그아웃, 회원정보수정(DB연동)-4
Spring:8 아이디 중복검사(ajax 이용)-5
Spring:9 게시판 리스트생성, DB연결, 글등록폼 생성-1
Spring:10 게시판 리스트 글 등록하고 보여주고 조회수증가-2
Spring:11 게시판 리스트 페이징과 검색 기능, 선택 기능 추가-3
Spring:12 게시판 글 수정, 삭제(한 레코드와 여러 레코드) 구현-4
Spring:13 Interceptor(인터셉터)-5
Spring:14 글 내용에서 댓글 등록,수정,삭제 구현(DB설계와연동)-1
자료를 업로드하고 다운로드할 수 있는 자료실을 구현한다.
첨부파일은 2개까지 제한하고, 기본적으로 1개의 파일은 꼭 업로드해야 한다.
1. DB설계
레코드 번호(no), 아이디(userid), 제목(subject), 내용(content), 파일 1,2(1은 꼭 업로드해야 함), 등록일(createdate 자동생성)
2. 프레임워크 추가
파일을 업로드할 수 있는 라이브러리를 pom.xml에 추가한다.
1. commons-fileupload
2. commons-io
<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
3. 객체 생성을 위해서 root-context.xml 세팅, servlet.context.xml 세팅
root-context.xml
<!-- 파일 업로드 처리를 하기 위한 MultipartResolver 객체를 생성해주면
dispatcherServlet이 참조해서 파일 업로드를 수행한다. -->
<!-- 변수 반드시 똑같이!! -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="-1"></property>
<property name="defaultEncoding" value="UTF-8"></property>
</bean>
Multipart 지원 기능을 이용하려면 먼저 MultipartResolver를 스프링 설정 파일에 등록해 주어야 한다.
- MultipartResolver는 Multipart 형식으로 데이터가 전송된 경우, 해당 데이터를 스프링 MVC에서 사용할 수 있도록 변환해준다. 즉, Muiltpart객체를 컨트롤러에 전달하는 역할이다.
- 스프링이 기본으로 제공하는 MultipartResolver는 CommmnosMultipartResolver이다. CommmnsMultipartResolver는 Commons FileUpload API를 이용해서 Multipart를 처리해준다.
- CommmonsMultipartResolver를 MultipartResolver로 사용하려면 다음과 같이 빈 이름으로 "multipartResolver"를 등록하면 된다.
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
- CommonsMultipartResolver 클래스의 프로퍼티
maxUploadSize long 최대 업로드 가능한 바이트 크기, -1은 제한이 없음을 의미 기본 값은 -1 defaultEncoding String 요청을 파싱 할 때 사용할 캐릭터 인코딩 지정하지 않은 경우
HttpServletReqeust.setEncoding( ) 메서드로 지정한 캐릭터 셋이 사용된다.아무 값도 없으면 ISO-8859-1을 사용한다. maxInMemorySize int 디스크에 임시 파일을 생성하기 전에 메모리에 보관할 수 있는 최대 바이트 크기
4. view 폴더 생성, webabb안에 upload 폴더 생성하고 Servlet-context.xml 설정
- src > main > webapp > WEB-INF > views > data
- src > main > webapp > upload
- Servlet-context에게 upload라는 폴더를 생성했다고 알려줘야 함 -> Servlet-context.xml에 다음 내용 추가
<resources mapping="/upload/**" location="/upload/"/>
5. VO, DAO, Service, ServiceImpl, Controller, Mapper생성
package com.mycampus.myappy.vo;
public class DataLibVO {
private int no;
private String userid;
private String subject;
private String content;
private String filename1;
private String filename2;
private String createdate;
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getFilename1() {
return filename1;
}
public void setFilename1(String filename1) {
this.filename1 = filename1;
}
public String getFilename2() {
return filename2;
}
public void setFilename2(String filename2) {
this.filename2 = filename2;
}
public String getCreatedate() {
return createdate;
}
public void setCreatedate(String createdate) {
this.createdate = createdate;
}
}
package com.mycampus.myappy.dao;
public interface DataLibDAO {
}
package com.mycampus.myappy.service;
public interface DataLibService {
}
package com.mycampus.myappy.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.mycampus.myappy.dao.DataLibDAO;
@Service
public class DataLibServiceImpl implements DataLibService {
@Autowired
DataLibDAO dao;
}
package com.mycampus.myappy.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
import com.mycampus.myappy.service.DataLibService;
@RestController
public class DataLibController {
@Autowired
DataLibService service;
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mycampus.myappy.dao.DataLibDAO">
</mapper>
'멀티캠퍼스 풀스택 과정 > 백엔드' 카테고리의 다른 글
[Node.js] 1. 시작하기(서버 만들고 실행해보기) (0) | 2022.03.30 |
---|---|
Spring:16 자료실 구현하기(자료실 목록보기, 등록하기)-2 (0) | 2022.03.22 |
Spring:14 글 내용에서 댓글 등록,수정,삭제 구현(DB설계와연동)-1 (0) | 2022.03.21 |
Spring:13 Interceptor(인터셉터) -5 (0) | 2022.03.19 |
Spring:12 게시판 글 수정, 삭제(한 레코드와 여러 레코드) 구현 -4 (0) | 2022.03.19 |