본문 바로가기

카테고리 없음

Emp DTO

EMP 테이블에서 검색된 여러개의 레코드를 Emp 객체와 Vector<Emp> 를 이용하여 뷰에 출력하는 예

empSearchForm.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> 부서번호로 사원검색 </TITLE>
 </HEAD>

 <BODY>

  <form action="/struts2/test/search.action" method="post">
  DEPTNO: <input type="text" name="deptno"><br>
  <input type="submit" value="SUBMIT">
  </form>

  <p>
  링크를 이용해서도 검색을 해 본다<br>
 <a href="/struts2/test/search.action?deptno=30">부서번호 30</a>

</BODY>
</HTML>


struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />

<package name="struts2test" namespace="/test" extends="struts-default">

 <action name="emp" class="struts2test.EmpAction">
  <result>/pages/empView.jsp</result>
 </action>

 <action name="search" class="struts2test.EmpSearch">
  <result>/pages/empListView.jsp</result>
 </action>

</package>

<!-- Add packages here -->
<include file="example.xml"/>
</struts>


EmpSearch.java

package struts2test;
import com.opensymphony.xwork2.ActionSupport;

import java.util.*;

public  class EmpSearch  extends ActionSupport {

 private int deptno;
 private Vector<Emp> vec;

 public String execute() throws Exception {
    EmpModel empModel = new EmpModel();
    vec = empModel.getEmpByDeptno(deptno);
    if(vec!=null) return SUCCESS;
    else return ERROR;
 }

 public Vector<Emp>  getVec(){
  return vec;
 }

 public void setDeptno(int deptno){
  this.deptno = deptno;
 }
}

Emp.java

package struts2test;

public class  Emp {

 private int empno;
 private String ename;
 private java.sql.Date hiredate;

 public Emp(){}

 public Emp(int empno, String ename, java.sql.Date hiredate){
  this.empno = empno;
  this.ename = ename;
  this.hiredate = hiredate;
 }

 public int getEmpno(){
  return empno;
 }

 public String getEname(){
  return ename;
 }

 public java.sql.Date getHiredate(){
  return hiredate;
 }

 public void setEmpno(int empno){
  this.empno = empno;
 }

 public void setEname(String ename){
  this.ename = ename;
 }

 public void setHiredate(java.sql.Date hiredate){
  this.hiredate = hiredate;
 }
}


EmpModel.java

package struts2test;
import java.util.*;
import java.sql.*;

public class EmpModel {

 private String jdbc_driver = "oracle.jdbc.OracleDriver";
 private String db_url = "jdbc:oracle:thin:@localhost:1521:ORCL";

 //여러개의 레코드가 검색되어 리턴되는 경우
 public Vector<Emp> getEmpByDeptno(int deptno){
  Connection conn = null;
  PreparedStatement pstmt = null;
  ResultSet rs = null;
  Vector<Emp> outv = null;
  Emp emp = null;
   
   try{
  Class.forName(jdbc_driver);
  conn = DriverManager.getConnection(db_url,"scott","tiger");
  String sql = "select empno, ename, job, hiredate, sal from employee where deptno=?";
  pstmt = conn.prepareStatement(sql);
  pstmt.setInt(1, deptno);
  rs = pstmt.executeQuery();
  outv = new Vector<Emp>();

  while(rs.next()) {
  emp = new Emp();
  emp.setEmpno(rs.getInt("EMPNO"));
  emp.setEname(rs.getString("ENAME"));
  emp.setHiredate(rs.getDate("HIREDATE"));
  outv.add(emp);
  }
  return outv;
    }
   catch(Exception e) {
    e.printStackTrace();
   }finally{
    try{
   if(rs!=null) rs.close();
   if(pstmt!=null) pstmt.close();
   if(conn!=null) conn.close();
    }catch(Exception e2){}
   }
   return null;   
  }
}


empListView.jsp

<%@page contentType="text/html;charset=KSC5601"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Struts 2 Test Application!</title>
</head>
<body>

<s:iterator value="vec">
   <s:property value="empno" />
   <s:property value="ename" />
   <s:property value="hiredate" /><br>
</s:iterator>

</body>
</html>