게시글 작성 기능 구현
1. BoardForm 생성(DTO의 기능을 하는 클래스)
package com.board; import org.apache.struts.action.ActionForm; //Struts에서 관리하므로 ActionForm 상속 public class BoardForm extends ActionForm{ private static final long serialVersionUID = 1L;//DTO
private int num; private String name; private String subject; private String content; private String pwd; private String email; private int hitCount; private String ipAddr; private String created; getter, setter 생성 } |
2. BoardAction(Servlet의 기능을 하는 클래스) write,write_ok method생성
public class BoardAction extends DispatchAction{
Connection conn = DBCPConn.getConnection(); BoardDAO dao = new BoardDAO(conn);
//메소드명 변경 가능 //게시판 작성시 public ActionForward write(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
//사용자가 오게되면 create페이지를 띄우고자 함. //입력폼 return mapping.findForward("created"); //created라는 문자열을 가지고 돌아가라 } //게시판 작성 완료시 public ActionForward write_ok(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { BoardForm f = (BoardForm)form; //downcast f.setNum(dao.getMaxNum()+1); f.setIpAddr(request.getRemoteAddr()); dao.insertData(f);
return mapping.findForward("save"); } |
3. web.xml 매핑정보 등록(parameter에 config.xml 등록)
<servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value> /WEB-INF/struts-config.xml, /WEB-INF/struts-config_test.xml, /WEB-INF/struts-config_board.xml </param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> |
4. struts-config_board.xml (forward 경로 등록)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config> <form-beans> <form-bean name="boardForm" type="com.board.BoardForm"/> </form-beans> <action-mappings> <!-- /board.do가 오면 BoardAction 클래스로 가라. --> <!-- parameter는 변수. 찾아가야하는 메소드명을 기재 --> <action path="/board" type="com.board.BoardAction" name="boardForm" scope="request" parameter="method"> <forward name="created" path="/board/created.jsp"/> </action> </action-mappings> </struts-config> |
5. created.jsp - 게시판 작성 jsp 페이지(View)
<body> <div id="bbs" > <div id="bbs_title"> 게 시 판(Struts1+JDBC) </div> <form action="" name="myForm" method="post"> <div id="bbsCreated"> <div class="bbsCreated_bottomLine"> <dl> <dt>제 목</dt> <dd> <input type="text" name="subject" size="74" maxlength="100" class="boxTF"/> </dd> </dl> </div> <div class="bbsCreated_bottomLine"> <dl> <dt>작성자</dt> <dd> <input type="text" name="name" size="35" maxlength="20" class="boxTF"/> </dd> </dl> </div> <div class="bbsCreated_bottomLine"> <dl> <dt>E-Mail</dt> <dd> <input type="text" name="email" size="35" maxlength="50" class="boxTF"/> </dd> </dl> </div> <div id="bbsCreated_content"> <dl> <dt>내 용</dt> <dd> <textarea rows="12" cols="63" name="content" class="boxTA"></textarea> </dd> </dl> </div> <div class="bbsCreated_noLine"> <dl> <dt>패스워드</dt> <dd> <input type="password" name="pwd" size="35" maxlength="7" class="boxTF"/> (게시물 수정 및 삭제시 필요) </dd> </dl> </div> </div>
<div id="bbsCreated_footer"> <input type="hidden" name="method" value="write_ok"/> <input type="button" value="등록하기" class="btn2" onclick="sendIt();" /> <input type="reset" value="다시입력" class="btn2" onclick="document.myForm.subject.focus();" /> <input type="button" value="작성취소" class="btn2" onclick="javascript:location.href='<%=cp %>/board.do?method=list';" /> </div>
</form> </div> </body> |
게시판 리스트 조회 기능 구현
1. BoardDAO(DB에 Access하는 클래스) method 생성
public class BoardDAO {
private Connection conn; public BoardDAO(Connection conn){ this.conn = conn; }
//게시글 카운팅 public int getMaxNum(){ int maxNum = 0; PreparedStatement pstmt = null; ResultSet rs = null; String sql ; try {
sql = "select nvl(max(num),0) from board"; pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); if(rs.next()){ maxNum = rs.getInt(1); } rs.close(); pstmt.close();
} catch (Exception e) { System.out.println(e.toString()); } return maxNum; }
//게시글 database 입력 public int insertData(BoardForm dto){
int result = 0; PreparedStatement pstmt = null; String sql; try { sql = "insert into board (num,name,pwd,email,subject,content,"; sql += "ipAddr,hitCount,created) values (?,?,?,?,?,?,?,0,sysdate)"; pstmt = conn.prepareStatement(sql); pstmt.setInt(1, dto.getNum()); pstmt.setString(2, dto.getName()); pstmt.setString(3, dto.getPwd()); pstmt.setString(4, dto.getEmail()); pstmt.setString(5, dto.getSubject()); pstmt.setString(6, dto.getContent()); pstmt.setString(7, dto.getIpAddr());
result = pstmt.executeUpdate(); pstmt.close();
} catch (Exception e) { System.out.println(e.toString()); } return result; }
//게시글 갯수 카운팅 public int getDataCount(String searchKey, String searchValue){
int result = 0; PreparedStatement pstmt = null; ResultSet rs = null; String sql;
try { searchValue = "%" + searchValue +"%" ; sql = "select nvl(count(*),0) from board "; sql += "where " + searchKey + " like ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, searchValue); rs = pstmt.executeQuery(); if(rs.next()) result = rs.getInt(1);
rs.close(); pstmt.close();
} catch (Exception e) { System.out.println(e.toString()); } return result; }
//리스트 출력 public List<BoardForm> getLists(int start, int end, String searchKey, String searchValue){
List<BoardForm> lists = new ArrayList<BoardForm>(); PreparedStatement pstmt = null; ResultSet rs = null; String sql;
try { searchValue = "%" + searchValue + "%";
sql = "select * from ("; sql += "select rownum rnum, data.* from ("; sql += "select num,name,subject,hitCount,"; sql += "to_char(created,'YYYY-MM-DD') created "; sql += "from board where " + searchKey + " like ? "; sql += "order by num desc) data) "; sql += "where rnum>=? and rnum<=? "; pstmt = conn.prepareStatement(sql); pstmt.setString(1, searchValue); pstmt.setInt(2, start); pstmt.setInt(3, end);
rs = pstmt.executeQuery();
while(rs.next()){ BoardForm dto = new BoardForm(); dto.setNum(rs.getInt("num")); dto.setName(rs.getString("name")); dto.setSubject(rs.getString("subject")); dto.setHitCount(rs.getInt("hitCount")); dto.setCreated(rs.getString("created")); lists.add(dto); } rs.close(); pstmt.close();
} catch (Exception e) { System.out.println(e.toString()); } return lists; } } |
2. BoardAction list 메소드 생성
//게시판 리스트 조회시 public ActionForward list(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { String cp = request.getContextPath(); MyUtil myUtil = new MyUtil(); int numPerPage = 10; int totalPage = 0; int totalDataCount = 0;
String pageNum = request.getParameter("pageNum"); int currentPage = 1; if(pageNum!=null) currentPage = Integer.parseInt(pageNum);
String searchKey = request.getParameter("searchKey"); String searchValue = request.getParameter("searchValue");
if(searchValue==null){ searchKey = "subject"; searchValue = ""; }
if(request.getMethod().equalsIgnoreCase("GET")) searchValue = URLDecoder.decode(searchValue,"UTF-8");
totalDataCount = dao.getDataCount(searchKey, searchValue);
if(totalDataCount!=0) totalPage = myUtil.getPageCount(numPerPage, totalDataCount);
if(currentPage>totalPage) currentPage = totalPage;
int start = (currentPage-1)*numPerPage+1; int end = currentPage*numPerPage;
List<BoardForm> lists = dao.getLists(start, end, searchKey, searchValue);
String param = ""; String urlArticle = ""; String urlList = "";
if(!searchValue.equals("")){ searchValue = URLEncoder.encode(searchValue,"UTF-8"); param = "&searchKey="+searchKey; param += "&searchValue=" + searchValue; }
urlList = cp + "/board.do?method=list" +param; urlArticle = cp +"/board.do?method=article&pageNum="+currentPage; urlArticle += param;
request.setAttribute("lists", lists); request.setAttribute("urlArticle", urlArticle); request.setAttribute("pageNum", pageNum); request.setAttribute("pageIndexList", myUtil.pageIndexList(currentPage, totalPage, urlList)); request.setAttribute("totalPage", totalPage); request.setAttribute("totalDataCount", totalDataCount);
return mapping.findForward("list"); } |
3. struts-config_board.xml (forward 경로 등록)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config> <form-beans> <form-bean name="boardForm" type="com.board.BoardForm"/> </form-beans> <action-mappings>
<!-- 별칭 설정 가능 --> <!-- http://localhost:8080/struts1/boardList.do 요청시 리스트페이지 조회 --> <action path="/boardList" forward="/board.do?method=list"/>
<!-- /board.do가 오면 BoardAction 클래스로 가라. --> <!-- *.do urlPattern을 config 파일에 등록해놓았음을 기억 --> <!-- parameter는 변수. 찾아가야하는 메소드명을 기재 --> <action path="/board" type="com.board.BoardAction" name="boardForm" scope="request" parameter="method">
<forward name="created" path="/board/created.jsp"/> <forward name="save" redirect="true" path="/board.do?method=list"/> <forward name="list" path="/board/list.jsp"/>
</action> </action-mappings> </struts-config> |
4. list.jsp - 게시판 리스트 조회 jsp 페이지(View)
<%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% request.setCharacterEncoding("UTF-8"); String cp = request.getContextPath(); %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>게 시 판</title> <link rel="stylesheet" href="<%=cp %>/board/css/style.css" type="text/css" /> <link rel="stylesheet" href="<%=cp %>/board/css/list.css" type="text/css" /> <script type="text/javascript"> function searchData() { var f= document.searchForm; f.action = "<%=cp%>/board.do?method=list"; f.submit(); } </script> </head> <body> <div id="bbsList"> <div id="bbsList_title"> 게 시 판(Struts1+JDBC) </div> <div id="bbsList_header"> <div id="leftHeader"> <form action="" name="searchForm" method="post"> <select name="searchKey" class="selectField"> <option value="subject">제목</option> <option value="name">작성자</option> <option value="content">내용</option> </select> <input type="text" name="searchValue" class="textField"/> <input type="button" value="검 색" class="btn2" onclick="searchData();"/> </form> </div> <div id="rightHeader"> <input type="button" value=" 글올리기 " class="btn2" onclick="javascript:location.href='<%=cp%>/board.do?method=write';"/> </div> </div>
<div id="bbsList_list"> <div id="title"> <dl> <dt class="num">번호</dt> <dt class="subject">제목</dt> <dt class="name">작성자</dt> <dt class="created">작성일</dt> <dt class="hitCount">조회수</dt> </dl> </div>
<div id="lists"> <c:forEach var="dto" items="${lists }"> <dl> <dd class="num">${dto.num }</dd> <dd class="subject"> <a href="${urlArticle }&num=${dto.num}"> ${dto.subject }</a></dd> <dd class="name">${dto.name }</dd> <dd class="created">${dto.created }</dd> <dd class="hitCount">${dto.hitCount }</dd> </dl> </c:forEach> </div>
<div id="footer"> <p> <c:if test="${totalDataCount!=0 }"> ${pageIndexList } </c:if> <c:if test="${totalDataCount==0 }"> 등록된 게시물이 없습니다. </c:if> </p> </div> </div> </div> </body> </html> |
게시글 조회 기능 구현
http://localhost:8080/struts1/board.do?method=list
클라이언트 브라우저의 요청주소의 board.do라는 주소와 method=list라는 파라미터를 함께 가져가서 config파일을 찾아가게 된다
/board.do가 오면 반드시 action으로 가게된다 (BoardAction클래스로 이동하라고 작성되어 있음 + BoardForm을 함께 가져감)
단일 게시글이 조회되는 페이지 구현 순서
1. DAO생성 (Model)
2. struts-config_board.xml(Controller 역할) 포워드되어 view가 될 페이지 정보를 등록
3. boardAction (Servlet 역할) 기능 구현
4. article.jsp(View)
1. BoardDAO updateHitCount(), getReadData() 추가
//조회수 증가 public int updateHitCount(int num){ int result = 0; PreparedStatement pstmt = null; String sql; try { sql = "update board set hitCount=hitCount+1 where num=? "; pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, num); result = pstmt.executeUpdate(); pstmt.close();
} catch (Exception e) { System.out.println(e.toString()); } return result; } //게시글 조회 public BoardForm getReadData(int num){ BoardForm dto = null; PreparedStatement pstmt = null; ResultSet rs = null; String sql;
try { sql = "select num,name,pwd,email,subject,content,ipAddr,hitCount,"; sql += "created from board where num=? "; pstmt = conn.prepareStatement(sql); pstmt.setInt(1, num); rs = pstmt.executeQuery();
if(rs.next()){ dto = new BoardForm();
dto.setNum(rs.getInt("num")); dto.setName(rs.getString("name")); dto.setPwd(rs.getString("pwd")); dto.setEmail(rs.getString("email")); dto.setSubject(rs.getString("subject")); dto.setContent(rs.getString("content")); dto.setIpAddr(rs.getString("ipAddr")); dto.setHitCount(rs.getInt("hitCount")); dto.setCreated(rs.getString("created")); } rs.close(); pstmt.close(); } catch (Exception e) { System.out.println(e.toString()); } return dto; } |
2. struts-config_board.xml(forward 경로 등록)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config> <form-beans> <form-bean name="boardForm" type="com.board.BoardForm"/> </form-beans> <action-mappings>
<action path="/boardList" forward="/board.do?method=list"/> <action path="/board" type="com.board.BoardAction" name="boardForm" scope="request" parameter="method">
<!-- 컨트롤러의 역할. 분배기 --> <forward name="created" path="/board/created.jsp"/> <!-- save일 경우 리다이렉트 진행 --> <forward name="save" redirect="true" path="/board.do?method=list"/> <forward name="list" path="/board/list.jsp"/> <forward name="article" path="/board/article.jsp"/>
</action> </action-mappings> </struts-config> |
3. BoardAction article method 생성
//하나의 게시글 조회시 public ActionForward article(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
리스트페이지에서 localhost:8080/struts1/board.do?method=article&pageNum=1&searchKey=subject&searchValue=1&num=19 넘겨오는 주소에서의 파라미터값을 받아주는 작업 필요 int num = Integer.parseInt(request.getParameter("num")); String pageNum = request.getParameter("pageNum"); String searchKey = request.getParameter("searchKey"); String searchValue = request.getParameter("searchValue");
if(searchValue!=null) searchValue = URLDecoder.decode(searchValue,"UTF-8");//파라미터값 받을때 디코딩
dao.updateHitCount(num); BoardForm dto = dao.getReadData(num);
if(dto==null) return mapping.findForward("list");
int lineSu = dto.getContent().split("\n").length;
dto.setContent(dto.getContent().replaceAll("\n","<br/>")); String param = "pageNum="+pageNum; if(searchValue!=null){ param += "&searchKey="+searchKey; param += "&searchValue="+URLEncoder.encode(searchValue,"UTF-8");//보낼때 다시 인코딩 }
request.setAttribute("dto", dto); request.setAttribute("params", param); request.setAttribute("lineSu", lineSu); request.setAttribute("pageNum", pageNum);
return mapping.findForward("article"); } |
4. article.jsp - 게시글 조회 jsp 페이지(View)
<%@ page contentType="text/html; charset=UTF-8"%> <% request.setCharacterEncoding("UTF-8"); String cp = request.getContextPath(); %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>게 시 판</title> <link rel="stylesheet" href="<%=cp %>/board/css/style.css" type="text/css" /> <link rel="stylesheet" href="<%=cp %>/board/css/article.css" type="text/css" /> </head> <body> <div id="bbs"> <div id="bbs_title"> 게 시 판(Struts1+JDBC) </div> <div id="bbsArticle"> <div id="bbsArticle_header"> ${dto.subject } </div> <div class="bbsArticle_bottomLine"> <dl> <dt>작성자</dt> <dd>${dto.name }</dd> <dt>줄수</dt> <dd>${linesu }</dd> </dl> </div> <div class="bbsArticle_bottomLine"> <dl> <dt>등록일</dt> <dd>${dto.created }</dd> <dt>조회수</dt> <dd>${dto.hitCount }</dd> </dl> </div> <div id="bbsArticle_content"> <table width="600" border="0"> <tr> <td style="padding: 20px 80px 20px 62px;" valign="top" height="200"> ${dto.content } </td> </tr> </table> </div> </div> <div class="bbsArticle_noLine" style="text-align: right;"> from ${dto.ipAddr } </div> <div id="bbsArticle_footer"> <div id="leftFooter"> <input type="button" value=" 수정 " class="btn2" onclick="javascript:location.href='<%=cp%>/board.do?method=updated&num=${dto.num}&${params }';" /> <input type="button" value=" 삭제 " class="btn2" onclick="javascript:location.href='<%=cp%>/board.do?method=deleted&num=${dto.num}&${params }';" /> </div> <div id="rightFooter"> <input type="button" value=" 리스트 " class="btn2" onclick="javascript:location.href='<%=cp%>/board.do?method=list&${params }';" /> </div> </div> </div> </body> </html> |
게시글 수정 기능 구현
1. struts-config_board.xml 포워드 경로 지정
<forward name="updated" path="/board/updated.jsp"/> |
2. BoardAction updated 메소드 추가(수정할 게시글을 읽어오는 기능)
//하나의 게시글을 수정하기 위한 입력페이지 public ActionForward updated(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { int num = Integer.parseInt(request.getParameter("num")); String pageNum = request.getParameter("pageNum"); String searchKey = request.getParameter("searchKey"); String searchValue = request.getParameter("searchValue");
BoardForm dto = dao.getReadData(num);
if(dto==null) return mapping.findForward("list");
dto.setContent(dto.getContent().replaceAll("\n","<br/>")); String param = ""; if(searchValue!=null){ param += "&searchKey="+searchKey; param += "&searchValue="+URLEncoder.encode(searchValue,"UTF-8");//보낼때 다시 인코딩 }
request.setAttribute("dto", dto); request.setAttribute("params", param); request.setAttribute("pageNum", pageNum);
return mapping.findForward("updated"); } |
3. updated.jsp (created.jsp 복사해서 생성)
<%@ page contentType="text/html; charset=UTF-8"%> <% request.setCharacterEncoding("UTF-8"); String cp = request.getContextPath(); %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>게 시 판</title> <link rel="stylesheet" href="<%=cp %>/board/css/style.css" type="text/css" /> <link rel="stylesheet" href="<%=cp %>/board/css/created.css" type="text/css" /> <script type="text/javascript" src="<%=cp %>/board/js/util.js"></script> <script type="text/javascript" > function sendIt(){ f = document.myForm;
str = f.subject.value; str = str.trim();//util.js에 있는 trim함수 호출 if(!str){ alert("\n제목을 입력하세요.");//공백제거후 내용이 없으면 f.subject.focus(); return; } f.subject.value = str;
str = f.name.value; str = str.trim(); if(!str){ alert("\n이름을 입력하세요."); f.name.focus(); return; } f.name.value = str;
if(f.email.value){ if(!isValidEmail(f.email.value)){ alert("\n정상적인 E-mail을 입력하세요"); f.email.focus(); return; } }
str = f.content.value; str = str.trim(); if(!str){ alert("\n내용을 입력하세요."); f.content.focus(); return; } f.content.value = str;
str = f.pwd.value; str = str.trim(); if(!str){ alert("\n패스워드를 입력하세요."); f.pwd.focus(); return; } f.pwd.value = str; f.action = "<%=cp %>/board.do?method=updated_ok&num=${dto.num}&pageNum=${pageNum}${params}"; f.submit(); } </script> </head> <body> <div id="bbs" > <div id="bbs_title"> 게 시 판(Struts1+JDBC) </div> <form action="" name="myForm" method="post"> <div id="bbsCreated"> <div class="bbsCreated_bottomLine"> <dl> <dt>제 목</dt> <dd> <input type="text" name="subject" value="${dto.subject}" size="74" maxlength="100" class="boxTF"/> </dd> </dl> </div> <div class="bbsCreated_bottomLine"> <dl> <dt>작성자</dt> <dd> <input type="text" name="name" value="${dto.name}" size="35" maxlength="20" class="boxTF"/> </dd> </dl> </div> <div class="bbsCreated_bottomLine"> <dl> <dt>E-Mail</dt> <dd> <input type="text" name="email" value="${dto.email}" size="35" maxlength="50" class="boxTF"/> </dd> </dl> </div> <div id="bbsCreated_content"> <dl> <dt>내 용</dt> <dd> <textarea rows="12" cols="63" name="content" class="boxTA">${dto.content}</textarea> </dd> </dl> </div> <div class="bbsCreated_noLine"> <dl> <dt>패스워드</dt> <dd> <input type="password" name="pwd" value="${dto.pwd}" size="35" maxlength="7" class="boxTF"/> (게시물 수정 및 삭제시 필요) </dd> </dl> </div> </div>
<div id="bbsCreated_footer"> <input type="button" value="수정하기" class="btn2" onclick="sendIt();" /> <input type="button" value="수정취소" class="btn2" onclick="javascript:location.href='<%=cp %>/board.do?method=list&pageNum=${pageNum}${params }';" /> </div>
</form> </div> </body> </html> |
4. BoardDAO updateData method 구현
//게시글 수정 public int updateData(BoardForm dto){
int result = 0; PreparedStatement pstmt = null; String sql; try { sql = "update board set name=?,pwd=?,email=?,subject=?,content=? "; sql += "where num=?";
pstmt = conn.prepareStatement(sql); pstmt.setString(1, dto.getName()); pstmt.setString(2, dto.getPwd()); pstmt.setString(3, dto.getEmail()); pstmt.setString(4, dto.getSubject()); pstmt.setString(5, dto.getContent()); pstmt.setInt(6, dto.getNum());
result = pstmt.executeUpdate(); pstmt.close();
} catch (Exception e) { System.out.println(e.toString()); } return result; } |
5. BoardAction updated_ok method 구현(수정 반영 기능 구현)
수정부분은 config로 가지않고 수정하는 목표를 이뤘으므로 리스트 페이지를 호출해주는거만 하면 됨
//하나의 게시글 수정시 public ActionForward updated_ok(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
int num = Integer.parseInt(request.getParameter("num")); String pageNum = request.getParameter("pageNum"); String searchKey = request.getParameter("searchKey"); String searchValue = request.getParameter("searchValue");
BoardForm f = (BoardForm)form; f.setNum(num); dao.updateData(f);
String param = ""; if(searchValue!=null){ param += "&searchKey="+searchKey; param += "&searchValue="+URLEncoder.encode(searchValue,"UTF-8");//보낼때 다시 인코딩 }
받는 페이지가 없으므로 setAttribute를 작성할 필요없음 //request.setAttribute("params", param); //request.setAttribute("pageNum", pageNum);
return mapping.findForward("updated_ok"); <forward name="updated_ok" redirect="true" path="/board.do?method=list"/> config에 작성하는 forward 경로와 ActionForward 객체는 동일한 개념
ActionForward af = new ActionForward(); af.setRedirect(true); af.setPath("/board.do?method=list&pageNum="+pageNum+param); return af; } |
삭제 기능 추가
1. BoardDAO deleteData method 생성
//게시글 삭제 public int deleteData(int num){ int result = 0; PreparedStatement pstmt = null; String sql; try { sql = "dlete board where num=? ";
pstmt = conn.prepareStatement(sql); pstmt.setInt(1, num); result = pstmt.executeUpdate(); pstmt.close(); } catch (Exception e) { System.out.println(e.toString()); } return result; } |
2. BoardAction deleted method 생성(실행 후 Redirect 진행)
//하나의 게시글 삭제시 public ActionForward deleted(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
int num = Integer.parseInt(request.getParameter("num")); String pageNum = request.getParameter("pageNum"); String searchKey = request.getParameter("searchKey"); String searchValue = request.getParameter("searchValue"); dao.deleteData(num);
String param = ""; if(searchValue!=null){ param += "&searchKey="+searchKey; param += "&searchValue="+URLEncoder.encode(searchValue,"UTF-8");//보낼때 다시 인코딩 }
ActionForward af = new ActionForward(); af.setRedirect(true); af.setPath("/board.do?method=list&pageNum="+pageNum+param); return af; } |
'Dev > Struts' 카테고리의 다른 글
Struts2 세팅 (0) | 2019.03.21 |
---|---|
Struts1/iBatis - 파일 업로드 기능 구현 (0) | 2019.03.21 |
Struts1/iBatis - 게시판 만들기 (2) | 2019.03.20 |
iBatis(2.0) 및 log4j 세팅 (0) | 2019.03.20 |
Struts1 세팅 및 기본 예제 & MVC 패턴 (0) | 2019.03.18 |