[14] Struts1 기반 게시판 쓰기 - ①
- 스트럿츠 다운
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();
}
}