アンケートプラットフォームの実施(管理者)
9082 ワード
ログイン
ログイン機能が作成されていることを確認することで、idとパスワードが正しいかどうかを判断できます.
@Override
@RequestMapping(value = "login", method = RequestMethod.POST)
public String login(AdminMemberDTO adminMemberDTO, RedirectAttributes rttr,
HttpServletRequest request)
throws Exception {
System.out.println("login 메서드 진입");
session = request.getSession();
memberDTO = adminService.login(adminMemberDTO);
if (memberDTO == null) {
int result = 0;
rttr.addFlashAttribute("result", result);
return "redirect:loginView";
// 일치하는 memberDTO가 없다면
result를 addFlashAttribute를 이용해 넘겨준다.
->
<c:if test="${result == 0 }">
<div class="login_warn">사용자 ID 또는 비밀번호를 다시 입력해주세요. </div>
</c:if>
를 사용하기 위해 처리하는 것
// addAttribute는 값을 지속적으로 사용해야 할 때,
addFlashAttribute는 일회성으로 사용해야 할 때 사용해야 한다.
}
session.setAttribute("member", memberDTO);
session.setAttribute("isLogOn", true);
return "redirect:adminselect";
}
問題ボードの作成
フォーラムページには、フォーラム形式のテーブルとページ+検索機能が含まれています.
基本掲示板に表示される情報は、情報状態のみが「D」ではない情報です.
Dはdeleteの略で、登録、変更、削除の有無を情報状態に分ける.
@Override
@RequestMapping(value = "adminQuesList", method = RequestMethod.GET)
public ModelAndView quesListArticles(AdminBoardDTO boardDTO,
HttpServletRequest request) throws Exception {
ModelAndView mav = new ModelAndView();
String search = request.getParameter("search");
boardDTO.setSearch(search);
// 게시판의 검색 기능을 사용하기 위한 설정
mav.addObject("quesList", adminService.getQuesListPaging(boardDTO));
System.out.println("전달된 데이터 " + boardDTO);
int amount = adminService.getAmount(boardDTO);
BoardPageDTO pageDTO = new BoardPageDTO(boardDTO, amount);
System.out.println(pageDTO);
// 검색 기능을 포함한 전체 게시물 수 확인
mav.addObject("boardPage", pageDTO);
mav.setViewName("ezdiary/admin/adminQuesList");
return mav;
}
質問用紙と回答用紙の追加
思ったより難しい技です.検索しても似たような例はないので、一つ一つ考えています.
特に、データベース・テーブルに制約があるため、初めて見たクエリー・ステートメントが使用されます.
(検索文で欲しい情報を抽出すると、本当に気持ちがいいです)
いずれにしても、これでよくできたのではないかと疑っています.
結局あなたの望み通り^^
@Override
@RequestMapping(value = "quesWriteInsert", method = RequestMethod.POST)
public ModelAndView quesWriteInsert(AdminAskDTO askDTO,
AdminAnswerDTO answerDTO, HttpServletRequest request)
throws Exception {
ModelAndView mav = new ModelAndView();
// 다음에는 String 타입으로 써야겠다^^
session = request.getSession();
memberDTO = (AdminMemberDTO) session.getAttribute("member");
// 페이지에 정보가 나오진 않지만 DB에 질문지와 답변지 추가한 작성자의 정보를
저장할 수 있도록 했다. 그래서 session에 저장된 member를 가져온다.
String writer = memberDTO.getWriter();
if (writer != null) {
//if문을 활용한 이유는 유효성 검사를 하기 위해서다.
-> 사실 활용하지 않았을 땐 불명확한 이유로 아래의 코드가 작동하지 않았다.
계속 오류가 발생;;; 그래서 if문을 활용해 나누어 줬다. 그러자 원하는대로 성공!
askDTO.setWriter(writer);
adminService.quesEnroll(askDTO);
System.out.println("quesINFO Insert" + askDTO); : 정보를 확인하기 위해서
int parentNO = adminService.lastAskNO(askDTO);
// 답변지에 최근에 등록한 ask_idx 번호를 지정해주기 위해 변수로 담았다.
System.out.println("parentNO : " + parentNO);
if (parentNO != 0) {
answerDTO.setAsk_idx(parentNO);
for (int i = 1; i <= 3; i++) {
askDTO.getAsk_idx();
answerDTO.setAnswer_idx(i);
String anwerWriter = memberDTO.getWriter();
answerDTO.setWriter(anwerWriter);
adminService.answerEnroll(answerDTO);
}
}
}
mav.setViewName("redirect:/adminQuesList");
return mav;
}
質問の詳細ページ
// 질문지 상세페이지
@Override
@RequestMapping(value = "adminQuesView", method = { RequestMethod.GET, RequestMethod.POST })
public ModelAndView quesView(@RequestParam("ask_idx") int ask_idx) throws Exception {
Map<String, Object> articleMap = adminService.getAskNO(ask_idx);
// adminQuesList에서 넘어온 ask_idx를 기준으로 상세페이지를 출력할 수 있도록 한다.
ModelAndView mav = new ModelAndView();
mav.setViewName("ezdiary/admin/adminQuesView");
mav.addObject("articleMap", articleMap);
return mav;
}
問題用紙の修正
// 추가한 질문지 수정페이지의 수정하기
@Override
@RequestMapping(value = "adminQuesMod", method = RequestMethod.POST)
public ModelAndView quesWriteUpdate(AdminAskDTO askDTO,
AdminAnswerDTO answerDTO, HttpServletRequest request,
RedirectAttributes rttr) throws Exception {
ModelAndView mav = new ModelAndView();
String writer = memberDTO.getWriter();
if (writer != null) {
Map<String, Object> articleMap = new HashMap<>();
askDTO.setEditor(writer);
articleMap.put("editor", askDTO.getEditor());
Enumeration enu = request.getParameterNames();
while (enu.hasMoreElements()) {
String name = (String) enu.nextElement();
String value = request.getParameter(name);
articleMap.put(name, value);
// 수정된 질문지의 정보를 가져오기 위해 사용
}
String ask_idx = (String) articleMap.get("ask_idx");
adminService.modifyQues(articleMap);
for (int i = 1; i <= 3; i++) {
askDTO.getAsk_idx();
answerDTO.setAnswer_idx(i);
articleMap.put("answer_idx", answerDTO.getAnswer_idx());
String anwerWriter = memberDTO.getWriter();
answerDTO.setWriter(anwerWriter);
articleMap.put("editor", answerDTO.getWriter());
// writer 정보를 수정 등록 기능이기 때문에 editor에 설정
articleMap.put("answer_cntnt", answerDTO.getAnswer_cntnt());
// 수정된 질문지의 정보를 가져오기 위해 사용
adminService.modifyAnswer(articleMap);
}
mav.setViewName("redirect:/adminQuesView?ask_idx=" + ask_idx);
}
return mav;
}
質問用紙と回答用紙の削除
削除機能は、問題用紙を修正する機能と似ています.
ただdeleteではないupdateを使用し、情報状態をdeleteの略「D」と表す.
// 추가한 질문지 상세페이지 삭제 기능
@Override
@RequestMapping(value = "removeQues", method = { RequestMethod.GET, RequestMethod.POST })
public ModelAndView quesWriteRemove(AdminAskDTO askDTO,
AdminAnswerDTO answerDTO, HttpServletRequest request)
throws Exception {
ModelAndView mav = new ModelAndView();
String writer = memberDTO.getWriter();
if (writer != null) {
Map<String, Object> articleMap = new HashMap<>();
askDTO.setEditor(writer);
articleMap.put("editor", askDTO.getEditor());
Enumeration enu = request.getParameterNames();
while (enu.hasMoreElements()) {
String name = (String) enu.nextElement();
String value = request.getParameter(name);
articleMap.put(name, value);
}
int askNOresult = askDTO.getAsk_idx();
System.out.println(askNOresult);
articleMap.put("ask_idx", askDTO.getAsk_idx());
adminService.removeQues(articleMap);
askDTO.getAsk_idx();
String anwerWriter = memberDTO.getWriter();
answerDTO.setWriter(anwerWriter);
articleMap.put("editor", answerDTO.getWriter());
adminService.removeAnswer(articleMap);
mav.setViewName("redirect:/adminQuesList");
}
return mav;
}
++ユーザー伝言板コードも追加されます(追加および変更中)Reference
この問題について(アンケートプラットフォームの実施(管理者)), 我々は、より多くの情報をここで見つけました https://velog.io/@900522z/설문조사형-플랫폼-구현관리자テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol