struts와 iBATIS를 사용하기 위해 몇일 동안 씨름한 결과이다.
기본 동작만 확인 했으므로 보는 이에 따라 확장 가능할 것이다 ^^

iBATIS와 struts의 설치는 간단하기도 하거니와 이미 인터넷에 많은 자료가 있으니 그쪽을 참고하기 바란다.
여기에서는 iBATIS를 이용해 DB에서 객체로 가져와 struts에서 사용하는 것에 목적이 있다.
테스트를 위해 다음과 같은 순서로 user를 가져온다.

DB -> iBATIS -> struts -> 웹

당연히 이 순서는 개념만 있는 것이다.

DB에 연결을 하자.
/WEB-INF/classes에 sqlmap-config.xml 파일에 DB를 연결한다.

<sqlMapConfig>
  <properties resourse="config/database.properties" />
  <transactionManager type="JDBC">
    <dataSource type="DBCP">
      <property name="driverClassName" value="${driver}" />
      <property name="url" value="${url}" />
      <property name="username" value="${username}" />
      <property name="password" value="${password}" />
      <property name="maxActive" value="10" />
      <property name="initialSize" value="1" />
      <property name="removeAbandoned" value="true" />
      <property name="removeAnandonedTimeout" value="60" />
      <property name="logAnandoned" value="true" />
    </dataSource>
  </transactionManager>
  <sqlMap resource="sql/member.xml"></sqlMap>
</sqlMapConfig>

두번째 줄에서 볼 수 있듯이 실제 DB 설정 파일은 ./config/database.properties(WEB-INF/classes/config/database.properties) 라는 파일에 들어있다.
내용은 다음과 같다.

driver = org.postgresql.Driver
url=jdbc:postgresql://localhost/DB명
username=접속id
password=접속비밀번호

위와 같이 파일을 만들고 저장하면 추후에 sqlmap-config.xml 파일이 불려질때 같이 읽어진다.

struts 파일의 구성은 http://wiki.javajigi.net/pages/viewpage.action?pageId=82 이곳에서 받을 수 있다.
난 실제 구현시에 이보다 더 간단히 구현하여 객체 리스트를 view에서 받아 오는지를 테스트 했었다.
스트럿츠 프레임워크 워크북 1장 1강 - 사용자 관리 프로젝트 (프레임워크)
스트럿츠 프레임워크 워크북 1장 2강 - 사용자 관리 프로젝트 (프레임워크)
스트럿츠 프레임워크 워크북 1장 3강 - 사용자 관리 프로젝트 (프레임워크)
스트럿츠 프레임워크 워크북 1장 4강 - 사용자 관리 프로젝트 (프레임워크)
스트럿츠 프레임워크 워크북 1장 5강 - 사용자 관리 프로젝트 (프레임워크)
모두 도움이 되는 부분으로 읽어보기를 추천한다.

계속해서 iBATIS 설정 부분이다.
sqlmap-config.xml 파일의 끝자락에 보면 member.xml을 볼 수 있다.
이 파일에 sql문을 저장하고 이를 실행하는 것이다.
아래의 파일은 ./sql/member.xml(/WEB-INF/classes/sql/member.xml) 이다.

<sqlMap>
  <resultMap id="resultMemberList" class="com.test.user.User"
    <result column="name" property="name" nullValue="" />
    <result column="password" property="password" nullValue="" />
  </resultMap>
  <select id="getMemberList" resultMap="resultMemberList">
    select * from test
  </select>
</sqlMap>

이곳에서 주목할 곳이 resultMap의 class 부분이다.
이 부분이 내가 생성한 User라는 클래스를 연결하는 부분이다.
이렇게 설정하면 view에서 user객체의 list를 얻을 수 있다.

view에서는 이렇게 불러온다.
단순한 테스트 용도이기 때문에 jsp에 그냥 이렇게 넣었지만 실제 제품으로 구성하기 위해서는 따로 처리를 해야 할 것이다.

List userList = (List)request.getAttribute("userList");
Iterator userIter = userList.iterator();
while(userIter.hasNext())
{
  User user = (User)userIter.next();
  out.print("name : "+user.getName()+"|");
  out.print("password : "+user.getPassword()+"<br>");
}

iBATIS 부분도 어디에서 보고 공부를 하긴 했는데, 어디에서 본 내용인지 잊어버렸다 -_-
먼저 아래와 같은 패키지가 필요하다.
 
import="java.util.*"
import="java.text.*"
 
 
그리고 아래와 같이 코딩한다.
 
Calendar cal = Calendar.getInstance();
Date currentTime = cal.getTime();
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
String ndate = formatter.format(currentTime);
(이 코드는 http://kiwibug.tistory.com/2 에서 가져옴)
 
이렇게 하면..
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
위의 코드가 있는 곳에서 The type Date is ambiguous 이런 메세지를 출력하고 에러가 발생한다.
SimpleDateFormat의 파라미터를 저렇게 주면 안되나~ 하고 생각하였었다.
구글링하고 엠파스 찾은 다음에 마지막으로 네이버를 찾았을 때, 그 믿지 않았떤 지식검색에서 이유를 알 수 있었다 -_-
아래는 해당 글의 링크이다.
 
진작에 에러 메세지 그대로 뜻을 받아드릴 껄...-_-
Date currentTime = cal.getTime(); 를
java.util.Date currentTime = cal.getTime(); 로 수정하면 해결

I can't  write in korean right now -_-;

1. download jdbc driver from here.
2. Simply you should put the driver in $CATALINA_HOME/webapps/ROOT/WEB-INF/lib.
3. restart your tomcat.

I'll show you simple jsp code.

<%@
page language="java"
contentType="text/html;charset=EUC-KR"
import="java.sql.*"
%>
<%

try{
 String url = "jdbc:postgresql://localhost/databasename";
 String usr = "userid";
 String pwd = "passwd";

 Class.forName("org.postgresql.Driver");
 Connection conn = DriverManager.getConnection(url, usr, pwd);
 Statement stmt = conn.createStatement();
 ResultSet rs = stmt.executeQuery("query made by you");

 while(rs.next())
 {
  out.println(rs.getRow());
  out.println("<br>");
  out.println(rs.getString("uid"));
 }

 rs.close();
 stmt.close();
 conn.close();
} catch (Exception e) {
 out.println(e);
}

%>

  1. 나라나 2016.09.09 14:20 신고

    ●최고의 환수율업체 105% 국내최대 3듀얼모드 무수한 이벤과 다양한 불거리제공
    ●A],체험머니무제한/쿠/폰3만/
    ●국내최초 통기계식 게임
    ●10년간 작은사고 한번없이 운영된 곳만 선정하여 홍보합니다
    ●개인 전용계좌 서비스로 시스템보안으로 안전 쵝오
    ●오늘부터 편안하게! 안전하게 마음껏 베팅하세요

    ●바로가기: http://lovelove.kr11.kr


    ◈우리계열 쵀대(구)베가스?33카-지노
    ◈첫충10% /평일5%,주말충7% 저녁한번더 지급!
    ◈신뢰도 최고!자금력 최고!전용~계좌~
    ◈전용도메인~365일 완벽한시스템보안!

    ◈33 CA*SI*NO? http://iww666.45m.kr


    ◆타임*카-지노/우리계열 10년 연속 네트즌1위 온라인?
    ◆5만원 올인이벤트 5만원충전후 올인시 추가5만원지급이벤트

    ◆타임CASINO접속 http://jee777.45m.kr


    완벽한-시스템,신분-노출 걱정-없이~
    믿을수-있는~카-지노에서 ~마음껏 배*팅하세요~
    각종 이벤트로 유저들을 현혹시키는 영세한 사설사이트가 아닙니다.
    자질구레한 조작으로 수익을 챙기는 사설사이트가 아닙니다.
    처음엔 출금을 잘 해주다가 어느 순간 먹튀 하는 사설사이트가 아닙니다.
    이 수많은 거짓으로 포장한 영세 사설 카지노사이트들을 선택하시겠습니까???

  2. 나라나 2016.09.19 17:25 신고

    ●최고의 환수율업체 105% 국내최대 3듀얼모드 무수한 이벤과 다양한 불거리제공
    ●A],체험머니무제한/쿠/폰3만/
    ●국내최초 통기계식 게임
    ●10년간 작은사고 한번없이 운영된 곳만 선정하여 홍보합니다
    ●개인 전용계좌 서비스로 시스템보안으로 안전 쵝오
    ●오늘부터 편안하게! 안전하게 마음껏 베팅하세요

    ●바로가기: http://lovelove.kr11.kr


    ◈우리계열 쵀대(구)베가스?33카-지노
    ◈첫충10% /평일5%,주말충7% 저녁한번더 지급!
    ◈신뢰도 최고!자금력 최고!전용~계좌~
    ◈전용도메인~365일 완벽한시스템보안!

    ◈33 CA*SI*NO? http://iww666.45m.kr


    ◆타임*카-지노/우리계열 10년 연속 네트즌1위 온라인?
    ◆5만원 올인이벤트 5만원충전후 올인시 추가5만원지급이벤트

    ◆타임CASINO접속 http://jee777.45m.kr


    완벽한-시스템,신분-노출 걱정-없이~
    믿을수-있는~카-지노에서 ~마음껏 배*팅하세요~
    각종 이벤트로 유저들을 현혹시키는 영세한 사설사이트가 아닙니다.
    자질구레한 조작으로 수익을 챙기는 사설사이트가 아닙니다.
    처음엔 출금을 잘 해주다가 어느 순간 먹튀 하는 사설사이트가 아닙니다.
    이 수많은 거짓으로 포장한 영세 사설 카지노사이트들을 선택하시겠습니까???

JSP

resultset.next()를 하게되면
다음 tuple이 있다면 true를 없으면 false를 리턴한다.

따라서 쿼리를 날려서 resultset을 가져 오고..
그 값이 있으면 이런 정보를, 없으면 다른 정보를 보여주고 싶다면,
resultset.next()가 true인지 false인지 참고하여 코딩가능하다.

asp

Request.ServerVariables("SCRIPT_NAME")

이렇게 사용하면 됨

+ Recent posts