본문 바로가기
웹 프로그래밍 기초/자바기반의 웹&앱 응용SW 개발자

자바기반의 웹&앱 응용 SW개발자 양성과정 52일차 -82

by oncerun 2020. 5. 14.
반응형

 

수정 페이지

 

 

수정 버튼 눌렀을 때 edit페이지 구현하기.

수정을 할 경우 가져가야 할 param은 페이지에 대한 id와 수정할 제목 , 내용이다.

폼을 edit컨트롤러에 연결해주고

name값이 title , content, id값을 getparameter로 컨트롤러에서 받는다.

 <form method="post" action="edit">
                 <div class="margin-top first">
            <h3 class="hidden">공지사항 수정</h3>
            <table class="table">
               <tbody>
                  <tr>
                     <th>제목</th>
                     <td class="text-align-left text-indent text-strong text-orange" colspan="3">
                        <input type="text" name="title"  value="${n.title}" />
                     </td>
                  </tr>
                  <tr>
                     <th>작성일</th>
                     <td class="text-align-left text-indent" colspan="3">${n.regdate}</td>
                  </tr>
                  <tr>
                     <th>작성자</th>
                     <td>${n.writerId}</td>
                     <th>조회수</th>
                     <td>${n.hit}</td>
                  </tr>
                  <!-- <tr>
                     <th>첨부파일</th>
                     <td colspan="3"><input type="file" name="file" /></td>
                  </tr> -->
                  <tr class="content">
                     <td colspan="4"><textarea class="content" name="content">
                     
                     </textarea></td>
                  </tr>
               </tbody>
            </table>
         </div>

         
         <div class="margin-top text-align-center">
            <input type="hidden" name="id" value="${n.id}" />
            <input type="hidden" name="writerId" value="newlec" />
            <input class="btn-text btn-default" type="submit" value="저장" />
            <a class="btn-text btn-cancel" href="../../notice/12">취소</a>            
         </div>
      </form>

 

컨트롤러에서는 비즈니스 로직을 처리한 뒤 비단으로 보낸다.

그리고 자신이 수정할 페이지를 확인할 수 있도록 해당 id의 detail페이지로 sendRedirect 해줍니다.

package com.newlecture.web.controller.admin.board.notice;

import java.io.IOException;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.tiles.TilesContainer;
import org.apache.tiles.access.TilesAccess;

import com.newlecture.web.entity.Notice;
import com.newlecture.web.service.NoticeService;


@WebServlet("/admin/board/notice/edit")
public class AdminEditController extends HttpServlet{
	
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		String title = request.getParameter("title");
		String content = request.getParameter("content");
		
		int id = 1;
		int result= 0;
		
		String id_ = request.getParameter("id");
		if(!id_.equals("") && id_ != null) {
		id = Integer.parseInt(id_);
		}else {
			System.out.println("널값이거나 공백 입니다.");
		}
		
		Notice notice = new Notice();
		
		notice.setContent(content);
		notice.setTitle(title);
		notice.setId(id);
		
		NoticeService service = new NoticeService();
		try {

			result = service.editNotice(notice); // model: ����� ������
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}


		response.sendRedirect("detail?id="+id);

	}
}

 

보내기 전 service함수에서는 변경된 값을 DB에 저장해야 합니다.

public int editNotice(Notice notice) throws ClassNotFoundException, SQLException {
		
		int result = 0;
		
		String url = "jdbc:mysql://dev.notepubs.com:9898/newlecture?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=UTC";
		String sql = "UPDATE Notice SET title=?, content=? WHERE id=?";
		
		Class.forName("com.mysql.cj.jdbc.Driver");
		Connection con = DriverManager.getConnection(url, "newlecture", "111");
		PreparedStatement st = con.prepareStatement(sql);
		st.setString(1, notice.getTitle());
		st.setString(2, notice.getContent());
		st.setInt(3, notice.getId());
		
		result =st.executeUpdate();
		
		st.close();
		con.close();
		return result;
		
	}

 

반응형

댓글