@Override public void execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); String url = "/error.jsp"; String title, brdcontent, mood, brdno = null; MultipartRequest multi = null; BoardDTO boardDTO = null; String fileName = null; String imagefile = null; String realPath = null; String savePath = null; String userid = null; int maxSize = 0; try { savePath = session.getServletContext().getRealPath("image"); userid = (String) session.getAttribute("userid"); // 14-05-26 성훈추가: 사용자별 사진첩 폴더생성 realPath = savePath + "/" + userid; // 경로지정: 리얼패스밑에 폴더명을 사용자id로 주기 File targetDir = new File(realPath); // 경로를 가진 파일객체 생성하기 if (!targetDir.exists()) { // 파일이 존재하지 않는다면 targetDir.mkdirs(); // 새로운 디렉토리를 만들어준다. } maxSize = 5 * 1024 * 1024; // 최대 업로드 파일 크기 5MB(메가)로 제한 multi = new MultipartRequest(request, realPath, maxSize, "utf-8", new DefaultFileRenamePolicy()); title = multi.getParameter("title"); mood = multi.getParameter("mood"); brdcontent = multi.getParameter("brdcontent").replaceAll("\r\n", "<br/>"); brdno = multi.getParameter("brdno"); fileName = multi.getFilesystemName("uploadFile"); // 파일의 이름 얻기 imagefile = "/gaenari/image/" + userid + "/" + fileName; // 방금등록한 이미지실제경로(사용자별 폴더) if (fileName == null) System.out.print("파일 업로드 되지 않았음"); // 파일이 업로드 되지 않았을때 // 이미지 파일 업로드 됨. if (title.equals(null) || title.trim().length() == 0 || mood.equals(null) || mood.trim().length() == 0 || brdcontent.equals(null) || brdcontent.trim().length() == 0) { throw new Exception("내용을 모두 입력해주세요."); } else { if (fileName == null) // 파일업로드하지 않는 경우(brdno,content,title) boardDTO = new BoardDTO(Integer.parseInt(brdno), "!split!" + brdcontent, title); else // 파일업로드하는 경우(brdno,content,title) boardDTO = new BoardDTO(Integer.parseInt(brdno), imagefile + "!split!" + brdcontent, title); DiaryDAO.updateDiaryBoard(boardDTO); DiaryDAO.updateDiary(new DiaryDTO(Integer.parseInt(brdno), mood)); // 보드DTO와 다이어리DTO에 받은 값들을 입력해준다. } url = "/diaryDetail.do?brdno=" + brdno; } catch (SQLException e) { e.printStackTrace(); request.setAttribute("errorMsg", e.getMessage()); } catch (Exception e) { e.printStackTrace(); request.setAttribute("errorMsg", e.getMessage()); } request.getRequestDispatcher(url).forward(request, response); }
@Override public void execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); String url = "/error.jsp"; String[] oneDiaryContents = null; List<DiaryDTO> dlist = null; BoardDTO oneDiary = null; DiaryDTO diaryDTO = null; BoardDTO tmpDiary = null; String oneDiaryImg = null; String userid = null; UserDTO user = null; String index = null; int indexInt = 0; // 14-05-14 성훈 추가 일기접근 번호(게시판번호, 전체일기 인덱스번호) if (request.getParameter("index") != null) index = request.getParameter("index"); try { user = (UserDTO) session.getAttribute("user"); userid = user.getUserid(); // 다른 아이디를 클릭할 때 if (request.getParameter("userid") != null) { // 만약 userid 파라미터를 넘겨 받았다면 if (userid != request.getParameter("userid")) { // 그리고 만약 세션 userid와 파라미터userid가 다르다면 userid = request.getParameter("userid"); // userid에 파라미터userid를 저장하기 user = UserDAO.logCheck(userid); } } dlist = DiaryDAO.selectAllDiary(user); // user정보를 이용하여 전체 일기 리스트받아오기 /** * 14-05-14 성훈 추가: 일기접근 번호(게시판번호, 일기번호) 이전글, 다음글로 액션에 들어올 땐 if문으로 메인, 달력 페이지의 미리보기 버튼으로 액션들어올 * 땐 else if 문으로 접근 * * <p>14-05-21 성훈 수정: 기존에 일기번호로 접근했던 것을 user에 해당하는 전체일기의 index로 접근 */ if (index != null) { // 이전글, 다음글 클릭하여 들어올 경우 if (Integer.parseInt(index) < 0 || Integer.parseInt(index) > dlist.size() - 1) throw new IndexOutOfBoundsException("페이지의 끝입니다."); // 이전글, 다음글 클릭하여 얻은 index가 정해진 범위를 초과하면 Exception발생! // diaryDTO = // TestDAO.getOneDiary(dlist.get(Integer.parseInt(index)).getDbrdno(),user.getUserno()); diaryDTO = dlist.get(Integer.parseInt(index)); // 이전글, 다음글 클릭하여 얻은 index와 현재 user정보에 해당하는 diaryDTO가져오기 } else if (request.getParameter("brdno") != null) // 미리보기 버튼 클릭하여 들어올 경우 diaryDTO = DiaryDAO.getJustDiary(Integer.parseInt(request.getParameter("brdno"))); for (DiaryDTO dto : dlist) if (dto.getBrdno() == diaryDTO.getBrdno()) indexInt = dlist.indexOf(dto); // 전체 일정중 현재 보여지는 일기에 해당하는 index를 구함 oneDiary = DiaryDAO.selectOneDiary(diaryDTO.getBrdno()); // 14-05-26 성훈수정: 다이어리 컨텐츠 줄바꿈 추가 oneDiaryContents = oneDiary.getBrdcontent().replaceAll("\r\n", "<br/>").split("!split!"); // 14-05-13 성훈 수정: 이미지 경로가 null인지 확인하는 조건 수정 if (oneDiaryContents[0].equals(null) || oneDiaryContents[0].trim().length() == 0) { request.setAttribute("oneDiaryImg", null); } else { oneDiaryImg = oneDiaryContents[0]; request.setAttribute("oneDiaryImg", oneDiaryImg); } // 14-05-14 성훈 수정: diarydto를 받는 tmpDiary를 만들어서 content에 이미지 경로 제외시키도록 설정 tmpDiary = oneDiary; tmpDiary.setBrdcontent(oneDiaryContents[1]); request.setAttribute("user", user); request.setAttribute("index", indexInt); // 현재 보여지는 일정의 index 번호 setAttribute request.setAttribute("oneDiary", tmpDiary); // 선택된 일정의 전체정보 setAttribute url = "miniHome/oneDiary.jsp"; } catch (SQLException e) { request.setAttribute("errorMsg", e.getMessage()); } catch (Exception e) { request.setAttribute("errorMsg", e.getMessage()); e.printStackTrace(); } request.getRequestDispatcher(url).forward(request, response); }