Пример #1
0
  @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);
  }
Пример #2
0
  @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);
  }