글 쓰기 페이지(view,action)

이경현·2024년 11월 7일

1.controller
1-1 @RequestMapping(value="boardWrite.aws") 매핑 걸어주고
1-2 public String boardWrite() {
String path = "WEB-INF/board/boardWrite";
return path;
} 로 글쓰기 페이지로(경로 적어주기) 보냄

@RequestMapping(value="boardWrite.aws")	
	public String boardWrite() {	
		String path = "WEB-INF/board/boardWrite"; 
		return path;
	}		// 글쓰기 페이지만 보여주는 컨트롤러 

1-3 글쓰기 동작 구현 >> 5번에서 확인

2.service 메서드 선언하기
2-1 먼저 삽입하는 메서드 선언
리턴값은 int 매개변수는 bv로 설정해서 담아올거임

public int boardInsert(BoardVo bv);

3.mapper.xml
3-1 쿼리문 작성 insert 문

  	<insert id = "boardInsert" parameterType="bv">
  		<!--  mybatis 안에서 사용하는 selectKey -->
  		<selectKey keyProperty = "bidx" resultType="int" order = "AFTER">
			select max(bidx) as bidx from board	 	
  		</selectKey>
  		
  	INSERT INTO board (originbidx,depth,level_,subject,contents,writer,password,midx,filename,ip)
  	 value(null,0,0,#{subject},#{contents},#{writer},#{password},#{midx},#{uploadedFilename},#{ip})
  	</insert>

4.serviceImpl 클래스 명에 빨간줄 뜨면 add unimpl~ 클릭해서 override 해주기
4-1 BoardMapper에서 선언한 메서드 불러서 사용
4-2 BoardMapper 안에 있는 boardInsert(bv) 메서드 실행시키고 성공하면 결과값 1 출력
4-3 BoardVo 에 있는 bidx 꺼내서 maxBidx 에 담아주고
4-4 BoardMapper 안에 있는 boardOriginbidxUpdate(maxBidx)메서드 꺼내서 위에서 가져온 bidx 담아주고 실행 성공하면 결과값 1 출력

결과값들이 정상적으로 나오면 2 리턴함

@Override
	@Transactional
	public int boardInsert(BoardVo bv) {		
		
		int value = bm.boardInsert(bv);			// 결과값은 1또는 0
		int maxBidx = bv.getBidx();
		int value2 = bm.boardOriginbidxUpdate(maxBidx);// 업데이트 구문 실행		// 결과값 1또는 0
		// 메서드 두개 실행중에 정전이 나서 오류가 발생하면 안되니 
		// 트렌젝션으로 묶어준다 @Transactional
		
		
		
		return value+value2;		// 성공하면 2 아니면 0
	}

5.controller
5-1 불러와서 사용하기

@RequestMapping(value="boardWriteAction.aws")	// 글쓰기 동작 메서드
	public String boardWriteAction(
			BoardVo bv,// 넘겨야할 데이터 제목, 내용, 작성자, 비밀번호(bv로 받는다)
			@RequestParam("filename")MultipartFile filename, // 파일은 @RequestParam("filename")MultipartFile filename)
			HttpSession session, // 회원번호 꺼내고 아이디 꺼내려고 세션값 가져옴
			HttpServletRequest request,		// 요청값 > 회원번호 가져오기 위해서 세션 생성
			RedirectAttributes rttr		// sendredirect 로 화면 보여주기 위해서  생성
			) throws IOException, Exception{	
				MultipartFile file = filename;// 새로운 변수에 담아서 이름을 변경해줌
				String uploadedFileName = "";
				if(! file.getOriginalFilename().equals("")) {		// ! >> 존재한다면(.equals("")없는게 아니라면)
					
					uploadedFileName = UploadFileUtiles.uploadFile(uploadPath, file.getOriginalFilename(), file.getBytes());// 업로드 위치 파일 이름 
					// 빨간줄 뜨면 throws 로 해결 위에 자동 생성 
					// BoardVo 에 가서 	private String uploadedFilename;추가하고 getter,setter 생성해주기
					
				}
				
				String midx = request.getSession().getAttribute("midx").toString();
				int midx_int = Integer.parseInt(midx);
				
				
				String ip = getUserIp(request);
				
				bv.setUploadedFilename(uploadedFileName);
				bv.setMidx(midx_int);
				bv.setIp(ip);
				
				
				String path = "";
				int value = boardService.boardInsert(bv);
				
				
				if(value == 2) { // 성공하면 목록 보여주고
					path ="redirect:/board/boardList.aws";
				}else {			// 실패하면 다시 쓰기 페이지 보여주기 
					
					rttr.addFlashAttribute("msg","입력이 잘못되었습니다");
					path = "redirect:/board/boardWrite.aws";
				}
				
		return path;	// 메서드 모두 실행하고 경로로 가기
		
		
	}

0개의 댓글