Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

soozya

[BACK] 글 수정하기 본문

👩🏻‍💻프로젝트/👥팀프로젝트

[BACK] 글 수정하기

soozya 2023. 8. 2. 17:01

[👩🏻‍💻소스코드]

(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) 수정한 내용 확인