soozya
[BACK] 글 수정하기 본문
[👩🏻💻소스코드]
(QNAboardDAO.java)
//8. 글 수정하기 : 수정할 데이터를 찾자
public QNAboardDTO updateGetArticle(int post_num) {
QNAboardDTO article=null;
try {
con=pool.getConnection();
sql="select * from qna_post where post_num=?";
pstmt=con.prepareStatement(sql);
pstmt.setInt(1, post_num);
rs=pstmt.executeQuery();
if(rs.next()) {
article=makeArticleFromResult();
}
}catch(Exception e) {
System.out.println("updateGetArticle() 에러: "+e);
}finally {
pool.freeConnection(con, pstmt, rs);
}
return article;
}
//8-2. 수정할 메서드
public int updateArticle(QNAboardDTO article) {
int x=-1; //게시글의 성공유무 체크
try {
con=pool.getConnection();
sql="update qna_post set post_title=?, post_cnt=? where post_num=?";
pstmt=con.prepareStatement(sql);
pstmt.setString(1, article.getPost_title());
pstmt.setString(2, article.getPost_cnt());
pstmt.setInt(3, article.getPost_num());
int update=pstmt.executeUpdate();
System.out.println("article.post_cnt: "+article.getPost_cnt());
System.out.println("게시판의 글수정 성공 확인(update): "+update);
x=1;
}catch(Exception e) {
System.out.println("updateArticle() 메서드 에러: "+e);
}finally {
pool.freeConnection(con, pstmt);
}
return x;
}
(QNAUpdateFormAction.java)
package action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.QNAboardDAO;
import model.QNAboardDTO;
public class QNAUpdateFormAction implements CommandAction {
@Override
public String requestPro(HttpServletRequest request, HttpServletResponse response) throws Throwable {
// TODO Auto-generated method stub
//1. qnapost3.jsp에서 수정할 때
int post_num=Integer.parseInt(request.getParameter("post_num"));
String pageNum=request.getParameter("pageNum");
System.out.println("updateFormAction의 post_num="+post_num+", pageNum="+pageNum);
QNAboardDAO dbPro=new QNAboardDAO(); //메서드 호출 목적
QNAboardDTO article=dbPro.updateGetArticle(post_num);
//2. 서버의 메모리에 저장(공유)
request.setAttribute("pageNum", pageNum);
request.setAttribute("article", article);
return "/QNAupdateform.jsp";
}
}
(QNAUpdateProAction.java)
package action;
//DB에 관련된 날짜, 시간
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.QNAboardDAO;
import model.QNAboardDTO;
public class QNAUpdateProAction implements CommandAction {
@Override
public String requestPro(HttpServletRequest request, HttpServletResponse response) throws Throwable {
// TODO Auto-generated method stub
//한글처리
request.setCharacterEncoding("utf-8");
//추가(수정된 게시물로 페이지를 이동시키기 위해서)
String post_num=request.getParameter("post_num");
String pageNum=request.getParameter("pageNum");
System.out.println("UpdateProAction에서의 pageNum="+pageNum);
//------------------------------------------------------
QNAboardDTO article=new QNAboardDTO();
article.setPost_num(Integer.parseInt(request.getParameter("post_num")));
article.setMem_id(request.getParameter("mem_id"));
article.setAdmin_id(request.getParameter("admin_id"));
article.setPost_title(request.getParameter("post_title"));
article.setPost_cnt(request.getParameter("post_cnt")); //글내용
//DTO저장 끝
QNAboardDAO dbPro=new QNAboardDAO();
int check=dbPro.updateArticle(article); //1:성공 / 0: 실패
System.out.println("upProAction 확인 중 ");
//2개의 공유값이 필요
request.setAttribute("post_num", post_num);
request.setAttribute("pageNum", pageNum);
request.setAttribute("check", check);
return "/QNAupdatepro.jsp";
}
}
[💬설명]
1️⃣ String post_num = request.getParameter("post_num");
- [String post_num] : 문자형 post_num
- [request.getParameter("post_num")] : 웹에서 넘어오는 "post_num"의 파라미터 값을 가져오는 소스코드로,
웹 폼에 입력한(입력된) 데이터를 가져오는 것
= post_num에 웹 폼에서 입력한 "post_num"에 해당하는 데이터를 문자열로 가져온다는 뜻
2️⃣ article.setPost_num(Integer.parseInt(request.getParameter("post_num")));
- [Integer.parseInt] : 원래의 post_num의 자료형은 int이므로, 문자열로 입력을 받은 "post_num"을 정수형으로 바꿔줌
- [article.setPost_num] : setPost_num 메서드를 호출해 "post_num"의 데이터를 article객체에 저장하는 것
= 웹 폼에서 입력한 문자열 "post_num"을 정수형으로 변환하고, article(QNAboardDTO)에서 setPost_num을 호출해서 변환한 데이터를 post_num 속성에 저장함.
3️⃣ request.setAttribute("post_num",post_num);
- 웹 서버에서 요청받은 데이터를 저장하는 것으로, 첫번째 매개변수인 "post_num"은 key값,
두 번째 매개변수인 post_num은 저장할 값이 됨
- 즉, "post_num"에는 post_num의 값이 저장되어 있는 것으로, post_num의 값이 25라면
"post_num"은 25라는 post_num을 가지게 됨
[💻결과]
1) 글 상세보기에서 수정하기 클릭
2) 수정할 내용 작성
3) 수정한 내용 확인
'👩🏻💻프로젝트 > 👥팀프로젝트' 카테고리의 다른 글
[BACK] 상품 검색하기 (0) | 2023.08.09 |
---|---|
[BACK] 글 삭제하기 (0) | 2023.08.03 |
[BACK] 게시판 글 쓰기, 상세보기 (0) | 2023.07.29 |
[BACK] 게시판 글 목록 보기 (0) | 2023.07.20 |
[FRONT] 관리자 페이지 (0) | 2023.04.28 |