CREATE TABLE REPLY_TBL(
REPLY_NO NUMBER PRIMARY KEY,
REF_BOARD_NO NUMBER NOT NULL,
REPLY_CONTENTS VARCHAR2(500) NOT NULL,
REPLY_WRITER VARCHAR2(30) NOT NULL,
R_CREATE_DATE DATE DEFAULT SYSDATE,
R_UPDATE_DATE DATE DEFAULT SYSDATE,
R_STATUS VARCHAR2(2) DEFAULT 'Y'
);
CREATE SEQUENCE SEQ_REPLY_NO;
테이블 만들고. 댓글의 시퀀스도 만들어 준다.
controller에 댓글 입력부분 만들기.
@RequestMapping(value="/board/addReply.kh", method=RequestMethod.POST)
public ModelAndView addBoardReply(
ModelAndView mv
, @ModelAttribute Reply reply
,HttpSession session
, @RequestParam(value = "page", required = false) int page) {
//INSERT INTO REPLY_TBL VALUES(#{replyNo}=시퀀스,#{refBoardNo},#{replyContents},#{replyWriter},DEFAULT,DEFAULT,DEFAULT
Member member=(Member)session.getAttribute("loginUser");
String replyWriter=member.getMemberId();
reply.setReplyWriter(replyWriter);
int result=bService.registerReply(reply);
if(result>0) {
mv.setViewName("redirect:/board/detail.kh?boardNo="+reply.getRefBoardNo()); //+"&page="page
}
mv.addObject("page",page);
return mv;
}
session의 기록된 로그인 정보 가져오는것.......잊으면안됨...로그인정보는 어디서든 쓰이니깐..
<script>
function boardRemove(page) {
event.preventDefault();// 하이퍼 링크 이동 방지
if(confirm("게시물을 정말 삭제하시겠습니까?")){
location.href="/board/remove.kh?page="+page;
}
}
</script>
상세페이지에 목록 다 하고 마지막 삭제하기 정말할때 페이지 값을 함수로 해서 다시 보내준다.
public String boardRemove(HttpSession session, Model model,
@RequestParam("page") Integer page) {
// 삭제만 하니깐..ModelAndView가아니라 그냥 String 반환에 model연결함
try {
int boardNo = (int) session.getAttribute("boardNo");
int result = bService.removeOnebyNo(boardNo);
if (result > 0) {
session.removeAttribute("boardNo");
// 성공해서 삭제되었으니깐 세션에서 정보를 삭제해야함
}
//model.addAttribute("page", page);
return "redirect:/board/list.kh?page="+page;
} catch (Exception e) {
model.addAttribute("msg",e.toString());
return "common/errorPage";
}
}
@RequestParam("page") Integer page) 함수로 받으니깐 표현이 조매 다름...
삭제 후 다시 mv로 리스트 조회로 보낼때 다시 페이지를 보낸다.
삭제가 되었다......
public ModelAndView boardModify(@ModelAttribute Board board, ModelAndView mv,
@RequestParam(value = "reloadFile", required = false) MultipartFile reloadFile // 위에서 upload였는데 여기선
,@RequestParam("page")Integer page // reloadFile로 변경
, HttpServletRequest request) {
try {
String boardFilename = reloadFile.getOriginalFilename();
if (reloadFile != null && !boardFilename.equals("")) {
// 파일 이 있거나, 파일명이 있을때
// 수정방법 = 1, 대체 2, 삭제 후 저장 ==>삭제후 저장이 오히려 편함
// 파일 경로를 알아야 한다. 리케스트 필요 httpHttpServletRequest request
// 파일 삭제
String root = request.getSession().getServletContext().getRealPath("resources");
String savedPath = root + "\\buploadFiles";
// 파일이름을 갖고 오고자 db로 갈필요는 없음. 이 jsp에 board 자료가 있음
File file = new File(savedPath + "\\" + board.getBoardFileRename());// file.io
if (file.exists()) { // 파일이 정말 있는지 확인
file.delete(); // 파일 지움
}
// 삭제 했으니깐 다시 저장
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String boardFileRename = sdf.format(new Date(System.currentTimeMillis())) + "."
+ boardFilename.substring(boardFilename.lastIndexOf(".") + 1);
// substring 때문에 1을 더한것임
// lastIndexOf(".")은 파일.뒤의 확장자 구하는 것이다.
String boardFilepath = savedPath + "\\" + boardFileRename;
reloadFile.transferTo(new File(boardFilepath));
board.setBoardFilename(boardFilename);
board.setBoardFileRename(boardFileRename);
board.setBoardFilepath(boardFilepath);
}
int result = bService.modifyBoard(board);
mv.setViewName("redirect:/board/list.kh?page="+page);
수정할때는 약간다르다.....
,@RequestParam("page")Integer page
mv.setViewName("redirect:/board/list.kh?page="+page);// 이건 전송방식이 조금 다르지만 응용이다.
<!-- 주소api를 쓰기 위한 스크립트 -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="//d1p7wdleee1q2z.cloudfront.net/post/search.min.js"></script>
<script>
/* 주소api구간 */
$("#postcodify_search_button").postcodifyPopUp();
</script>
스크립트 넣어야지~~~~
public ModelAndView memberJoin( //스프링에서 모델과 뷰를 합쳐좋은 클래스이다.
@ModelAttribute Member member
// @ModelAttribute하나로 하단 @RequestParam 의 변수 값 받는 것을 모두 퉁칠수 있다. 대신에 input에 name과 변수명이 동일해야함. 아주 중요
//명칭이 다르면 Member 객체에서 그 값은 안들어감...
// @RequestParam("memberId") String memberId //form의 input의 name값 // 틀리면 안됨
// , @RequestParam("memberPwd") String memberPwd
// , @RequestParam("memberName") String memberName
// , @RequestParam("memberEmail") String memberEmail
// , @RequestParam("memberPhone") String memberPhone
, @RequestParam("post") String post
, @RequestParam("address1") String address1
, @RequestParam("address2") String address2
// , Model model
, ModelAndView mv){
//request.setCharacherEncoding("utf-8"); 할수도 있으나 그럼 매번 사용해줘야 함으로 필터로 진행하기로 함.
try {
// Member member=new Member(memberId,memberPwd, memberName, memberEmail,memberPhone, post+","+memberAddress);
// @ModelAttribute("") 덕분에 위에것을 다래 것으로 간단히 기재하면 된다.
member.setMemberAddr(post+","+address1+"/"+address2);
controller 에 param값 불러온것을 또 한가지로 합친다.... 샘은 ,로 했는데 나중에 수정시 불러오기 있을것 같아...한번더 체크