SearchBoardController.java > SPRING1

본문 바로가기
사이트 내 전체검색

SPRING1

SearchBoardController.java

페이지 정보

profile_image
작성자 관리자
댓글 0건 조회 248회 작성일 24-08-01 11:26

본문

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 ..........."); 

}


}


댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

공지사항
자유게시판
질문답변
1:1문의

 

별명 : 터푸가위
주소 : 부산시 동래구 명장로20번길 90
대표 : 박규태
메일 : dancepkt@******.com

접속자집계

오늘
315
어제
217
최대
10,760
전체
276,062
Copyright © dancePKT . All rights reserved.