SearchBoardController.java
페이지 정보
본문
package com.pkt.controller;
//복사 붙여넣기 하자
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.pkt.model.BoardVO;
import com.pkt.model.Criteria;
import com.pkt.model.PageMaker;
import com.pkt.service.BoardService;
import lombok.AllArgsConstructor;
import lombok.extern.log4j.Log4j;
@Controller
@Log4j
@RequestMapping("/sboard/")
@AllArgsConstructor
public class SearchBoardController {
// 첨부파일 저장 경로 : servlet-context.xml에 있는 bean id="uploadPath" 경로 매칭
@Resource(name = "uploadPath")
private String uploadPath;
private BoardService service;
@GetMapping("list")
public void list(@ModelAttribute("cri") Criteria cri, Model model) {
log.info(cri.toString());
model.addAttribute("list", service.listSearchCriteria(cri));
PageMaker pageMaker = new PageMaker();
pageMaker.setCri(cri);
pageMaker.setTotalCount(service.listSearchCount(cri));
model.addAttribute("pageMaker", pageMaker);
}
@GetMapping("read")
public void read(@RequestParam("bno") int bno, @ModelAttribute("cri") Criteria cri, Model model) {
PageMaker pageMaker = new PageMaker();
pageMaker.setCri(cri);
model.addAttribute("pageMaker", pageMaker);
model.addAttribute(service.readOne(bno));
}
@GetMapping("modify")
public void modifyGET(int bno, @ModelAttribute("cri") Criteria cri, Model model) {
model.addAttribute(service.readOne(bno));
}
@PostMapping("modify")
public String modifyPOST(BoardVO board, Criteria cri, RedirectAttributes rttr, MultipartFile[] file) throws Exception {
String savedName[] = new String[file.length]; //저장 파일명 배열 처리
for(int i=0; i<file.length; i++) {
if(file[i].getSize() > 0) { //파일크기가 0보다 크다면 : 파일 유무
//존재하는 파일 삭제
if(i == 0) {
File fileDelete = new File(uploadPath+"/"+board.getFile01());
if( fileDelete.exists() ){
fileDelete.delete();
}
File fileDelete_thum = new File(uploadPath+"/"+board.getFile01_thum());
if( fileDelete_thum.exists() ){
fileDelete_thum.delete();
}
}else if(i == 1) {
File fileDelete = new File(uploadPath+"/"+board.getFile02());
if( fileDelete.exists() ){
fileDelete.delete();
}
}else if(i == 2) {
File fileDelete = new File(uploadPath+"/"+board.getFile03());
if( fileDelete.exists() ){
fileDelete.delete();
}
}
log.info("originalName: " + file[i].getOriginalFilename());
log.info("size: " + file[i].getSize()); //byte 단위
log.info("contentType: " + file[i].getContentType());
Date today = new Date();
SimpleDateFormat cal = new SimpleDateFormat("yyyyMMddhhmmss");
String signdate = cal.format(today);
savedName[i] = signdate + "_" + file[i].getOriginalFilename(); //날짜_파일명 처리
byte[] fileData = file[i].getBytes();
log.info("============= savedName["+i+"] ====:"+savedName[i]);
File target = new File(uploadPath, savedName[i]);
FileCopyUtils.copy(fileData, target); //파일 업로드
// 첫 첨부 이미지만 썸네일 생성
if(i == 0) {
board.setFile01(savedName[i]);
String new_name = "thum_" + savedName[0]; //썸네일 파일 이름
//사이즈 크기
int w = 50;
int h = 50;
String imgFormat = "jpg"; //기본 설정 초기화
Image image = ImageIO.read(new File(uploadPath+"\\"+savedName[0])); //원본 이미지
if(image != null) { //이미지 파일이 아닌 경우 null
Image resizeImage = image.getScaledInstance(w,h,Image.SCALE_SMOOTH);
BufferedImage newImage = new BufferedImage(w,h,BufferedImage.TYPE_INT_BGR);
Graphics g = newImage.getGraphics();
g.drawImage(resizeImage, 0, 0, null);
g.dispose();
ImageIO.write(newImage, imgFormat, new File(uploadPath+"\\"+new_name)); //파일 올리기
board.setFile01_thum(new_name); //썸네일 이름 객체 추가
}
}else if(i == 1) {
board.setFile02(savedName[i]);
}else if(i == 2) {
board.setFile03(savedName[i]);
}
}
}
log.info(cri.toString());
service.modify(board);
rttr.addAttribute("page", cri.getPage());
rttr.addAttribute("perPageNum", cri.getPerPageNum());
rttr.addAttribute("searchType", cri.getSearchType());
rttr.addAttribute("keyword", cri.getKeyword());
rttr.addFlashAttribute("msg", "modify");
log.info(rttr.toString());
return "redirect:/sboard/list";
}
@GetMapping("remove")
public String remove(@RequestParam("bno") int bno, Criteria cri, RedirectAttributes rttr) {
service.remove(bno);
rttr.addAttribute("page", cri.getPage());
rttr.addAttribute("perPageNum", cri.getPerPageNum());
rttr.addAttribute("searchType", cri.getSearchType());
rttr.addAttribute("keyword", cri.getKeyword());
rttr.addFlashAttribute("msg", "delete");
return "redirect:/sboard/list";
}
@GetMapping("register")
public void registGET() {
log.info("regist get ...........");
}
@PostMapping("register")
public String registPOST(BoardVO board, RedirectAttributes rttr, MultipartFile[] file) throws Exception {
log.info("regist post ...........");
//첨부 null 처리
board.setFile01("");
board.setFile02("");
board.setFile03("");
board.setFile01_thum("");
String savedName[] = new String[file.length]; //저장 파일명 배열 처리
for(int i=0; i<file.length; i++) {
if(file[i].getSize() > 0) { //파일크기가 0보다 크다면 : 파일 유무
log.info("originalName: " + file[i].getOriginalFilename());
log.info("size: " + file[i].getSize()); //byte 단위
log.info("contentType: " + file[i].getContentType());
Date today = new Date();
SimpleDateFormat cal = new SimpleDateFormat("yyyyMMddhhmmss");
String signdate = cal.format(today);
savedName[i] = signdate + "_" + file[i].getOriginalFilename(); //날짜_파일명 처리
byte[] fileData = file[i].getBytes();
log.info("============= savedName["+i+"] ====:"+savedName[i]);
File target = new File(uploadPath, savedName[i]);
FileCopyUtils.copy(fileData, target); //파일 업로드
// 첫 첨부 이미지만 썸네일 생성
if(i == 0) {
board.setFile01(savedName[i]);
String new_name = "thum_" + savedName[0]; //썸네일 파일 이름
//사이즈 크기
int w = 50;
int h = 50;
String imgFormat = "jpg"; //기본 설정 초기화
Image image = ImageIO.read(new File(uploadPath+"\\"+savedName[0])); //원본 이미지
if(image != null) { //이미지 파일이 아닌 경우 null
Image resizeImage = image.getScaledInstance(w,h,Image.SCALE_SMOOTH);
BufferedImage newImage = new BufferedImage(w,h,BufferedImage.TYPE_INT_BGR);
Graphics g = newImage.getGraphics();
g.drawImage(resizeImage, 0, 0, null);
g.dispose();
ImageIO.write(newImage, imgFormat, new File(uploadPath+"\\"+new_name)); //파일 올리기
board.setFile01_thum(new_name); //썸네일 이름 객체 추가
}
}else if(i == 1) {
board.setFile02(savedName[i]);
}else if(i == 2) {
board.setFile03(savedName[i]);
}
}
}
log.info(board.toString());
service.regist(board);
rttr.addFlashAttribute("msg", "register");
return "redirect:/sboard/list";
}
// reply 추가
@GetMapping("reply")
public void ajaxTest() {
log.info("reply get ...........");
}
}
- 이전글BoardMapper.xml 24.08.01
- 다음글sboard/modify.jsp 24.08.01
댓글목록
등록된 댓글이 없습니다.