네번째 시간이다.
actionForm에서 에러없이 writeAction을 실행하게 된다면 writeAction클래스를 실행하게 될 것이다. writeAction클래스를 보도록 하자.
writeAction 클래스 소스 닫기
package guestbook.actions; import java.sql.Timestamp; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //import javax.servlet.http.HttpSession; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import guestbook.beans.GuestBookBean; import guestbook.beans.GuestBookManager; import guestbook.forms.writeForm; public class writeAction extends Action{ public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { GuestBookManager gbManager = GuestBookManager.getInstance(); writeForm writeform = (writeForm)form; GuestBookBean gbBean = new GuestBookBean(); gbBean.setId(writeform.getId()); gbBean.setRegister(new Timestamp(System.currentTimeMillis())); gbBean.setName(writeform.getName()); gbBean.setEmail(writeform.getEmail()); gbBean.setPassword(writeform.getPassword()); gbBean.setContent(writeform.getContent()); gbManager.insert(gbBean); ActionForward forward = null; forward = mapping.findForward("success"); return forward; } }
writeAction 클래스 소스 닫기
GuestBookManager클래스의 insert메소드 닫기
public void insert(GuestBookBean book) throws Exception { Connection conn; PreparedStatement pstmt = null; try{ Class.forName("com.mysql.jdbc.Driver"); }catch (ClassNotFoundException e){ System.out.println("jdbc에러"); } try { String url = "jdbc:mysql:mysql주소"; conn = DriverManager.getConnection(url, "dbid", "db비밀번호"); pstmt = conn.prepareStatement("insert into GUESTBOOK (REGISTER,NAME,EMAIL,PASSWORD,CONTENT) "+ "values (?,?,?,?,?)"); pstmt.setTimestamp(1, book.getRegister()); pstmt.setString(2, book.getName()); pstmt.setString(3, book.getEmail()); pstmt.setString(4, book.getPassword()); pstmt.setCharacterStream(5, new StringReader(book.getContent()), book.getContent().length()); pstmt.executeUpdate(); } catch(SQLException ex) { throw new Exception("insert", ex); } if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {} if (conn != null) try { conn.close(); } catch(SQLException ex) {} }
GuestBookManager클래스의 insert메소드 닫기
NewRequestProcessor클래스 소스 닫기
package guestbook.controller; import java.io.UnsupportedEncodingException; import org.apache.struts.action.RequestProcessor; import javax.servlet.http.*; /** * RequestProcessor를 상속받아 한글 인코딩 부분을 설정한다. */ public class NewRequestProcessor extends RequestProcessor { /** * 모든 Action이 실행되기 전에 request와 response에 실행되어야 할 사항들을 실행한다. */ protected boolean processPreprocess(HttpServletRequest request,HttpServletResponse response) { try { // HTTP 파라미터의 인코딩을 설정한다. request.setCharacterEncoding("euc-kr"); } catch (UnsupportedEncodingException e) { // do nothing; } return true; } }
NewRequestProcessor클래스 소스 닫기
이것을 써주기 위해서는 struts-config.xml에 이 줄을 추가해야한다. <controller processorClass="guestbook.controller.NewRequestProcessor"/> 이클래스로 인해 한글이 가능해질 것이다. 이렇게 하면 대충 글만 써지고 쓴 글 리스트로 보이는 방명록을 만들 수 있을 것이다. 아래는 지금 까지 만든 방명록 소스다.