アンケートプラットフォームの実施(管理者)

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;
	}
++ユーザー伝言板コードも追加されます(追加および変更中)