PRG(Post/Redirect/Get) ν¨ν΄κ³Ό μμ
| PRG ν¨ν΄
μΉ κ°λ°μμ μ¬μ©λλ ν¨ν΄μΌλ‘ μ¬μ©μκ° νΌμ μ μΆν ν μλ‘ κ³ μΉ¨μ λλ₯΄λ©΄ λμΌν λ°μ΄ν°κ° μ€λ³΅ μ μΆλλ λ¬Έμ λ₯Ό λ°©μ§νκΈ° μν΄ μ¬μ©λλ€. μ΄λ΄ κ²½μ° λμΌ κ²μλ¬Όμ΄λ κ°μ μ£Όλ¬Έμ΄ λ°λ³΅λμ΄ μ΄λ£¨μ΄ μ§ μ μλ€. μ΄ ν¨ν΄μ λ€μκ³Ό κ°μ λ¨κ³λ‘ λμνλ€.
1. POST: μ¬μ©μκ° μΉ μμμ μμ±νκ³ μ μΆνλ©΄, λ°μ΄ν°λ POST μμ²μ ν΅ν΄ μλ²λ‘ μ μ‘λλ€.
2. Redirect: μλ²λ λ°μ΄ν°λ₯Ό μ²λ¦¬ν ν, μ¬μ©μλ₯Ό λ€λ₯Έ νμ΄μ§λ‘ 리λ€μ΄λ νΈ(μ: μ±κ³΅ νμ΄μ§, 리μ€νΈ νμ΄μ§ λ±)νλ€. μ΄λ 리λ€μ΄λ νΈλ GET μμ²μ μ¬μ©νλ€.
3. GET: λΈλΌμ°μ λ μλ²λ‘λΆν° λ°μ 리λ€μ΄λ μ
μ§μμ λ°λΌ GET μμ²μ νμ¬ μ νμ΄μ§λ₯Ό λ‘λνλ€.
μ΄ ν¨ν΄μ ν΅μ¬μ POST μμ²μΌλ‘ λ°μ΄ν°λ₯Ό μ μ‘ν μ§νμ λΈλΌμ°μ κ° μλ‘κ³ μΉ¨μ νλλΌλ GET μμ²λ§ λ€μ μνλκΈ° λλ¬Έμ, λ°μ΄ν°κ° μ€λ³΅μΌλ‘ μλ²μ μ μ‘λλ κ²μ λ°©μ§νλ€λ κ²μ΄λ€.
μ΄λ₯Ό ν΅ν΄ μ¬μ©μ κ²½νμ κ°μ νκ³ , μΉ μ΄ν리μΌμ΄μ μ μ λ’°λλ₯Ό λμΌ μ μλ€.
| PRG ν¨ν΄ μμ - κ²μν κΈ λ±λ‘
μλ μμλ κ΄λ¦¬μ νμ΄μ§ μ κ· κ³΅μ§μ¬ν λ±λ‘κΈ°λ₯μ κ΄ν κ²μ΄λ€.
1. μ¬μ©μλ μλ JSPμμ κ²μκΈμ κ΄λ ¨ νλͺ©μ μ λ ₯νκ³ λ±λ‘νλ€. 'μ μ₯'λ²νΌ ν΄λ¦μ javascript ν¨μκ° μλνλ©΄μ 컨νΈλ‘€λ¬μ POST μμ²μ΄ μ λ¬λλ€.
<section id="container">
<div class="contents">
<h2>곡μ§μ¬ν ${subTitle}</h2>
<form name="insertNoticeBoardOne" method="post" enctype="multipart/form-data">
<input type="hidden" name="noticeBoardSubType" value="${noticeBoardSubType}"/>
<input type="hidden" id="editmode" name="editmode" value="${editmode}"/>
<div class="inner">
<div class="inputWrap">
<div class="gridWrap">
<!-- μ λͺ© μ
λ ₯ νλ -->
<div>
<span>μ λͺ©</span>
<input type="text" id="bbsTtl" name="noticeTitle" maxlength="200"/>
</div>
<!-- μμ±μ μ 보 -->
<div>
<span>μμ±μ</span>
</div>
<!-- μμ±μΌ μ
λ ₯ νλ -->
<div>
<span>μμ±μΌ</span>
<div>
<input type="text" name="noticeFirstRegistPtm" readonly="readonly" class="no-border"/>
</div>
</div>
<!-- λ΄μ© μ
λ ₯ νλ -->
<div>
<span>λ΄μ©</span>
<textarea id="bbsCn" name="bbsCn" rows="10" cols="40" maxlength="4000"></textarea>
</div>
<!-- νμΌ μ²¨λΆ νλ -->
<div class="file-upload">
<span>νμΌμ²¨λΆ</span>
<div id="file_upload_posbl" class="board_attach2">
<input name="file_1" id="egovComFileUploader" type="file" multiple />
<div id="egovComFileList"></div>
</div>
</div>
</div>
</div>
<!-- λ²νΌ μμ -->
<div class="btnArea">
<ul>
<li>
<button type="button" onClick="goList()">λͺ©λ‘</button>
</li>
<li>
<button type="button" onClick="editData()">μ μ₯</button>
</li>
</ul>
</div>
</div>
</form>
</div>
</section>
2. POST : 컨νΈλ‘€λ¬μμλ μΉμμ μμ²λ°μ insertAdminNoticeBoardλ©μλλ κ²μκΈ λ±λ‘ νλ‘μΈμ€λ₯Ό μ€ννλ€. μλ²μ μ μ₯μ΄ λλ λ€ λͺ©λ‘ νμ΄μ§λ‘ 리λ€μ΄λ νΈνλ€.
3. GET: λΈλΌμ°μ λ μλ²λ‘λΆν° λ°μ 리λ€μ΄λ μ μ§μμ λ°λΌ GET μμ²μ νμ¬ κ²μκΈ λͺ©λ‘ νμ΄μ§λ₯Ό λ‘λνλ€.
@PostMapping(value = "/insertAdminNoticeBoard.do")
public String insertAdminNoticeBoard(final MultipartHttpServletRequest multiRequest, NoticeBoardVO boardVO, ModelMap model) throws Exception {
List<FileVO> result = null;
String atchFileId = "";
boardVO.setNoticeBoardType(4);
final Map<String, MultipartFile> files = multiRequest.getFileMap();
if (!files.isEmpty()) {
result = fileUtil.parseFileInf(files, "BBS_", 0, "", "");
atchFileId = fileMngService.insertFileInfs(result);
boardVO.setAtchFileId(atchFileId);
}
announcementAdminSerivce.insertBoard(boardVO);
model.addAttribute("editmode", "I");
model.addAttribute("boardVO", boardVO);
return "redirect:admin/selectAminNoticeBoardList.admin";
}
@GetMapping({"/Announcement.do","/Board.do", "/QnA.do"})
public String selectAminNoticeBoardList(@ModelAttribute("searchVO") NoticeBoardVO searchVO, HttpServletRequest request, ModelMap model){
/* pageing setting */
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(searchVO.getPageIndex());
paginationInfo.setRecordCountPerPage(searchVO.getPageUnit());
paginationInfo.setPageSize(searchVO.getPageSize());
searchVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
searchVO.setLastIndex(paginationInfo.getLastRecordIndex());
searchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
List<NoticeBoardVO> boardList = announcementAdminSerivce.selectBoardList(searchVO);
int totCnt = announcementAdminSerivce.selectBoardListTotCnt(searchVO);
paginationInfo.setTotalRecordCount(totCnt);
model.addAttribute("boardList", boardList);
model.addAttribute("noticeBoardSubType", searchVO.getNoticeBoardSubType());
model.addAttribute("paginationInfo", paginationInfo);
return "admin/AdminNoticeBoardList.admin";
}