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; // 메서드 모두 실행하고 경로로 가기
}