• 설치
    # yum install postgresql84 postgresql84-devel postgresql84-libs postgresql84-contrib postgresql84-server
    
  • DB 초기화
    # service postgresql initdb
    
    /var/lib/pgsql/data 에 초기화된 파일들이 생성된다.
  • 설정파일 위치 : /var/lib/pgsql/data
  • 시스템 부팅시 자동으로 실행되게 하려면, ntsysv 에서 postgresql 을 체크해주어야 한다.
  • 사용자, DB 생성
    # su - postgres
    # psql
    postgres=# CREATE USER 아이디 WITH PASSWORD '비밀번호';
    postgres=# CREATE DATABASE 디비이름 WITH ENCODING='utf-8' OWNER 아이디;
    
  • 계정으로 로그인할 수 있도록 연결설정
    # su -
    # cd /var/lib/pgsql/data/
    # vi pg_hba.conf
    모두 주석으로 막고 아래만 남김
    host    all         all         0.0.0.0           0.0.0.0           password
    local   all         postgres                                        trust
    local   all         all                                             password
    
    # vi postgresql.conf
    listen_addresses = '*'
    
    # /etc/init.d/postgresql restart
    # psql -d 디비이름 -U 아이디 -W
    

WindowsXP 환경에서 설치하는 것으로 하였고, JDK는 1.6이 설치되어 있다고 가정합니다.
먼저 각 프로그램, 라이브러리들을 해당 사이트에서 다운로드 합니다.

  • Tomcat 6 : http://tomcat.apache.org/download-60.cgi 에서 Windows Service Installer 를 다운로드 합니다.
  • Struts 2 : http://struts.apache.org/download.cgi에서 2.0.14 버전을 다운로드 합니다.
  • iBATIS 2 : http://ibatis.apache.org/java.cgi에서 2.3.4 버전을 다운로드 합니다.
  • PostgreSQL 8.3 : http://www.postgresql.org/download/windows에서 One click installer를 다운로드 합니다.
  • PostgreSQL 8.3을 위한 JDBC 드라이버 : http://jdbc.postgresql.org/download.html에서 postgresql-8.3-605.jdbc3.jar를 다운로드 한다.

이제, Tocmat 6 와 PostgreSQL 8.3 을 설치한다. 어렵지 않게 설치가 될 것이다. Tomcat 6의 설치위치는 C:\Program Files\Apache Software Foundation\Tomcat 6.0 이며, PostgreSQL 8.3 의 설치위치는 C:\Program Files\PostgreSQL\8.3 가 될 것이다.

웹어플리케이션을 위한 디렉토리(C:\Workspace\Project)를 생성한다.
Project 디렉토리 밑에는 src, WebContent 디렉토리도 생성한다.
당연히도, WebContent 디렉토리 밑에는 WEB-INF 디렉토리도 생성한다.
최종 디렉토리,파일의 전체 모습은 다음과 같다.

C:\Workspace\Project
                    \src
                        struts.xml
                        SqlMapConfig.xml
                        SqlMap_Admin.xml
                        \com
                             \test
                                  \action
                                         ListAdmin.java
                                  \dao
                                      AdminDao.java
                                  \model
                                        Admin.java
                                  \util
                                       SqlMapLocator.java
                    \WebContent
                               helloWorld.jsp
                               \admin
                                     listAdmin.jsp
                               \WEB-INF
                                       web.xml
                                       \lib
                                           commons-logging-1.0.4.jar
                                           freemarker-2.3.8.jar
                                           ibatis-2.3.4.726.jar
                                           ognl-2.6.11.jar
                                           struts2-core-2.0.14.jar
                                           xwork-2.0.7.jar
                                       \classes
                                               struts.xml
                                               SqlMapConfig.xml
                                               SqlMap_Admin.xml
                                               \com
                                                   \test
                                                        \action
                                                               ListAdmin.class
                                                        \dao
                                                            AdminDao.class
                                                        \model
                                                              Admin.class
                                                        \util
                                                            SqlMapLocator.class

이제 다운로드한 iBATIS 와 Struts2 파일을 압축풀고, 필요한 파일을 C:\Workspace\Project\WebContent\WEB-INF\lib 에 복사한다. iBATIS 에서는 ibatis-2.3.4.726.jar 만 복사하면 되고, Struts2 에서는 commons-logging-1.0.4.jar, freemarker-2.3.8.jar, ognl-2.6.11.jar, struts2-core-2.0.14.jar, xwork-2.0.7.jar 을 복사한다. 그리고, PostgreSQL JDBC 드라이버는 C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib 에 복사해둔다. 이로써 필요한 프로그램 설치는 완료되었다.

원활한 테스트를 위해서 도메인 설정을 하자. C:\WINDOWS\system32\drivers\etc\hosts 파일을 열어서 아래 내용을 추가한다. 앞으로 test.com 을 웹브라우저에 입력하며 테스트할 것이다.

127.0.0.1       test.com

Tomcat 6 의 server.xml 을 설정해보자. 이 파일은 C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf 에 존재한다. 우선 67째 라인에 아래 내용을 찾아서 port를 8080에서 80으로 변경한다.

...
    <Connector port="80" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />
...

그리고, 맨 밑부분에 닫힌 Host 태그를 찾아서 그 밑에 아래와 같이 버추얼호스팅 설정을 입력한다.

...
      <!-- test.com -->
      <Host name="test.com" debug="0" appBase="" unpackWARs="true" autoDeploy="true">
        <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="test.com_" suffix=".log" timestamp="true"/>
        <Context path="" docBase="C:\Wrokspace\Project\WebContent" debug="0">
          <Resources className="org.apache.naming.resources.FileDirContext" allowLinking="true" />
          <Resource name="jdbc/TestDB"
                    auth="Container"
                    type="javax.sql.DataSource"
                    driverClassName="org.postgresql.Driver"
                    loginTimeout="10"
                    maxWait="5000"
                    username="아이디"
                    password="비밀번호"
                    testOnBorrow="true"
                    url="jdbc:postgresql://127.0.0.1/디비이름" />
        </Context>
      </Host>
...

위의 내용중 아이디, 비밀번호, 디비이름은 PostgreSQL 에서 사용할 적당한 것으로 정하면 된다. 아직은 DB 생성도, 사용자 생성도 하지 않았으니 상관은 없다. 이제 C:\Wrokspace\Project\WebContent에 hellowWorld.jsp 를 작성해서 웹페이지가 잘 열리는지 확인해 볼 차례이다.

<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Hello, World</title>
</head>
<body>
<h1>잘 보이십니까?</h1>
</body>
</html>

Tomcat6를 실행한후, 웹브라우저에서 http://test.com/ 을 입력해서 내용이 잘 보이면 성공!
이제, DB 생성, 사용자 생성, 테이블 생성을 해보겠습니다.
첫번째로 DB/사용자 생성을 합니다. 시작 → 프로그램 → PostgreSQL 8.3 → SQL Shell (psql) 메뉴를 선택하고 아래와 같이 입력합니다.

Server [localhost]:
Database [postgres]:
Port [5432]:
Username [postgres]:
postgres 사용자의 비밀번호: <설치시에 입력했던 비밀번호>
이것은 PostgreSQL의 대화식 터미널 psql 입니다. 버전: psql 8.3.8

사용법:  \copyright 저작권 정보
         \h SQL 명령어 도움말
         \? 내장 명령어 도움말
         \g 또는 명령 끝에 ; 쿼리 실행
         \q 마침

postgres=# create user garachi with password 'Rnadmsdlfndjwlsek';
CREATE ROLE
postgres=# create database garachidb with encoding='utf-8' owner garachi;
WARNING:  could not determine encoding for locale "Korean_Korea.949": codeset is
 "CP949"
상세정보:  Please report this to <pgsql-bugs@postgresql.org>.
CREATE DATABASE
postgres=# \q

아이디/비밀번호를 통해서 로그인할 수 있도록 하려면 별도로 설정을해야 합니다. C:\Program Files\PostgreSQL\8.3\data 디렉토리의 pg_hba.conf 파일을 열어서 아래와 같이 설정하고, PostgreSQL을 재시작 합니다.

host    all         all         0.0.0.0           0.0.0.0           password
local   all         postgres                                        trust
local   all         all                                             password

다시 SQL Shell (psql)을 실행하여 아래와 같이 입력하여 테스트용 테이블을 생성한다.

Server [localhost]:
Database [postgres]: <디비이름>
Port [5432]:
Username [postgres]: <아이디>
아이디 사용자의 비밀번호: <비밀번호>
이것은 PostgreSQL의 대화식 터미널 psql 입니다. 버전: psql 8.3.8

사용법:  \copyright 저작권 정보
         \h SQL 명령어 도움말
         \? 내장 명령어 도움말
         \g 또는 명령 끝에 ; 쿼리 실행
         \q 마침

garachidb=> 
CREATE TABLE tb_admin
(
  id serial NOT NULL,
  "login" character varying(20) NOT NULL,
  passwd character varying(20) NOT NULL,
  "name" character varying(20) NOT NULL,
  register_date date NOT NULL,
  login_datetime timestamp without time zone,
  status_code character varying(4),
  email character varying(40),
  mobile_phone character varying(20),
  CONSTRAINT tb_admin_pkey PRIMARY KEY (id),
  CONSTRAINT tb_admin_login_key UNIQUE (login)
)
WITH (
  OIDS=FALSE
);

insert into tb_admin(login, passwd, name, register_date, status_code, email, mobile_phone)
values('yahoo', 'yahoo123', 'YAHOO...', '2009-11-11', '0000', 'yahoo@yahoo.com', '010-1111-2222');

insert into tb_admin(login, passwd, name, register_date, status_code, email, mobile_phone)
values('google', 'google123', 'GOOGLE...', '2009-11-11', '0000', 'google@gmail.com', '010-3333-4444');

해당 웹어플리케이션에서 스트럿츠를 사용할 수 있도록 web.xml 을 아래와 같이 작성한다.

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>TEST</display-name>
 
  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>
      org.apache.struts2.dispatcher.FilterDispatcher
    </filter-class>
  </filter>
 
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
 
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

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>
  <package name="Test" extends="struts-default" namespace="/admin">
    <action name="ListAdmin" class="com.test.action.ListAdmin">
      <result name="success">/admin/listAdmin.jsp</result>
    </action>
  </package>
</struts>

이것은 웹브라우저에서 http://test.com/admin/ListAdmin.action 를 입력하면 /admin/listAdmin.jsp 를 보여주겠다는 의미를 가지고 있다.
Admin.java 를 아래와 같이 작성한다. 위에서 생성한 tb_admin 테이블에 대한 모델 클래스이다.

package com.test.model;
 
import java.util.Date;
 
public class Admin {
 private int  id;
 private String  login;
 private String  passwd;
 private String  name;
 private Date  register_date;
 private Date  login_datetime;
 private String  status_code;
 private String  email;
 private String  mobile_phone;
 
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 public String getLogin() {
  return login;
 }
 public void setLogin(String login) {
  this.login = login;
 }
 public String getPasswd() {
  return passwd;
 }
 public void setPasswd(String passwd) {
  this.passwd = passwd;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public Date getRegister_date() {
  return register_date;
 }
 public void setRegister_date(Date registerDate) {
  register_date = registerDate;
 }
 public Date getLogin_datetime() {
  return login_datetime;
 }
 public void setLogin_datetime(Date loginDatetime) {
  login_datetime = loginDatetime;
 }
 public String getStatus_code() {
  return status_code;
 }
 public void setStatus_code(String statusCode) {
  status_code = statusCode;
 }
 public String getEmail() {
  return email;
 }
 public void setEmail(String email) {
  this.email = email;
 }
 public String getMobile_phone() {
  return mobile_phone;
 }
 public void setMobile_phone(String mobilePhone) {
  mobile_phone = mobilePhone;
 }
}

iBATIS는 라이브러리파일과, SqlMapConfig.xml, SqlMap.xml 로 구성이 되며, 라이브러리 파일은 위에서 lib 에 복사를 해두었다. 여기에서는 SqlMapConfig.xml 파일을 읽어서 SQL Map 을 얻어오는 클래스를 작성하게 된다.

SqlMapLocator.java 를 아래와 같이 작성한다.

package com.test.util;
 
import java.io.IOException;
import java.io.Reader;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
 
public class SqlMapLocator {
 public static SqlMapClient getMapper() {
  SqlMapClient sqlMapper;
  try {
   Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
   sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
   reader.close();
  }catch(IOException e) {
   // Fail fast.
   throw new RuntimeException("Something bad happend while building the SqlMapClient instance." + e, e);
  }
 
  return sqlMapper;
 }
}

SqlMapConfig.xml 을 아래와 같이 작성한다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig
 PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
 "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
 
<sqlMapConfig>
  <transactionManager type="JDBC" commitRequired="false">
    <dataSource type="JNDI">
      <property name="DataSource" value="java:/comp/env/jdbc/TestDB"/>
    </dataSource>
  </transactionManager>
  <sqlMap resource="SqlMap_Admin.xml" />
</sqlMapConfig>

그리고, SqlMap_Admin.xml 을 아래와 같이 작성한다. 테스트를 위한 tb_admin 테이블의 모든 레코드를 Select 하는 문장만 있다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap
 PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
 "http://ibatis.apache.org/dtd/sql-map-2.dtd">
 
<sqlMap>
  <typeAlias alias="Admin" type="com.test.model.Admin"/>
  <select id="AdminList" resultClass="Admin">
    SELECT id, login, passwd, name, register_date, login_datetime, status_code, email, mobile_phone
    FROM tb_admin
  </select>
</sqlMap>
</xml>

AdminDao.java 를 아래와 같이 작성한다.

package com.test.dao;
 
import java.sql.SQLException;
import java.util.List;
 
import com.test.model.Admin;
import com.test.util.SqlMapLocator;
 
public class AdminDao {
 private static AdminDao singleton;
 
 private AdminDao() {}
 
 public static AdminDao getInstance() {
  if(singleton == null)
   singleton = new AdminDao();
  return singleton;
 }
 
 @SuppressWarnings("unchecked")
 public List<Admin> list() throws SQLException {
  List<Admin> list = (List<Admin>)SqlMapLocator.getMapper().queryForList("AdminList");
  return list;
 }
}

ListAdmin.java 를 아래와 같이 작성한다.

package com.test.action;
 
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
 
import com.test.dao.AdminDao;
import com.test.model.Admin;
import com.opensymphony.xwork2.ActionSupport;
 
public class ListAdmin extends ActionSupport {
 private static final long serialVersionUID = 1L;
 private String message = "Hello~!";
 private AdminDao dao;
 private List<Admin> list = new ArrayList<Admin>();
 
 public String getMessage() {
  return message;
 }
 
 public void setMessage(String message) {
  this.message = message;
 }
 
 public ListAdmin() throws IOException {
  dao = AdminDao.getInstance();
 }
 
 public String execute() throws Exception {
  list = dao.list();
  return SUCCESS;
 }
 
 public List<Admin> getList() {
  return list;
 }
 
 public void setList(List<Admin> list) {
  this.list = list;
 }
}

마지막으로, listAdmin.jsp 를 아래와 같이 작성한다.

<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>관리자</title>
</head>
<body>
<s:if test="list.size() <= 0"> 데이터가 없네요. ^^;</s:if>
<h1>관리자 목록</h1>
<table border="1" width="100%">
<tr>
  <th>번호</th>
  <th>아이디</th>
  <th>비밀번호</th>
  <th>이름</th>
  <th>등록일자</th>
  <th>로그인일시</th>
  <th>상태코드</th>
  <th>이메일</th>
  <th>핸드폰</th>
</tr>
<s:iterator value="list">
<tr>
  <td><s:property value="id"/></td> 
  <td><s:property value="login"/></td>
  <td><s:property value="passwd"/></td>
  <td><s:property value="name"/></td>
  <td><s:property value="register_date"/></td>
  <td><s:property value="login_datetime"/></td>
  <td><s:property value="status_code"/></td>
  <td><s:property value="email"/></td>
  <td><s:property value="mobile_phone"/></td>
</tr>
</s:iterator>
</table>
</body>
</html>

드디어 웹브라우저에서 http://test.com/admin/ListAdmin.action 을 입력하면 테이블에 입력되었던 데이터를 볼 수 있을 것이다.

저는 데비안 리눅스를 무척 좋아하여 왠만한 개발과 운영을 데비안 리눅스로 하고 있습니다. DBMS는 될 수 있으면 PostgreSQL을 사용하려고 합니다. MySQL처럼 쉽게 설치할 수 있고 간단하게 운영할 수 있기 때문이지요. 그리고 라이센스가 MySQL에 비해서도 자유로운 장점도 있습니다. 최근에는 다우기술에서도 상용서비스 지원을 하고 있습니다. 간단하게 설치/DB,사용자생성/백업,복구 등에 대해 정리해보겠습니다.


  1. 데비안 리눅스에서 설치하기
  2. # apt-get install postgresql-8.4 postgresql-server-dev-8.4
    
  3. 사용자, DB 생성
  4. # su - postgres
    # psql
    template1=# CREATE USER 아이디 WITH PASSWORD '비밀번호';
    template1=# CREATE DATABASE 디비이름 WITH ENCODING='utf-8' OWNER 아이디;
    
  5. 계정으로 로그인할 수 있도록 연결설정
  6. # su -
    # cd /etc/postgresql/8.4/main/
    # vi pg_hba.conf
    모두 주석으로 막고 아래만 남김
    host    all         all         0.0.0.0           0.0.0.0           password
    local   all         postgres                                        trust
    local   all         all                                             password
    
    # vi postgresql.conf
    listen_addresses = '*'
    
    # /etc/init.d/postgresql restart
    # psql -d 디비이름 -U 아이디 -W
    
  7. DB List 보기
  8. # psql -U postgres -l
              List of databases
        Name     |    Owner    | Encoding
    -------------+-------------+----------
     eecit       | eecit       | UNICODE
     openwatcher | openwatcher | UNICODE
     template0   | postgres    | UNICODE
     template1   | postgres    | UNICODE
    (4 rows)
    
  9. SQL Dump
  10. # export DATE=`date +%Y-%m-%d`
    # /usr/bin/pg_dump -U 아이디 -d 디비이름 > /opt/db_backup/db_backup_$DATE.bak
    
  11. Restoring the dump
  12. $ psql -U 아이디 -d 디비이름 < infile
    

Debian Linux의 Tomcat에서 PostgreSQL Connection Pool 설정하는 방법을 정리해보았습니다. Tomcat 은 이미 설치되어 있고, 웹루트 디렉토리도 만들어져 있다고 가정하겠습니다.

PostgreSQL 설치
# apt-get install postgresql-8.3 postgresql-server-dev-8.3
사용자, DB 생성
# su - postgres
# psql
template1=# CREATE USER 아이디 WITH PASSWORD '비밀번호';
template1=# CREATE DATABASE 디비이름 WITH ENCODING='utf-8' OWNER 아이디;
계정으로 로그인할 수 있도록 연결설정
# su -
# cd /etc/postgresql/8.3/main/
# vi pg_hba.conf
모두 주석으로 막고 아래만 남김
host    all         all         0.0.0.0           0.0.0.0           password
local   all         postgres                                        trust
local   all         all                                             password
# /etc/init.d/postgresql-8.3 restart
테스트용 테이블 생성
CREATE TABLE tb_admin
(
 id Serial NOT NULL,
 login Varchar(20) NOT NULL UNIQUE,
 passwd Varchar(20) NOT NULL,
 name Varchar(20) NOT NULL,
 register_date Date NOT NULL,
 login_datetime Timestamp,
 status_code Varchar(4),
 email Varchar(40),
 mobile_phone Varchar(20),
 PRIMARY KEY (id)
) Without Oids;
 
INSERT INTO tb_admin(login, passwd, name, register_date, status_code, email, mobile_phone)
VALUES('honggildong', 'ajtwlddl', '홍길동', '2009-11-03', '0000', 'hgd@gmail.com', '010-2222-5555');
 
INSERT INTO tb_admin(login, passwd, name, register_date, status_code, email, mobile_phone)
VALUES('jangnara', 'dlQmsdl', '장나라', '2009-11-03', '0000', 'jnr@gmail.com', '010-3746-7665');
PostgreSQL JDBC Driver 설치
  1. http://jdbc.postgresql.org/ 에서 다운로드 한다.
    Debian Linux 에서는 다음과 같이 설치한다. /usr/share/java 에 설치된다.
    # apt-get install libpg-java
    
  2. JDBC Driver 를 $CATALINA_HOME/common/lib 에 복사한다.
    Debian 의 Tomcat6 에서는 /usr/share/tomcat6/lib 에 복사한다.
    # cd /usr/share/java
    # cp postgresql-jdbc3-8.4.jar /usr/share/tomcat6/lib/
    
Tomcat 설정
  1. server.xml 의 <Context> 태그 안쪽에 다음을 추가한다.
    <Resource name="jdbc/DBName"
                        auth="Container"
                        type="javax.sql.DataSource"
                        driverClassName="org.postgresql.Driver"
                        loginTimeout="10"
                        maxWait="5000"
                        username="아이디"
                        password="비밀번호"
                        testOnBorrow="true"
                        url="jdbc:postgresql://127.0.0.1/디비이름" />
    
  2. web.xml 에 다음을 추가한다.
    <resource-ref>
            <description>PGSQL DB Connection</description>
            <res-ref-name>jdbc/DBName</res-ref-name>
            <res-type>javax.sql.DataSource</res-type>
            <res-auth>Container</res-auth>
        </resource-ref>
    
테스트 코드 (index.jsp)
  1. JSP 코드를 다음과 같이 작성한다. 관련 DB와 테이블은 작성되어 있어야 합니다.
    <?xml version="1.0" encoding="UTF-8" ?>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ page import="java.sql.*" %>
    <%@ page import="javax.sql.*" %>
    <%@ page import="javax.naming.*" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>DB Test</title>
    </head>
    <body>
    <%
    DataSource   ds = null;
    Connection conn = null;
    Statement  stmt = null;
    ResultSet    rs = null;
     
    try {
        Context initCtx = new InitialContext();
        Context envCtx = (Context) initCtx.lookup("java:comp/env");
        ds = (DataSource) envCtx.lookup("jdbc/DBName");
        conn = ds.getConnection();
        stmt = conn.createStatement();
        rs  = stmt.executeQuery("select id, login, passwd, name, register_date, login_datetime, status_code, email, mobile_phone from tb_admin");
        while(rs.next()) {
            out.println("ID: " + rs.getString("id"));
            out.println(", Login: " + rs.getString("login"));
            out.println(", Password: " + rs.getString("passwd"));
            out.println(", Name: " + rs.getString("name"));
            out.println(", Register Date: " + rs.getString("register_date"));
            out.println(", Login Datetime: " + rs.getString("login_datetime"));
            out.println(", Status Code: " + rs.getString("status_code"));
            out.println(", E-Mail: " + rs.getString("email"));
            out.println(", Mobile Phone: " + rs.getString("mobile_phone") + "<br/>");
        }
        rs.close();
        stmt.close();
        conn.close();
    } catch (Exception e) {
        out.println("<br /><font color='red'><strong>SQL Exception: " + e + "</strong></font><br/>");
    }
    %>
    </body>
    </html>
    
  2. JSTL 을 이용하는 경우에는 $CATALINA_HOME/common/lib (/usr/share/tomcat5.5/common/lib) 에 standard.jar, jstl.jar 파일을 복사하고 코드를 다음과 같이 작성합니다.
    <%@ page contentType="text/html;charset=utf-8" session="true" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
     
    <sql:query var="rs" dataSource="jdbc/DBName">
    select id, login, passwd, name, register_date, login_datetime, status_code, email, mobile_phone from tb_admin
    </sql:query>
     
    <html>
      <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8">
        <title>DB 테스트</title>
      </head>
      <body>
     
    <c:forEach var="row" items="${rs.rows}">
        ID: ${row.id}, 
        Password: ${row.passwd},
        Name: ${row.name}, 
        Register Date: ${row.register_date},
        Login Datetime: ${row.login_datetime},
        Status Code: ${row.status_code},
        E-Mail: ${row.email},
        Mobile Phone: ${row.mobile_phone} <br/>
    </c:forEach>
     
      </body>
    </html>
    

'DBMS > PostgreSQL' 카테고리의 다른 글

CentOS에서 PostgreSQL 설치/사용하기  (0) 2011.03.31
Debian Linux 에서 PostgreSQL 설치/사용하기  (0) 2009.11.11

+ Recent posts