카테고리 없음 2012. 1. 31. 10:50
posted by 나무사이
:
공부/DB 2012. 1. 31. 10:47

'공부 > DB' 카테고리의 다른 글

sql 간단 명령어 정리 링크  (0) 2012.02.22
집합 쿼리(UNION, INTERSECT, MINUS)  (0) 2012.01.25
[MYSQL] Identity - 오라클 시퀀스  (0) 2012.01.05
각각 디비 시퀀스 생성  (0) 2012.01.05
[오라클 db]시퀀스  (0) 2012.01.04
posted by 나무사이
:
카테고리 없음 2012. 1. 25. 14:44
posted by 나무사이
:
공부/DB 2012. 1. 25. 11:21


☞ 집합 쿼리(UNION, INTERSECT, MINUS)
 
  집합 연산자를 사용시 집합을 구성할 컬러의 데이터 타입이 동일해야 합니다.
 
◈ UNION : 합집합
◈ UNION ALL : 공통원소 두번씩 다 포함한 합집합
◈ INTERSECT : 교집합
◈ MINUS : 차집합


☞ UNION

 ◈ UNION은 두 테이블의 결합을 나타내며, 결합시키는 두 테이블의 중복되지 않은 값들을 반환 합니다. 
 
 
SQL>SELECT deptno FROM emp
        UNION
        SELECT deptno FROM dept;
 
    DEPTNO
----------
        10
        20
        30
        40



☞ UNION ALL

◈ UNION과 같으나 두 테이블의 중복되는 값까지 반환 합니다. 
 
SQL>SELECT deptno FROM emp
        UNION ALL
       SELECT deptno FROM dept;
 
   DEPTNO
---------
       20
       30
       30
       20
       30
       30
       10
       20
       10
       30
....



☞ INTERSECT

◈ INTERSECT는 두 행의 집합중 공통된 행을 반환 합니다. 
 
SQL>SELECT deptno FROM emp
        INTERSECT
        SELECT deptno FROM dept;
    
    DEPTNO
----------
        10
        20
        30



☞ MINUS

◈ MINUS는 첫번째 SELECT문에 의해 반환되는 행중에서 두번째 SELECT문에 의해 반환되는 행에 
    존재하지 않는 행들을 반환 합니다. 
 
SQL>SELECT deptno FROM dept
        MINUS
        SELECT deptno FROM emp;
 
    DEPTNO
----------
        40

  ================================================ 
    * 오라클 정보공유 커뮤니티 oracleclub.com 
    * http://www.oracleclub.com 
    * http://www.oramaster.net 
    * 강좌 작성자 : 김정식 (oramaster _at_ naver.com)
  ================================================


출처 :  http://pmguda.com/347

'공부 > DB' 카테고리의 다른 글

sql 간단 명령어 정리 링크  (0) 2012.02.22
sql 문자열 정리 홈페이지  (0) 2012.01.31
[MYSQL] Identity - 오라클 시퀀스  (0) 2012.01.05
각각 디비 시퀀스 생성  (0) 2012.01.05
[오라클 db]시퀀스  (0) 2012.01.04
posted by 나무사이
:
공부/솔라리스 2012. 1. 25. 11:19

## Oracle10g DB 수동 생성 방법 (Solaris 기준)
    절대적인 방법은 아니므로 수정해야 할 부분은 알아서 잘 체크 할 것

[!. 참고사항]

* 로 표시된 사항은 자신의 계정이나 환경에 맞게 수정하여야 함

- Oracle Database Administrator's Guide
  http://download.oracle.com/docs/cd/B19306_01/server.102/b14231/toc.htm


[1. .profile 수정]
※ ORACLE_HOME은 자신의 환경에 맞게 수정
각각의 DBA계정 profile에서 ORACLE_SID에 따라 인스턴스가 달라지므로 주의한다. 즉, DBA계정에 인스턴스 하나만 설치

umask 022
trap  2 3

export EDITOR=vi
set -o vi
stty erase ^H

export PS1=`hostname`' $PWD>'
export WCOLL=/tmp/wcoll
export ENV=$HOME/.kshrc

#LANG=ko
LANG=C
export LANG

export PATH=/oracle10g/bin:/opt/SUNWspro/bin:/bin:/opt/bin:/usr/bin:/usr/ccs/bin:/usr/local/bin:/usr/java/bin:/usr/java/bin/jar:/opt/SUNWspro/
bin/cc:/usr/openwin/bin:$ORACLE_HOME/OPatch
export ORACLE_HOME=/oracle10g
export ORACLE_SID=ORACLE



[2. Datafile 디렉토리 설정]
※ datafile 디렉토리 아래에 .dbf 파일이 생성됨
이 디렉토리가 없으면 데이터 베이스가 생성 되지 않는다.

/ora_dbf01/oradata 생성 (각자 환경에 맞게 수정)


[3. $ORACLE_HOME/dbs/init{SID}.ora 파일 생성]
※ ORACLE_HOME은 .profile에서 지정한 디렉터리 경로임

initmyDB.ora 파일 내용

control_files              = (/ora_dbf01/oradata/control.001.dbf,
                                  /ora_dbf01/oradata/control.002.dbf,
                                  /ora_dbf01/oradata/control.003.dbf)
db_name                    = myDB

db_block_size             = 8192
pga_aggregate_target   = 256M

processes                  = 100
open_cursors              = 1024

undo_management      = AUTO

undo_tablespace          = UNDOTS01
compatible                  = 10.2.0

sga_target                   = 128M

nls_language               = AMERICAN
nls_territory                  = AMERICA

background_dump_dest    = /oracle10g/admin/myDB/bdump
core_dump_dest              = /oracle10g/admin/myDB/cdump
user_dump_dest              = /oracle10g/admin/myDB/udump
audit_file_dest                  = /oracle10g/admin/myDB/adump


[4. dump 디렉토리 생성]
※ dump 디렉토리는 반드시 만들어 주어야 함
DBA 계정으로 생성할 수 없을 경우 root 권한으로 생성하고 권한을 DBA 계정이 Write할 수 있게 바꿔 주어야 함
bdump에 log파일에 데이터 베이스를 만드는 로그가 기록됨

/oracle10g/admin/myDB/bdump
/oracle10g/admin/myDB/cdump
/oracle10g/admin/myDB/udump
/oracle10g/admin/myDB/adump


[5. db 생성 쿼리 .sql 파일 생성]
Home 디렉토리에서 xxx.sql 파일에 아래의 쿼리문을 작성하자.

CREATE DATABASE myDB
   USER SYS IDENTIFIED BY password
   USER SYSTEM IDENTIFIED BY password
   LOGFILE GROUP 1 ('/ora_dbf01/oradata/redo01.log') SIZE 10M,
                GROUP 2 ('/ora_dbf01/oradata/redo02.log') SIZE 10M,
                GROUP 3 ('/ora_dbf01/oradata/redo03.log') SIZE 10M
   MAXLOGFILES 5
   MAXLOGMEMBERS 5
   MAXLOGHISTORY 256
   MAXDATAFILES 100
   MAXINSTANCES 1
   CHARACTER SET KO16KSC5601
   NATIONAL CHARACTER SET AL16UTF16
   DATAFILE '/ora_dbf01/oradata/system01.dbf' SIZE 325M REUSE
   EXTENT MANAGEMENT LOCAL
   SYSAUX DATAFILE '/ora_dbf01/oradata/sysaux01.dbf' SIZE 325M REUSE
   DEFAULT TABLESPACE tbs_1 DATAFILE '/ora_dbf01/oradata/tbs01.dbf' size 50m
   DEFAULT TEMPORARY TABLESPACE tempts1
      TEMPFILE '/ora_dbf01/oradata/temp01.dbf'
      SIZE 20M REUSE
   UNDO TABLESPACE UNDOTS01
      DATAFILE '/ora_dbf01/oradata/undotbs01.dbf'
      SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;



[6. Oracle Start and Run Scripts]
※ 5번에서 작성한 xxx.sql 파일을 sqlplus에서 실행 시킴
as sysdba 옵션은 db관리자로 접속하라는 의미
@는 파일을 실행
?는 $ORACLE_HOME을 의미
database 생성을 실패할 경우에는 ./oradata의 파일을 모두 삭제한 뒤
sql> shutdown abort 로 oracle을 내렸다 다시 시작하면 됨
pupbld.sql은 user profile에 관련된 sql이고 유저 profile이 생성되지 않았다는 오류가 날 경우에는 system 계정으로 (dba권한 없이) 접속해서 실행하자.

$HOME> sqlplus / as sysdba

sql> startup nomount
sql> @xxx.sql
sql> show parameter background
sql> @?/rdbms/admin/catalog.sql
sql> @?/rdbms/admin/catproc.sql
sql> @?/sqlplus/admin/pupbld.sql
sql> EXIT


!!! 참고사항
database 생성 쿼리 중 UNDO TABLESPACE 이름과 initmyDB.ora 파일의 undo_tablespace의 설정값이 동일해야 create database 줄에서 오류가 나지 않음


[7. 외부 접속을 위한 listener.ora 파일 설정]
※ 
http://download.oracle.com/docs/cd/B19306_01/network.102/b14213/listener.htm#sthref769

/oracle10g/network/admin/listener.ora 파일내용

#
# Listener Name (Listener Identification)
# Default Port 1521
#

LISTENER1=
  (DESCRIPTION=
    (ADDRESS_LIST=
      (ADDRESS=(PROTOCOL=tcp)(HOST=***.***.***.***)(PORT=1521))
    )
  )
SID_LIST_LISTENER1=
  (SID_LIST=
    (SID_DESC=
      (ORACLE_HOME=/oracle10g)
      (SID_NAME=ORACLE)
    )
  )
 

[8. Listener 실행 및 서비스 포트 확인]

> lsnrctl start LISTENER1
> netstat -an |grep LISTEN |grep 1591


[9. 클라이언트에서 원격 db접속을 위한 tnsnames.ora 파일 설정(클라이언트만 해당)]
http://download.oracle.com/docs/cd/B19306_01/network.102/b14213/tnsnames.htm#sthref649
!!! tnsnames.ora는 클라이언트 PC에서 원격 DB 서버에 접속하기 위해 설정하는 프로파일

ORACLE =
 (DESCRIPTION=
   (ADDRESS=(PROTOCOL=tcp)(HOST=***.***.***.***)(PORT=1521))
   (CONNECT_DATA=
     (SERVICE_NAME=myDB)
   )
 )

 

[10. 클라이언트에서 원격 접속]

>sqlplus /nolog

SQL*Plus: Release 10.2.0.2.0 - Production on Fri Apr 10 16:46:34 2009

Copyright (c) 1982, 2005, Oracle.  All Rights Reserved.

SQL> connect
Enter user-name: system
Enter password:
Connected.
SQL>


또는


>sqlplus system/password

SQL*Plus: Release 10.2.0.2.0 - Production on Fri Apr 10 16:46:15 2009

Copyright (c) 1982, 2005, Oracle.  All Rights Reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - 64bit Production
With the Partitioning and Data Mining options

SQL>

출처 :  
http://jmson.tistory.com/46

'공부 > 솔라리스' 카테고리의 다른 글

솔라리스 상태확인  (0) 2012.02.22
솔라리스 8,9 오라클 8,9 설치  (1) 2012.01.25
posted by 나무사이
:
공부/솔라리스 2012. 1. 25. 11:17
Oracle for (x86 / sprac) Solaris edition) Installation Guide  
 
 
 
 
작성자: 김석 [solaris2u@hotmail.com]  
 
라이센스 : 저작권은 필자에게 있으며 , 수정 / 배포 가능  
 
개인적 학습용도는 제한없으며 강의용이나 교재집필용도는 사전문의요망  
 
이유는 필자 마음이기 때문에...^^;  
 
버전: 0.9  
 
만든이유: 필자 역시 유닉스 환경에서 오라클을 처음에 설치할 때 고생했던 아픔이 있었기에 고생하는 다른 분들을 위해..  
 
-------------------------------------------------  
 
1. 설치환경  
 
운영체제 : x86 Solaris 8 , 9 와 sparc Solaris 8 , 9  
 
Oracle : Oracle 8.1.7 for x86 Solaris , Oracle 8.1.7 for sparc Solaris , Oracle 9.0.1 for sparc  
 
 
 
 
2. 커널 파라미터 수정  
 
 
 
 
2.1. root 유저로 System 커널 파라미터를 조정한다 .  
 
# vi /etc/system  
 
set shmsys:shminfo_shmmax=2294967295 ---->2배 정도로 잡아도 무난하다.  
 
set shmsys:shminfo_shmmin=1  
 
set shmsys:shminfo_shmmni=100  
 
set shmsys:shminfo_shmseg=10  
 
set semsys:seminfo_semmni=100  
 
set semsys:seminfo_semmsl=100  
 
set semsys:seminfo_semmns=600  
 
set semsys:seminfo_semopm=100  
 
set semsys:seminfo_semvmx=32767  
 
# touch /reconfigure  
 
# reboot  
 
 
 
 
@@@주의@@@  
 
반드시 재부팅 해야만 한다. 귀찮다고 아래의 작업을 먼저 수행하는 우를 범하지 않기를.  
 
 
 
 
3. Prepare oracle enviroment  
 
 
 
 
3.1. create oracle mount point  
 
오라클의 OFA(Optimal Flexible Architecture)설치 참조.  
 
최소한 두개의 마운트포인트가 필요하다. 학습용이라면 한곳에 설치도 무방하다. 그러나 오라클 권장은 최소 두곳이며 물리적으로 하드도 분리 되어 있어야 좋다.  
 
이는 오라클의 성능에 관계된 사항이며 개인적으로 공부하는 목적이거나 환경이 적합하지 않으면 한곳으로 설치해도 설치 자체에는 큰 무리가 없다.  
 
 
 
 
첫번째는 오라클 소프트웨어를 위한 (/u01) 마운트포인트  
 
두번째는 Database 위치할 (/u02) 마운트포인트  
 
u0 ,u1은 오라클의 정식교재 및 오라클사의 여타 문서에서 기본으로 잡는 포인트 이므로 개인적인 환경에 따라 적당히 만들어 지정하면 된다.  
 
솔라리스를 설치할 때 파티셔닝 단계에서 아예 마운트 포인트를 생성하는것이 좋다.  
 
이유는 성능과 보안, 트러블 슈트 등의 이유다. 좀 더 자세한 사항을 알고 싶으면 오라클 사이트나 기타 사이트나 커뮤니티 등을 활용하기를 바라며 필자에게 문의해도 좋다.  
 
 
 
 
3.2. Oracle 유저 /그룹 생성  
 
# groupadd -g 5000 dba  
 
# useradd -g dba -d /export/home/oracle -m oracle  
 
 
 
 
그룹명 역시 dba로 꼭 구성할 필요는 없다..다만 일반적인 사항으로 구성했다.  
 
 
 
 
 
 
 
3.3. Oracle 환경변수 설정  
 
Oracle 설치디렉토리 , SID 와 같은 변수는 자신의 상황에 맞게 편집을 한다 .  
 
 
$ vi /export/home/oracle/.profile  
 
ORACLE_BASE=/u01/app/oracle  
 
ORACLE_HOME=$ORACLE_BASE/product/8.1.7 --->9이라면 뒷부분을 9.0.1 혹은 9.2.0 등으로 지정하면 되며 단순히 디렉토리 이므로 꼭 버전을 똑같이 명시하려고 신경 쓸 필요는 없다. 이후에 나오는 모든 환경에서 8.1.7은 단순한 디렉토리 명이므로 9.x를 설치하는 사람은 9.x로 지정하면 아무런 문제가 없다.  
 
NLS_LANG=AMERICAN_AMERICA.KO16KSC5601 --->언어지원을 구성한다.  
 
ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data  
 
ORACLE_SID=ORCL  
 
--->인스턴스명이다..적당히 원하는 것으로 지정하면 된다.여기서는 ORCL로 지정했다.  
 
export ORACLE_BASE ORACLE_HOME NLS_LANG ORACLE_SID  
 
PATH=$ORACLE_HOME/bin:$PATH  
 
LD_LIBRARY_PATH=$ORACLE_HOME/lib  
 
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib  
 
export PATH LD_LIBRARY_PATH CLASSPATH  
 
umask 022  
 
 
 
 
3. Oracle 소프트웨어 설치 디렉토리 준비  
 
# mkdir -p /u01/app/oracle  
 
# chown oracle /u01/app/oracle --->현재 root의 소유이므로 oracle 로 바꾼다.  
 
# chgrp dba /u01/app/oracle --->gid 1인 root group에서 gid 5000으로 소유권 이전  
 
 
 
 
4. Install Oracle  
 
oracle 사용자로 로그인 후  
 
$ cd /cdrom/disk1  
 
$ ./runInstaller  
 
 
 
 
@@@주의@@@  
 
오라클 8i는 전혀 문제가 없다. 그러나 9i는 시디가 3장이므로 위에서처럼 ./runinstaller를 실행하기 위해 cd로 이동해서 설치 하면 첫 번째 시디 설치 후 두 번째를 갈아끼울 때 cdrom 이 busy 상태에 빠져 umount할 수 없게 된다.  
 
따라서 절대 경로로 #/cdrom/cdrom1/.runInstaller로 실행한다.  
 
필자가 오라클 9i를 처음 설치할 때 고생했던 부분이다. 그리고 이 부분을 해결하기 위해 vold 데몬을 kill로 죽이고 시디를 갈아 끼운 뒤 시디를 끼우고 vold를 살려도 인식되지 않는다. 그래서 임의의 디렉토리를 생성 후 2번째장을 다시 지정하고, 또 kill로 죽이고 3번째를 지정하고..간신히 설치했으나 DB가 생성이 안되는 문제가 야기되는 등의 문제가 발생했다.  
 
따라서 처음부터 절대 경로로 인스톨 하기를 바란다...필자처럼 고생하고 싶지 않다면..  
 
 
 
 
이후로는 Universal Installer 화면으로 설치  
 
 
 
 
설치중 유의사항: root 권한으로 /u01/app/oracle/product/8.1.7/orainstRoot.sh 실행  
 
-->마찬가지로 8.1.7에 큰 의미를 두지 않는다..9.x라면 9.x로 지정하면 되고 설치중에 위 스크립트를 수행하라면서 실제 자신의 환경에 맞는 스클립트 경로를 알려준다.  
 
그대로 보고 수행한다.  
 
 
 
 
설치종료 후 유의사항: root 권한으로 /u01/app/oracle/product/8.1.7/root.sh 실행  
 
-->마찬가지로 8.1.7에 큰 의미를 두지 않는다..9.x라면 9.x로 지정하면 되고 설치중에 위 스크립트를 수행하라면서 실제 자신의 환경에 맞는 스클립트 경로를 알려준다.  
 
그대로 보고 수행한다. 9.x의 경우는 때로는 경로가 tmp로 지정된다  
 
 
 
 
@@@주의@@@  
 
설치중에 java의 경로가 Solaris의 버전 마다 상이하다..같은 솔라리스 8이더라도 Release에 따라 java의 경로나 버전으로 틀려지므로 설치중에 자바 경로를 물어오면 브라우징 해서 경로를 정확히 지정해 준다. 자바가 제대로 설정되지 않으면 이후에 SQLJ등의 기능을 수행할 수 없게 된다.  
 
또한 응용프로그램은 잘 설치 되었으나 DB생성이 안되는 문제에 봉착하면 $ORACLE\bin에서 Database Configuration Assistance를 이용해서 구성한다.  
 
 
 
 
작성년월일:2003.6.27 

출처 :  
http://www.solarisschool.com/tip/view.html?board=tip1&no=19141&start=30&sselect=&mode=&qry_string=

'공부 > 솔라리스' 카테고리의 다른 글

솔라리스 상태확인  (0) 2012.02.22
Oracle10g DB 수동 생성 방법 (Solaris 기준)  (0) 2012.01.25
posted by 나무사이
:
공부/HTML 2012. 1. 5. 16:27
============================================ 
(1)JSP 페이지내에서 한글문제 처리법 
============================================ 
아래와 page Directive 속성을 euc-kr(또는 EUC_KR)로 지정하면 된다. 

------------------------------------------------------ 
<%@ page contentType="text/html;charset=euc-kr" %> 
------------------------------------------------------- 
최근 정보에 따르면 euc-kr대신에 'MS949'(대문자로)를 쓰는 것이 좋단다. 

참고; '*.jsp'가 아닌 순수 HTML(*.html or *.htm)파일일 경우 
아래와 같이 HTML의 meta태그를 이용한다.(물론 default값이다) 
---------------------------------------------------------------------- 
<meta http-equiv="Content-Type" content="text/html;charset=euc-kr"> 
---------------------------------------------------------------------- 
만일, OS(웹서버 말고)가 Win2k일 경우는 
맨마지막의 'charset=euc-kr'대신에 'ksc-5601'로 지정한다. 
즉 아래와 같다. 
---------------------------------------------------------------------- 
<meta http-equiv="Content-Type" content="text/html;charset=ksc5601"> 
---------------------------------------------------------------------- 



======================================================== 
(2)HTTP로 전송된 것을 받을 경우 한글문제 처리법 
======================================================== 
이 문제는 JSP Container마다 조금씩 다르게 처리해 줘야 한다. 

준비운동 ; 
한글을 지원하는 코드에는 euc-kr(또는 ksc5601)과 8859_1이 있다고 했습니다. 
# euc-kr : jsp 페이지내에서 사용되는 한글 인코딩 방식. 
# 8859_1 : input박스를 통해서 http로 전송되어서 request.getParameter()로 받을 때 
저장되는 한글 인코딩 방식. 

앞서 페이지 지령문에서 다음과 같이 지정했는데 문제가 일어나게 됩니다. 

이 경우 페이지내에서 출력하고자 하는 인코딩형태는 euc-kr인데, 
http를 타고 전송된 글은 8859_1로 인코딩되어 있기 때문에 한글이 모두 깨져버립니다. 


------------------ 
해결책 
------------------ 
그 해결방법은 8859_1로 전송되어 온 글을 euc-kr로 변환하는 것입니다. 

일반적으로 받은 데이터를 코드 변환할 때는 
String형의 값을 byte형으로 변환하는 getBytes()메소드를 기본적으로 이용한다. 


원래 문; String name=request.getParameter("name"); //Resin일 경우 처리가 필요없다. 
******************************************************************* 
변경 후; String name=new String(request.getParameter("name").getByets("8859_1"),"euc-kr"); 
******************************************************************* 

8859_1코드로 전송받은 글을 euc-kr코드로 변환해서 받고 있다. 

========================================== 
(3)mySQL에 저장할 경우 한글 문제 처리법 
========================================== 
DB저장시 한글 저장 문제가 발생하는 이유는 
DB Server와 JSP가 사용하는 코드 체제가 다르기 때문입니다. 

DB는 일반적으로 ASCII나 ksc5601코드 체계를 사용하고 
JSP는 Unicode를 사용합니다. 

------------------------------------------------------------------- 
Class.forName(org.gjt.mm.mysql.Driver"); 
String URL="jdbc:mysql://localhost/myDB?useUnicode=true&characterEncoding=euc-kr" 
Connection conn=DriverManager.getConnection("URL","user","password") 
---------------------------------------------------------------------- 
jdbc부분중에서 빨강색으로 적힌 부분을 넣어 주도록 하자. 
Tomcat이 아니라 <font color=red>Resin</font>일 경우는 euc-kr이 아니라 ksc5601임에 유의하자

====================================== 
Container에 따른 한글 문제 처리 요약 
====================================== 
한글 처리 작업은 JSP Container에 따라 조금씩 다르며 
해당 Container의 버전에 따라 차이가 있을 수도 있어 
약간 복잡할 수도 있습니다. 

==================================================================== 
1. Resin ; jsp내의 page 속성변경, 받을 경우 불필요, db저장시 ksc5601로 
===================================================================== 
이경우는 아래와 page Directive 속성을 euc-kr(또는 EUC_KR)로 지정하면 된다. 

------------------------------------------------------ 
<%@ page contentType="text/html;charset=euc-kr" %> 
------------------------------------------------------- 
최근 정보에 따르면 euc-kr대신에 'MS949'(대문자로)를 쓰는 것이 좋단다. 

다음에는 DB저장시 옵션을 euc-kr이 아닌 'ksc5601'로 준다. 
----------------------------------------------------------------------------------- 
String URL="jdbc:mysql://localhost/myDB?useUnicode=true&characterEncoding=ksc5601"; 
------------------------------------------------------------------------------------ㄴ 

주의 ; http에서 전송 된 글을 받을 때 어떤 처리도 하지 않는다. 


======================================================== 
2. Tomcat 
======================================================== 
이 경우는 버전에 따라 다소 차이가 있음을 알아 두자. 
물론 Resin처럼 page Directives 속성을 지정해 줘야 한다. 

Tomcat은 http로 전송된 글을 받을 때 버전마다 차이가 있어 신경써야 합니다. 

Tomcat 버전 3.0이하인 경우 
--------------------------- 
이 버전의 톰캣은 값이 넘어 올때 8859_1형식이 아니라 Cp1252로 넘어 오기때문에 다음과 같이 처리한다. 

String name = new String(request.getParameter("name".getBytes("Cp1252"),"EUC_KR"); 

Tomcat버전 3.1이상인 경우 
--------------------------- 
이 버전은 8859_1로 넘어 옵니다. 

String name = new String(request.getParameter("name".getBytes("8859_1"),"EUC_KR"); 


---------------------- 
한글 처리 편하게 하기 
---------------------- 
여기서 알아 볼 것은 한글 변환을 편하게 하는 방법이다. 
우리는 지금까지 한글을 euc-kr으로 변환할 때는 
다음과 같은 형태로 객체를 생성하였다. 

String u_name = new String(request.getParameter("u_name").getBytes(8859_1","euc-kr"); 

그런데 직접 소스를 입력해 본 사람이라면 알겠지만, 
한글 코드 변환할 때마다 일일이 이렇게 길게 치는 것이 
조금은 불편하다고 느꼈을 것이다. 

그렇다면 아예 한글 코드 변환하는 기능을 
메소드나 빈으로 만들어 사용하는 것이 조금은 수고를 덜어 줄 것이다. 

우선 메소드로 만들어 사용하는 방법부터 보자... 

방법1; 메소드(toEuckr)로 만들어 사용하기 
------------------------------------------------------------------------ 
<%! 
String toEuckr(String str) throws java.io.UnsupportedEncodingException 

if(str != null) return new String(str.getBytes("ISO-8859-1","EUC-KR"); 

%> 
--------------------------------------------------------------------------- 

String u_id = toEuckr(request.getParameter("u_id")); 

한글을 포함한 문자열은 toEuckr() 메소드를 이용하여 처리한다. 


방법2; class로 만들어 사용하기 
---------------------------------------------------------------- 
makeKOR.java 

import java.io.*; 

public class makeKor 

public static String toEuckr(String str) throws UnsupportedEncodingException 

if(str != null) return new String(str.getBytes("8859_1","euc-kr"); 


---------------------------------------------------------------------- 

빈 사용법; 
우선 makeKOR.java을 컴파일한 후(makeKOR.class가 생성) 
사용할 때는 import를 이용해서 빈을 포함시킨다. 
---------------------------------------------------------------- 
<%! import="makeKOR" contentType="text/html;charset=euc-kr"%> 
<% 
String u_name = makeKor.toEuckr(request.getParameter("u_name")); 
%> 
------------------------------------------------------------------- 

--이상으로 두가지 방법이 있음을 알아 보았는데, 
자기가 편한 방법을 이용하면 되겠다....^================^ 



============================= 
getByte()메소드 자세히 알기 
============================= 
사용형식; getByte(String enc) 

(1)정 의 ; String을 매개변수로 주어지는 charset으로 변환. 
(2)매개변수 ; US-ASCII, ISO-8859-1, UTF-8, UTF-16BE, UTF-16LE, UTF-16등 
(3)리턴 값 ; byte[] 
(4)예외 상황; 발생되는 exception은 UnsupportedEncodingException이 있다. 
이 exception은 'java.io.*'를 import해야 사용가능하다. 


[ 전체적인 해결법 키 ]

String URL="jdbc:mysql://localhost/myDB?useUnicode=true&characterEncoding=euc-kr 
뒤에 붙는 useUnicode=true&characterEncoding=euc-kr 
이게 가장 중요한 세팅이었습니다..이거 하나가 되면 
html -> jsp 로 값넘긴거 코드 변환하는거 빼곤 나머지는 거의 변환해 줄일이 없더라구여


참조 : http://www.okjsp.pe.kr/ QnA 한글처리
출처 :  
http://ilinuxbay.com/contentChannel/article.php?scol_serial=2445&aca_idx=2&bca_idx=7

'공부 > HTML' 카테고리의 다른 글

셀 합치기  (0) 2012.08.10
페이지 이동방법  (0) 2012.01.05
posted by 나무사이
:
카테고리 없음 2012. 1. 5. 16:23

 

한 페이지가 좌우로 나뉘거나, 상하로 나뉜 페이지를 만들어 보도록 하겠습니다. 

프레임의 개념은 이렇습니다. 

index.html문서를 웹브라우즈에서 불러오면 a.html은 왼쪽의 메뉴로 사용되는 문서이고, b.html은 각메뉴에 해당하는 상세정보를 보여주는 문서 입니다.

a.html이나, b.html은 보통의 웹문서 입니다. 

단지 프레임으로 나뉜 문서를 불러오기 위해서는 index.html에서 프레임으로 나뉜 다는 것을 지정해 주기만하면 됩니다. 

프레임으로 나뉜 웹문서(index.html)를 보통 MasterPage라고도 합니다.

 

다음은 간단한 프레임으로 된 index.html입니다.

 

예1) 좌,우로 나누기 위한 index.html

 

<HTML>
<HEAD>
<TITLE>좌우로나누기</TITLE>
</HEAD>
<FRAMESET COLS="30%,70%">
<FRAME SRC="a.html">
<FRAME SRC="b.html">
</FRAMESET>
</HTML>

  

 

예2) 상,하로 나누기 위한 index.html

 

 

<HTML>
<HEAD>
<TITLE>상하로나누기</TITLE>
</HEAD>
<FRAMESET ROWS="30%,70%">
<FRAME SRC="a.html">
<FRAME SRC="b.html">
</FRAMESET>
</HTML>

 

마스터페이지에는 일반 HTML문서와는 달리 <BODY> ~ </BODY>태그가 없습니다.

대신 <FRAMESET> ~ </FRAMESET>태그가 있습니다. 

이 태그안에서 웹브라우즈창을 어떻게 나눌것이지와 나누고 난 후에 어떤문서를 불러올 것인지를 지정해 줍니다.

위의예1)과 예2)처럼 웹브라우즈를 좌우로 나누려면 COLS라는 옵션을 쓰고, 상하로 나누려면 ROWS라는 옵션을 사용합니다.

COLS와 ROWS에 각각 몇 개로 나눌것인지를 지정해주는 것입니다.

위의 예1)에서는 30%와 70%로 창을 좌우로 나눈것이며, 예2)에서는 상하로 30%와 70%로 나눈 것입니다.

두 개의 프레임문서로 불러온 후에는 <FRAME SRC=”불러올문서”>로 나뉘어진곳에 불러올 문서를 지정해 주면 됩니다. 간단하죠….

 

이것이 프레임의 가장 기본이며, 전부다라고 할 수 있습니다.

여기서 프레임에 대한 구현방법만 조금 더 배우면 됩니다.

또한 이프레임들을 좀 더 다양하고 이쁘게 그리고 방문자들을 위한 해상도를 고려해주는 프레임을 만들수가 있습니다.

 

위에서는 창을 %로 나누는 것만 배웠습니다.

%는 전체브라우즈의 창을 100으로 보았을 때 각각의 프레임문서를 몇%로 나눌것인가를 지정하는 것입니다.

그러나 %로 해두면 만들기는 편리하나 프레임을 만들 컴퓨터의 해상도와 방문자의 해상도가 다를 경우에는 다르게 보일 수 있습니다.

이 문제를 해결하기 위해서는 %대신에 고정된 크기로 지정 할 수 있는 Pixel로 지정해 주면 됩니다. 

 

예3) 픽셀로 프레임나누기

 

<HTML>
<HEAD>
<TITLE>픽셀로프레임나누기</TITLE>
</HEAD>
<FRAMESET COLS="50,*,2*">
<FRAME SRC="a.html">
<FRAME SRC="b.html">
<FRAME SRC="c.html">
</FRAMESET>
</HTML>

 

위의 프레임은 픽셀로 지정된 것입니다.

"a는 50픽셀의 크기로 나누고, 나머지 공간을 2개로 분할하여 c가 b의 2배로 되게 나누어라"하는 것입니다.

 

이번에는 좌우로(COLS) 나뉜 프레임을 다시 상하(ROWS)로 나누어 보겠습니다.

 

예4) 복잡한 프레임

 

<HTML>
<HEAD>
<TITLE>복잡한프레임나누기</TITLE>
</HEAD>
<FRAMESET COLS="50,*,2*">
<FRAME SRC="a.html">
<FRAME SRC="b.html">
<FRAMESET ROWS="50%,50%">
<FRAME SRC="c.html">
<FRAME SRC="d.html">
</FRAMESET>
</FRAMESET>
</HTML>

 

위의 마스터페이지는 좌우로 먼저 3개의 프레임으로 나눈 뒤에 마지막 3번째 프레임문서를 다시 상하 2개의 문서로 나뉜 것입니다.

한가지 주의할 것은 문서는 프레임을 나눈 순서대로 들어가게 된다는 것만 주의해 주시면 별 어려움없이 프레임으로 된 웹페이지를 만드실 수 있을 것입니다.







출처 : http://superuser.co.kr/homepage/htmlguide/5-01.htm  




rows="가로화면비율%" 
             :    가로로 분할하기

cols="세로화면비율%"  : 세로로 
             분할하기


           
frameborder=0 혹은 1  : 프레임의 경계선의  표시 유무. 경계선을 보이게 하고
                                   싶으면 
            1, 없애고 싶으면 0.


           
framespacing="수치" 
             : 각각  프레임간의 간격


           
frame src="불러올 
            웹페이지" : 분할된  각각 프레임에 문서 불러오기 할때


           
name="문자열" 
            : 프레임   이름, 프레임에서 다른 문서를 불러들이기 할 때 꼭 
  필요합니다.


           
noresize : 프레임의 경계선이 
            움직이지 않도록 고정시킴

scrolling="auto/yes/no"  :
프레임옆의 스크롤바의  유무를 결정하는 명령어. 
                 
auto  : 자동, yes : 스크롤  있음, no : 스크롤 없음


           
marginwidth="수치" :프레임 양쪽 경계선과  안에 내용과의 여백을 조절.


           
arginwidth="수치" 
            : 프레임  위아래 경계선과 안에 내용과의 여백을 조절.
 예


 

html>
head>/head>

            frameset rows="15%,85%" frameborder="0">

 frame src="frame1.htm" scrolling="no" noresize >
frameset cols="20%,80%" frameborder="0">

            frame src="frame2.htm" scrolling="no" noresize>

            frame src="frame3.htm" scrolling="no">

            /frameset>
/html>







요기가 frame1. 큰 화면의 15%  입니당



그럼 여기는 85%를 차지
요기를  또 쪼갤거여요^^





frame1



frame2

            (20%)



frame3
(80%)



출처 :  http://jmf.or.kr/jmf/technote/read.cgi?board=mary_know&y_number=39 

posted by 나무사이
:
공부/JAVA 2012. 1. 5. 16:16

갑작스럽게 win 2008 r2 서버를 이용해서 JSP 작업을 해야할 일이 생겼는데
알다시피 IIS는 JSP를 지원하지 않기 때문에 톰캣과 IIS를 같이 사용한다 

검색 결과 대부분 isapi 필터를 통해 톰캣과 연동을 시키는데 많은 페이지를 살펴보고 많은 글을 봤지만 실패..-_-




하지만  ! 역시 구글의 힘의 위대하다~!

http://tomcatiis.riaforge.org/ 

이 사이트를 참고하면 isapi 따위도 별도의 설정 필요없이 곧바로 jsp 사용 가능하다 ;;(쌩고생한 몇일이 아깝지만..ㅠㅠ)
톰캣을 win 설치 파일이 아닌 zip 으로 풀어서 C드라이브에 풀어서 사용했을때는 조금 불안정 했는데
톰캣도 일반적인 win 설치 파일을 사용하고 커넥터도 win 설치로 해주면 금방 적용 된다.


그리고 아마 예상하는 구조는 IIS로 html ,asp 등등 처리하고
톰캣 부분에서 JSP를 처리하는것 같다
//폴더도(html은 IIS, JSP는 tomcat에서 읽는다.)

일단 더 테스트를 해봐야겠지만..


'공부 > JAVA' 카테고리의 다른 글

[JSP] MS_SQL 연동  (0) 2012.01.05
PermGen space 에러시  (0) 2011.10.01
posted by 나무사이
:
공부/JAVA 2012. 1. 5. 16:09
1. JDBC 드라이브 다운로드



2. JDBC 드라이브 설정

다운로드 받은 파일을 적당한 위치에서 압축을 푼다.
압축이 완료된 폴더에 sqljdbc.jar, sqljdbc4.jar 두 가지 파일이 있다.
Javs 1.6 이상 버전은 sqljdbc4.jar 파일을 사용하면 된다.

해당 파일을 TOMCAT과 웹서비스 경로에 복사한다.
TOMCAT - %톰캣홈%\lib
WEB  - %웹서비스홈%\WEB-INF/lib
 

3. CLASSPATH 설정

내컴퓨터 > 속성 > 고급 > 환경변수 메뉴에서 시스템 변수를 설정한다.

CLASSPATH : ;%톰캣홈%\lib\sqljdbc4.jar;



4. DB 접속


<%@ page import="java.sql.*" %>


<%

//JDBC 드라이브 연결

try {

String DB_DRIVE = "com.microsoft.jdbc.sqlserver.SQLServerDriver";

 Class.forName(DB_DRIVE);

} catch(ClassNotFoundException ce) {

 System.out.println("JDBC 드라이브 연결 오류 - " + ce);

ce.printStackTrace();

}


//SQL 연결

try {

String DB_IP       = "localhost";

String DB_NAME     = "mwDB";

String DB_USER     = "sa";   

String DB_PASSWORD = "$$aleldjelql";

String DB_URL    = "jdbc:microsoft:sqlserver://" + DB_IP + ":1433;DatabaseName=" + DB_NAME;

 Connection DBConn  = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);

Statement Stmt     = DBConn.createStatement();

} catch(SQLException se) {

 System.out.println("SQL 연결 오류 - " + se);

}

%>
출처 : http://blog.naver.com/PostView.nhn?blogId=wishkjh&logNo=80126049520

 

'공부 > JAVA' 카테고리의 다른 글

[JSP] WIN2008 R2 IIS7.5 + tomcat 5,6,7 연동[isapi 갔다 버려!]  (0) 2012.01.05
PermGen space 에러시  (0) 2011.10.01
posted by 나무사이
: