본문 바로가기
나의 이야기/삼성 SCSA 파이널 프로젝트

[BustaBusta | 버스타버스타] 웹게시판 소스코드

by 불타는홍당무 2017. 4. 21.


BoardController.java

package com.scsa.busta.board;

import java.io.File;
import java.io.IOException;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class BoardController {
	
	@Autowired
	IBoardService service;
	
	//커뮤니티 메인
	@RequestMapping("/community_main.do")
	public String community_main(Model m) {
		List sugList=service.searchSugList();
		List lostList=service.searchLostList();
		m.addAttribute("sugList", sugList);
		m.addAttribute("lostList", lostList);
		m.addAttribute("content", "view/community_main.jsp");
		return "index.jsp";
	}
	
	/*건의사항 글쓰기 페이지로 이동*/
	@RequestMapping("/sugWritePage.do")
	public String sugWritePage(Model m) {
		m.addAttribute("content", "view/sug_write.jsp");
		return "index.jsp";
	}
	
	/*건의사항 글 검색*/
	@RequestMapping("/searchSug.do")
	@ResponseBody
	public List searchSug(@RequestParam String searchOption, @RequestParam String title, @RequestParam String content, Model m){
		if(searchOption.equals("title")){
			content = null;
		}else if(searchOption.equals("content")){
			title = null;
		}
		List list = service.searchSug(title, content);
		return list;
	}
	
	/*건의사항 글 등록*/
	@RequestMapping(value="/sugWrite.do", method=RequestMethod.POST)
	public String sugWrite(SuggestionVO suggestion, String content, Model m) {
		content=content.replace("\r\n", "
"); suggestion.setContent(content); service.sugWrite(suggestion); return "redirect:searchSugList.do?page=1"; } /*건의사항 글 목록&댓글 수*/ @RequestMapping("/searchSugList.do") public String searchSugList(int page, Model m) { List list=service.searchSugList(); m.addAttribute("list", list); m.addAttribute("page", page); m.addAttribute("content", "view/sug_list.jsp"); return "index.jsp"; } /*건의사항 글 읽기&조회수 +1*/ @RequestMapping("/getSugDetail.do") public String getSugDetail(int sugnum, int count, int page, Model m) { service.updateSugCount(sugnum, count); SuggestionVO sug=service.getSugDetail(sugnum); List list=service.sugReplyList(sugnum); m.addAttribute("sug", sug); m.addAttribute("list", list); m.addAttribute("page", page); m.addAttribute("content", "view/sug_detail.jsp"); return "index.jsp"; } /*건의사항 글 삭제*/ @RequestMapping("/sugDelete.do") public String sugDelete(int sugnum, Model m) { service.sugDelete(sugnum); return "redirect:searchSugList.do?page=1"; } /*건의사항 글수정 페이지로 이동*/ @RequestMapping("/sugUpdatePage.do") public String sugUpdatePage(int sugnum, int page, Model m) { SuggestionVO sug=service.getSugDetail(sugnum); m.addAttribute("sug", sug); m.addAttribute("page", page); m.addAttribute("content", "view/sug_write.jsp"); return "index.jsp"; } /*건의사항 글 수정*/ @RequestMapping("/sugUpdate.do") public String sugUpdate(SuggestionVO suggestion, String content, int sugnum, int count, int page, Model m) { content=content.replace("\r\n", "
"); suggestion.setContent(content); service.sugUpdate(suggestion); m.addAttribute("page", page); return "redirect:getSugDetail.do?sugnum="+sugnum+"&count="+count+"&page="+page; } /*건의사항 댓글 등록*/ @RequestMapping("/sugReplyWrite.do") public String sugReplyWrite(ReplyVO reply, int sugnum, int count, int page) { service.sugRepltWrite(reply); return "redirect:getSugDetail.do?sugnum="+sugnum+"&count="+count+"&page="+page; } /*건의사항 댓글 수정 시 선택*/ @RequestMapping("/sugReply.do") @ResponseBody public ReplyVO sugReply(int replynum) { ReplyVO reply=service.sugReply(replynum); return reply; } /*건의사항 댓글 수정*/ @RequestMapping("/sugReplyUpdate.do") public String sugReplyUpdate(ReplyVO reply, int sugnum, int count, int page) { service.sugReplyUpdate(reply); return "redirect:getSugDetail.do?sugnum="+sugnum+"&count="+count+"&page="+page; } /*건의사항 댓글 삭제*/ @RequestMapping("/sugReplyDelete.do") public String sugReplyDelete(int replynum, int sugnum, int count, int page) { service.sugReplyDelete(replynum); return "redirect:getSugDetail.do?sugnum="+sugnum+"&count="+count+"&page="+page; } /*분실물 글쓰기 페이지로 이동*/ @RequestMapping("/lostWritePage.do") public String lostWritePage(Model m) { m.addAttribute("content", "view/lost_write.jsp"); return "index.jsp"; } /*분실물 글 목록*/ @RequestMapping("/searchLostList.do") public String searchLostList(int page, Model m) { List list=service.searchLostList(); m.addAttribute("list", list); m.addAttribute("page", page); m.addAttribute("content", "view/lost_list.jsp"); return "index.jsp"; } /*분실물 글 검색*/ @RequestMapping("/searchLostNFound.do") @ResponseBody public List searchLostNFound(@RequestParam String searchOption, @RequestParam String title, @RequestParam String content, Model m){ if(searchOption.equals("title")){ content = null; }else if(searchOption.equals("content")){ title = null; } List list=service.searchLostNFound(title, content); return list; } /*분실물 글 등록*/ @RequestMapping(value="/lostWrite.do", method=RequestMethod.POST) public String lostWrite(LostBoardVO lost, String content, @RequestParam("lostimage") MultipartFile file, HttpServletRequest req, Model m) throws IllegalStateException, IOException { String fileName=file.getOriginalFilename().trim(); if(!fileName.equals("")){ String path=req.getServletContext().getRealPath("/img"); File myFile=new File(path, fileName); file.transferTo(myFile); lost.setImage(fileName); }else if(fileName.equals("")){ lost.setImage(""); } content=content.replace("\r\n", "
"); lost.setContent(content); service.lostWrite(lost); return "redirect:searchLostList.do?page=1"; } /*분실물 글 읽기&조회수 +1&댓글보기*/ @RequestMapping("/getLostDetail.do") public String getLostDetail(int lostnum, int count, int page, Model m) { service.updateLostCount(lostnum, count); LostBoardVO lost=service.getLostDetail(lostnum); List list=service.lostReplyList(lostnum); m.addAttribute("lost", lost); m.addAttribute("list", list); m.addAttribute("page", page); m.addAttribute("content", "view/lost_detail.jsp"); return "index.jsp"; } /*분실물 글 삭제*/ @RequestMapping("/lostDelete.do") public String lostDelete(int lostnum, Model m) { service.lostDelete(lostnum); return "redirect:searchLostList.do?page=1"; } /*분실물 글수정 페이지로 이동*/ @RequestMapping("/lostUpdatePage.do") public String lostUpdatePage(int lostnum, int page, Model m) { LostBoardVO lost=service.getLostDetail(lostnum); m.addAttribute("lost", lost); m.addAttribute("page", page); m.addAttribute("content", "view/lost_write.jsp"); return "index.jsp"; } /*분실물 글 수정*/ @RequestMapping("/lostUpdate.do") public String lostUpdate(LostBoardVO lost, String content, @RequestParam("lostimage") MultipartFile file, HttpServletRequest req, int lostnum, int count, int page, Model m) throws IllegalStateException, IOException { String fileName=file.getOriginalFilename().trim(); if(!fileName.equals("")){ String path=req.getServletContext().getRealPath("/img"); File myFile=new File(path, fileName); file.transferTo(myFile); lost.setImage(fileName); }else if(fileName.equals("")){ lost.setImage(""); } content=content.replace("\r\n", "
"); lost.setContent(content); service.lostUpdate(lost); m.addAttribute("page", page); return "redirect:getLostDetail.do?lostnum="+lostnum+"&count="+count+"&page="+page; } /*분실물 댓글 등록*/ @RequestMapping("/lostReplyWrite.do") public String lostReplyWrite(ReplyVO reply, int lostnum, int count, int page) { service.lostRepltWrite(reply); return "redirect:getLostDetail.do?lostnum="+lostnum+"&count="+count+"&page="+page; } /*분실물 댓글 수정 시 선택*/ @RequestMapping("/lostReply.do") @ResponseBody public ReplyVO lostReply(int replynum) { ReplyVO reply=service.lostReply(replynum); return reply; } /*분실물 댓글 수정*/ @RequestMapping("/lostReplyUpdate.do") public String lostReplyUpdate(ReplyVO reply, int lostnum, int count, int page) { service.lostReplyUpdate(reply); return "redirect:getLostDetail.do?lostnum="+lostnum+"&count="+count+"&page="+page; } /*분실물 댓글 삭제*/ @RequestMapping("/lostReplyDelete.do") public String lostReplyDelete(int replynum, int lostnum, int count, int page) { service.lostReplyDelete(replynum); return "redirect:getLostDetail.do?lostnum="+lostnum+"&count="+count+"&page="+page; } }


BoardServiceImpl.java

package com.scsa.busta.board;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class BoardServiceImpl implements IBoardService {
	
	@Autowired
	IBoardDAO dao;

	@Override
	public void sugWrite(SuggestionVO suggestion) {
		dao.sugWrite(suggestion);
	}

	@Override
	public List searchSugList() {
		List list=dao.searchSugList();
		return list;
	}

	@Override
	public List searchSug(String title, String content) {
		List list=dao.searchSug(title, content);
		return list;
	}

	@Override
	public SuggestionVO getSugDetail(int sugnum) {
		SuggestionVO suggestion=dao.getSugDetail(sugnum);
		return suggestion;
	}

	@Override
	public void updateSugCount(int sugnum, int count) {
		dao.updateSugCount(sugnum, count+1);
	}

	@Override
	public void sugDelete(int sugnum) {
		dao.sugDelete(sugnum);
	}

	@Override
	public void sugUpdate(SuggestionVO suggestion) {
		dao.sugUpdate(suggestion);
	}

	@Override
	public void lostWrite(LostBoardVO lost) {
		dao.lostWrite(lost);
	}

	@Override
	public List searchLostList() {
		List list=dao.searchLostList();
		return list;
	}
	
	@Override
	public List searchLostNFound(String title, String content) {
		List list=dao.searchLostNFound(title, content);
		return list;
	}
	
	@Override
	public LostBoardVO getLostDetail(int lostnum) {
		LostBoardVO lost=dao.getLostDetail(lostnum);
		return lost;
	}

	@Override
	public void updateLostCount(int lostnum, int count) {
		dao.updateLostCount(lostnum, count+1);
	}

	@Override
	public void lostDelete(int lostnum) {
		dao.lostDelete(lostnum);
	}

	@Override
	public void lostUpdate(LostBoardVO lost) {
		dao.lostUpdate(lost);
	}

	@Override
	public void lostRepltWrite(ReplyVO reply) {
		dao.lostRepltWrite(reply);
	}

	@Override
	public List lostReplyList(int gulnum) {
		List list=dao.lostReplyList(gulnum);
		return list;
	}

	@Override
	public void lostReplyUpdate(ReplyVO reply) {
		dao.lostReplyUpdate(reply);
	}

	@Override
	public ReplyVO lostReply(int replynum) {
		ReplyVO reply=dao.lostReply(replynum);
		return reply;
	}

	@Override
	public void lostReplyDelete(int replynum) {
		dao.lostReplyDelete(replynum);
	}

	@Override
	public void sugRepltWrite(ReplyVO reply) {
		dao.sugRepltWrite(reply);
	}

	@Override
	public List sugReplyList(int gulnum) {
		List list=dao.sugReplyList(gulnum);
		return list;
	}

	@Override
	public void sugReplyUpdate(ReplyVO reply) {
		dao.sugReplyUpdate(reply);
	}

	@Override
	public ReplyVO sugReply(int replynum) {
		ReplyVO reply=dao.sugReply(replynum);
		return reply;
	}

	@Override
	public void sugReplyDelete(int replynum) {
		dao.sugReplyDelete(replynum);
	}

}


BoardDAOImpl.java

package com.scsa.busta.board;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

@Repository
public class BoardDAOImpl implements IBoardDAO {
	
	@Autowired
	SqlSession session;

	//건의사항 글 쓰기
	@Override
	public void sugWrite(SuggestionVO suggestion) {
		session.insert("board.sugWrite", suggestion);
	}

	//건의사항 글 목록
	@Override
	public List searchSugList() {
		List list=session.selectList("board.searchSugList");
		return list;
	}

	//건의사항 글 검색
	@Override
	public List searchSug(String title, String content) {
		Map map=new HashMap();
		map.put("title", title);
		map.put("content", content);		
		List list = session.selectList("board.searchSug", map);
		return list;
	}

	//건의사항 글 읽기
	@Override
	public SuggestionVO getSugDetail(int sugnum) {
		SuggestionVO suggestion=session.selectOne("board.getSugDetail", sugnum);
		return suggestion;
	}
	
	//건의사항 조회수 +1
	@Override
	public void updateSugCount(int sugnum, int count) {
		Map map=new HashMap<>();
		map.put("sugnum", sugnum);
		map.put("count", count);
		session.update("board.updateSugCount", map);
	}

	//건의사항 글 삭제
	@Override
	public void sugDelete(int sugnum) {
		session.delete("board.sugDelete", sugnum);
	}

	//건의사항 글 수정
	@Override
	public void sugUpdate(SuggestionVO suggestion) {
		session.update("board.sugUpdate", suggestion);
	}
	
	//건의사항 댓글 작성
	@Override
	public void sugRepltWrite(ReplyVO reply) {
		session.insert("board.sugReplyWrite", reply);
	}

	//건의사항 댓글 리스트
	@Override
	public List sugReplyList(int gulnum) {
		List list=session.selectList("board.sugReplyList", gulnum);
		return list;
	}

	//건의사항 리플 수정
	@Override
	public void sugReplyUpdate(ReplyVO reply) {
		session.update("board.sugReplyUpdate", reply);
	}

	//건의사항 리플 수정 시 선택
	@Override
	public ReplyVO sugReply(int replynum) {
		ReplyVO reply=session.selectOne("board.sugReplyDetail", replynum);
		return reply;
	}

	//건의사항 리플 삭제
	@Override
	public void sugReplyDelete(int replynum) {
		session.delete("board.sugReplyDelete", replynum);
	}

	//분실물 글 작성
	@Override
	public void lostWrite(LostBoardVO lost) {
		session.insert("board.lostWrite", lost);
	}

	//분실물 글 목록
	@Override
	public List searchLostList() {
		List list=session.selectList("board.searchLostList");
		return list;
	}
	
	//분실물 글 검색
	@Override
	public List searchLostNFound(String title, String content) {
		System.out.println("dao에서 searchLostNFound실행");
		Map map=new HashMap();
		map.put("title", title);
		map.put("content", content);
		List list = session.selectList("board.searchLostNFound", map);
		return list;
	}

	//분실물 글 읽기
	@Override
	public LostBoardVO getLostDetail(int lostnum) {
		 LostBoardVO lost=session.selectOne("board.getLostDetail", lostnum);
		return lost;
	}
	
	//분실물 조회수 +1
	@Override
	public void updateLostCount(int lostnum, int count) {
		Map map=new HashMap<>();
		map.put("lostnum", lostnum);
		map.put("count", count);
		session.update("board.updateLostCount", map);
	}

	//분실물 글 삭제
	@Override
	public void lostDelete(int lostnum) {
		session.delete("board.lostDelete", lostnum);
	}

	//분실물 글 수정
	@Override
	public void lostUpdate(LostBoardVO lost) {
		session.update("board.lostUpdate", lost);
	}

	//분실물 댓글 작성
	@Override
	public void lostRepltWrite(ReplyVO reply) {
		session.insert("board.lostReplyWrite", reply);
	}

	//분실물 댓글 목록
	@Override
	public List lostReplyList(int gulnum) {
		List list=session.selectList("board.lostReplyList", gulnum);
		return list;
	}

	//분실물 댓글 수정
	@Override
	public void lostReplyUpdate(ReplyVO reply) {
		session.update("board.lostReplyUpdate", reply);
	}

	//분실물 댓글 수정 시 선택
	@Override
	public ReplyVO lostReply(int replynum) {
		ReplyVO reply=session.selectOne("board.lostReplyDetail", replynum);
		return reply;
	}

	//분실물 댓글 삭제
	@Override
	public void lostReplyDelete(int replynum) {
		session.delete("board.lostReplyDelete", replynum);
	}

}


SqlBoardQuery.xml




	


	
	
	    insert into suggestion values
	    (SUGGESTION_SEQ.NEXTVAL, #{mid}, #{title}, #{content}, sysdate, 0)    
	
	
	
	
	
	
	
	
	
	
	
	
	
	    update suggestion set count=#{count} where sugnum=#{sugnum}
	
	
	
	
	    update suggestion set title=#{title}, content=#{content} 
	    where sugnum=#{sugnum}
	
	
	
	
	    delete suggestion where sugnum=#{sugnum}   
	
	

	
	
	    insert into sugreply values
	    (sugreply_SEQ.NEXTVAL, #{gulnum}, #{mid}, #{content}, sysdate)   
	
	
	
	
	
	
	
	
	
	
	   	update sugreply set content=#{content} where replynum=#{replynum} 
	
	
	
	
	    delete sugreply where replynum=#{replynum}  
	
	
	
 
	
	
	    insert into lostboard values
	    (LOSTBOARD_SEQ.NEXTVAL, #{title}, #{mid}, #{location}, #{content}, #{image}, sysdate, 0)    
	
	
	
	
	
	
	
	
	
	
	
	
	
	    update lostboard set count=#{count} where lostnum=#{lostnum}
	
	
	
	
	    update lostboard set title=#{title}, location=#{location}, 
	    content=#{content}, image=#{image} 
	    where lostnum=#{lostnum}
	
	
	
	
	    delete lostboard where lostnum=#{lostnum}   
	

	
	
	
	    insert into lostreply values
	    (lostreply_SEQ.NEXTVAL, #{gulnum}, #{mid}, #{content}, sysdate)   
	
	
	
	
	
	
	
	
	
	
	   	update lostreply set content=#{content} where replynum=#{replynum} 
	
	
	
	
	    delete lostreply where replynum=#{replynum}