..열심히 공부하세../MVC

[14] Struts1 기반 게시판 쓰기 - ①

댄스댄스 2012. 7. 4. 10:37

 

- 스트럿츠 다운
   http://struts.apache.org/downloads.html
   Struts 1.3.10 -> struts-1.3.10-all.zip 다운 및 압축풀기

 

- 이클립스에서 struts1 라이브러리 추가 순서
   프로젝트 미리 생성하지 말고 war파일 설치함과 동시에 프로젝트 생성할 것
   (.war 대부분 샘플용으로 압축해서 배포됨)
   New -> import -> Web -> WAR ->
   D:\해당경로\struts-1.3.10-all\struts-1.3.10\apps\struts-blank-1.3.10.war

   프로젝트명 : struts1Board

-----------------------------------------------[테이블생성]
create table board2(
     idx int primary key,
     name varchar(10),
     email varchar(50),
     homepage varchar(50),
     title varchar(50),
     content varchar(2000),
     pwd varchar(10),
     wdate date,
     hit int
);
create sequence board2_idx_seq;

------------------------------------------------[결과확인]
http://localhost:9090/struts1Board/Write.do

------------------------------------------------BoardForm.java
package board.form;

import org.apache.struts.action.ActionForm;

public class BoardForm extends ActionForm {
    int idx;
    String name;
    String email;
    String homepage;
    String title;
    String content;
    String pwd;
    String wdate;
    int hit;

    getter와 setter 생성   

}

-----------------------------------------------BoardUtilForm.java
package board.form;

public class BoardUtilForm {
    private int rcnt;
    private int limit;
    private int pagelink;

    getter와 setter생성

}

-----------------------------------------------BoardDTO.java
package board.dto;

import java.io.Serializable;

public class BoardDTO implements Serializable {
    int idx;
    String name;
    String email;
    String homepage;
    String title;
    String content;
    String pwd;
    String wdate;
    int hit;
  
    기본생성자
    인자 있는 생성자
    getter와 setter생성  
   
}

-----------------------------------------------BoardDAO.java
package board.dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import board.dto.BoardDTO;
import board.form.BoardForm;

public class BoardDAO {
    public BoardDAO() { }
   
    public int boardCount(Connection conn) throws SQLException{
        int rcnt=0;
       
        Statement stat=null;
        ResultSet rs=null;
        String sql=null;
        try{
            stat=conn.createStatement();
            sql=" SELECT count(*) from board2 ";
            rs=stat.executeQuery(sql);
            if(rs.next()){
                rcnt=rs.getInt(1);
            }
        }catch(Exception e){
            System.out.print(e+"보드카운트");
        }finally{
            rs.close();
            stat.close();
        }
        return rcnt;
    }
   
}

-----------------------------------------------/WEB-INF/web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
  <!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
  <display-name>Struts Blank Application</display-name>
 
  <!-- Standard Action Servlet Configuration -->
  <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</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
 </servlet>


  <!-- Standard Action Servlet Mapping -->
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>


  <!-- The Usual Welcome File List -->
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

</web-app>

-------------------------------------------/WEB-INF/struts-config.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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="board.form.BoardForm"/>
    </form-beans>

    <action-mappings>
            <!-- Default "Welcome" action -->
            <!-- Forwards to Welcome.jsp -->
        <action
            path="/Welcome"
            forward="/pages/Welcome.jsp"/>

        <action
            path="/Write"
            forward="/write.jsp"/>

</struts-config>

-------------------------------------------write.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>

<html:html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>게시판글쓰기</title>
  <script type="text/javascript">
  <!--
   function trans(f){
        f.submit();
   }
  //-->
  </script>
</head>
<body>
<br/>* 글쓰기 * <br/>

<html:form method="post" action="WriteOk.do" focus="name">
<table border=1>
<tr>
  <td>이름</td>
  <td><html:text property="name" size="30"></html:text></td>
</tr>
<tr>
  <td>이메일</td>
  <td><html:text property="email" size="30"></html:text></td>
</tr>
<tr>
  <td>홈페이지</td>
  <td><html:text property="homepage" size="30"></html:text></td>
</tr>
<tr>
  <td>제목</td>
  <td><html:text property="title" size="50"></html:text></td>
</tr>
<tr>
  <td>본문</td>
  <td><html:textarea property="content" rows="10" cols="50"></html:textarea></td>
</tr>
<tr>
  <td>암호</td>
  <td><html:password property="pwd" size="10"></html:password></td>
</tr>
<tr>
  <td colspan=2>
    <html:button property="btn" onclick="trans(this.form)">글올리기</html:button>
    <html:reset>다시쓰기</html:reset>
  </td>
</tr>

</table>
</html:form>

<br/>

<a href="./List.do">리스트</a>

</body>
</html:html>

-------------------------------------------/WEB-INF/struts-config.xml
        <action
            path="/WriteOk"
            type="board.action.WriteAction"
            name="boardForm"
            scope="request"
            validate="false"
            input="/write.jsp">
            <forward name="ok" redirect="true" path="/List.do"/>
        </action>

-------------------------------------------WriteAction.java
package board.action;

import java.rmi.ServerException;
import java.sql.Connection;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;

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 board.dao.BoardDAO;
import board.form.BoardForm;

public class WriteAction extends Action{
    public ActionForward execute(
            ActionMapping mapping,
            ActionForm    form,
            HttpServletRequest request,
            HttpServletResponse response) throws Exception{
       
        BoardDAO boardDao=new BoardDAO();
        BoardForm boardForm=(BoardForm) form;
        Connection conn=getConnection();
        try{
            boardDao.boardInsert(boardForm,conn);
        }catch(Exception e){
            throw new ServletException(e);
        }finally{
            if(conn!=null) try { conn.close(); } catch(SQLException e){}
        }
        return mapping.findForward("ok");
    }

    private Connection getConnection() throws Exception{
        Context initCtx=new InitialContext();
        DataSource ds  =(DataSource)initCtx.lookup("java:comp/env/jdbc/oracle");
        return ds.getConnection();
    }
   
}

-------------------------------------------BoardDAO.java 추가
    public void boardInsert(BoardForm boardform,Connection conn) throws SQLException{
        Statement stat=conn.createStatement();
        String sql="";
       
        String name=boardform.getName();
        String email=boardform.getEmail();
        String homepage=boardform.getHomepage();
        String title=boardform.getTitle();
        String content=boardform.getContent();
        String pwd=boardform.getPwd();
        try{
            sql=" INSERT INTO board2 ";
            sql+=" VALUES(board2_idx_seq.nextval";
            sql+=" ,'"+name+"'";
            sql+=" ,'"+email+"'";
            sql+=" ,'"+homepage+"'";
            sql+=" ,'"+title+"'";
            sql+=" ,'"+content+"'";
            sql+=" ,'"+pwd+"'";
            sql+=",sysdate,0)";
           
            sql=new String(sql.getBytes("8859_1"),"euc-kr");
            stat.executeUpdate(sql);
            //System.out.println(sql);
        }catch(Exception e){
            System.out.print(e);
        }finally{
            stat.close();
        }
    }