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>