CustomerProc.java

  1. package cus;

    import java.io.*;
    import java.sql.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.util.Vector;
    import cus.CustomerBean;

    public class CustomerProc extends HttpServlet {
        String url = "jdbc:oracle:thin:@127.0.0.1:1521:cjedu";
        String user = "scott";
        String passwd = "tiger";

        public CustomerProc(){
            try {
                Class.forName("oracle.jdbc.driver.OracleDriver");
                } catch (Exception e) {
                e.printStackTrace();
            }
        }

        public Vector selectAll(){
            Connection con;
            Statement stat;
            CustomerBean c;
            Vector result = new Vector();

            try {
                con = DriverManager.getConnection( url, user, passwd );
                stat = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);

                String sql = "SELECT * FROM customer ORDER BY num";
                ResultSet rs = stat.executeQuery(sql);
                while ( rs.next() ) {
                        String num = rs.getString(1);
                        String name = rs.getString(2);
                        String addr = rs.getString(3);
                        c = new CustomerBean(num, name, addr);
                        result.add(c);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return result;
        }

        public int insertData(String sql){
            Connection con;
            Statement stat;
            int t=0;

            try {
                con = DriverManager.getConnection( url, user, passwd );
                stat = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);

                t = stat.executeUpdate(sql);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return t;
        }

        public int deleteData(String sql){
            Connection con;
            Statement stat;
            int t = 0;

            try {
                con = DriverManager.getConnection( url, user, passwd );
                stat = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);

                t = stat.executeUpdate(sql);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return t;
        }

        public Vector searchData(String sql){
            Connection con;
            Statement stat;
            CustomerBean c;
            Vector result = new Vector();

            try {
                con = DriverManager.getConnection( url, user, passwd );
                stat = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);

                ResultSet rs = stat.executeQuery(sql);
                while ( rs.next() ) {
                        String num = rs.getString(1);
                        String name = rs.getString(2);
                        String addr = rs.getString(3);
                        c = new CustomerBean(num, name, addr);
                        result.add(c);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return result;
        }
    }

 

CustomerBean.java

  1. //data bean : data 입출력을 위한 데이터 출력
    package cus;

    public class CustomerBean {
        private String num = "" ;
        private String name = "";
        private String address = "";

        public CustomerBean() {
        }

        public CustomerBean(String num, String name, String address){
            this.num = num;
            this.name = name;
            this.address = address;
        }

        public void setNum(String num){
            this.num = num;
        }

        public String getNum(){
            return num;
        }

        public void setName(String name){
            this.name = name;
        }

        public String getName(){
            return name;
        }

        public void setAddress(String address){
            this.address = address;
        }
       
        public String getAddress(){
            return address;
        }
    }

 

index.jsp

  1. <%@ page contentType="text/html; charset=euc-kr" %>
    <HTML><HEAD><TITLE> Index.JSP Start your mark!!! </TITLE></HEAD>
          <style type="text/css">
            body {background-color:#e0e0e0; text-align:center;}
            th { background-color:#404040; color:#f8f8f8}
            td { background-color:#A0A0A0; color:#f8f8f8;}
            table {
        </style>
        <BODY>
            <h1> JSP Process Test 를 시작합니다.</h1>
            <h3> 원하는 항목을 선택하여 주세요. </h3>
            <hr>
            <form method=post action="process.jsp"><table border=1 align=center width=>
            <tr><th width=50>선택</th><th>작업내용</th><tr>
            <tr><td align=center><INPUT TYPE="radio" NAME="choice" value="select"></td><td>전체항목보기("SELECT * FROM customer")</td></tr>
            <tr><td align=center><INPUT TYPE="radio" NAME="choice" value="insert"></td><td>새항목 입력하기("INSERT INTO customer VALUES(~~~)")</td></tr>
            <tr><td align=center><INPUT TYPE="radio" NAME="choice" value="delete"></td><td>선택된 항목 삭제하기("DELETE customer WHERE num IN(~~~)")</td></tr>
            <tr><td align=center><INPUT TYPE="radio" NAME="choice" value="search"></td><td>검색을 희망하는 항목을 입력하여 찾기</td></tr>
            </table><input type=submit value="실행"><input type=reset value="취소"></form>
         </BODY>
    </HTML>

IndexJsp.JPG

 

process.jsp(jst:forward 기능 수행)

  1. <%@ page contentType="text/html; charset=euc-kr" %>
    <%@ page errorPage="errorPage.jsp" %>
    <HTML><HEAD><TITLE> JSP Process Test Forward Page </TITLE>
     </HEAD>
     <BODY>
        <!-- index.jsp 에서 radio 의 속성값을 알아오자. -->
        <%
            String value = request.getParameter("choice");
            if ( value.equals("select")){
        %>
                <jsp:forward page="select.jsp" />
        <%
            } else if ( value.equals("insert") ){
        %>
                <jsp:forward page="insert.jsp" />
        <%
            } else if ( value.equals("delete") ){
        %>
                <jsp:forward page="delete.jsp" />
        <%
            } else if ( value.equals("search") ){
        %>
                <jsp:forward page="Search.jsp" />
        <%
            }
        %>
     </BODY>
    </HTML>

 

select.jsp

  1. <%@ page contentType="text/html; charset=euc-kr" %>
    <%@ page import = "java.sql.*, java.util.*" %>
    <%@ page errorPage="errorPage.jsp" %>
    <jsp:useBean id="cus" class="cus.CustomerProc" scope="page" />

    <HTML><HEAD><TITLE> JSP use Bean on JDBC </TITLE></HEAD>
        <style type="text/css">
        body {background-color:#e0e0e0}
        th { background-color:#404040; color:#f8f8f8}
        td { background-color:#A0A0A0; color:#f8f8f8; text-align:center;}
        </style>
     <BODY><center>
        <h1>JDBC Bean Use Result</h1><hr>
        <%
            Vector v = cus.selectAll();
            if ( v.isEmpty() != false ){
                out.println("현재 DB에서 넘겨받은 데이터가 없습니다.");
                //out.println(v.size());
            } else {
        %>
                <table border=1 align=center width=500>
                <tr><th>번호</th><th>이름</th><th>주소</th>
        <%
                for( int i = 0 ; i < v.size() ; i++){
                    cus.CustomerBean cu = (cus.CustomerBean)v.elementAt(i);
                    String num = cu.getNum();
                    String name = cu.getName();
                    String addr = cu.getAddress();
        %>
                    <tr><td><%= num %></td><td><%= name %></td><td><%= addr %></td></tr>
        <%
                }
            }
        %>
        </table><br>
        <a href="index.jsp">초기 화면으로</a>
     </BODY>
    </HTML>

SelectJsp.JPG

 

insert.jsp(입력폼을 통해 입력된 자료를 insertProc.jsp에 전달한다)

  1. <%@ page contentType="text/html; charset=euc-kr" %>
    <%@ page errorPage="errorPage.jsp" %>
    <HTML> <HEAD> <TITLE> Insert data to customer table. </TITLE>
     </HEAD>
           <style type="text/css">
            body {background-color:#e0e0e0; text-align:center;}
            th { background-color:#404040; color:#f8f8f8}
            td { background-color:#A0A0A0; color:#f8f8f8;}
            table {
        </style>
     <BODY>
        <h1>INSERT DATA TO CUSTOMER TABLE</h1>
        <hr>
        <form method=post action="InsertProc.jsp">
        <table border=1 width=500 align=center>
        <tr><th width=60>항목</th><th>입력 항목</th><tr>
        <tr><th>번호</th><td><input type=text name='num' size=60></td><tr>
        <tr><th>이름</th><td><input type=text name='name' size=60></td><tr>
        <tr><th>주소</th><td><input type=text name='addr' size=60></td><tr>
        </table><input type=submit value='입력'><input type=reset value='재작성'><a href="Index.jsp">초기 화면으로</a>
        </form> 
     </BODY>
    </HTML>

InsertJsp.JPG

 

insertProc.jsp

  1. <%@ page contentType="text/html; charset=euc-kr" %>
    <%@ page errorPage="errorPage.jsp" %>
    <HTML><HEAD><TITLE> INSERT process Page </TITLE></HEAD>
    <jsp:useBean id="cp" class="cus.CustomerProc" scope="page" />
        <style type="text/css">
            body {background-color:#e0e0e0}
            th { background-color:#404040; color:#f8f8f8}
            td { background-color:#A0A0A0; color:#f8f8f8; text-align:center;}
        </style>
     <BODY><Center>
        <%
            String num = request.getParameter("num");
            String name = request.getParameter("name");
            String addr = request.getParameter("addr");
            String sql = "INSERT INTO customer Values('" + num + "', '" +name + "','" + addr + "')";
            int result = cp.insertData(sql);

            if ( result == 0 ) {
        %>
            <h1>데이터가 정상적으로 입력되지 않았습니다.</h1><hr>
            입력하신 데이터와 관련한 오류가 발생하였습니다.
            입력하신 내용을 확인해주세요.<br><br>
            입력내용 : <%= sql %> <br><br>
            <a href="Insert.jsp">다시 입력 화면으로</a>
        <%
            } else {
        %>
            <h1>데이터가 정상적으로 입력되었습니다.</h1>
            <a href="Index.jsp">초기 선택 화면으로</a>
        <%
            }
        %>
    </center>
     </BODY>
    </HTML>

 INsertJspAccess.JPG

자료가 정상적으로(무결성 오류없이) 처리되었을 때.

InsertJspException.JPG

DB에 존재하지 않는 검색 사항을 입력했을 경우

InsertJspNoInput.JPG

검색 데이터를 입력하지 않았을 경우 자바스크립트로 실행차단함

 

Delete.jsp

  1. <%@ page contentType="text/html; charset=euc-kr" %>
    <%@ page import = "java.sql.*, java.util.*" %>
    <%@ page errorPage="errorPage.jsp" %>
    <jsp:useBean id="cus" class="cus.CustomerProc" scope="page" />

    <HTML><HEAD><TITLE> JSP use Bean on JDBC </TITLE></HEAD>
        <style type="text/css">
        body {background-color:#e0e0e0}
        th { background-color:#404040; color:#f8f8f8}
        td { background-color:#A0A0A0; color:#f8f8f8; text-align:center;}
        </style>
     <BODY><center>
        <h1>JDBC Bean Use Result</h1><hr>
        <%
            Vector v = cus.selectAll();
            if ( v.isEmpty() != false ){
                out.println("현재 DB에서 넘겨받은 데이터가 없습니다.");
                //out.println(v.size());
            } else {
        %>
                <form method=post action='DeleteProc.jsp'>
                <table border=1 align=center width=500>
                <tr><th>check</th><th>번호</th><th>이름</th><th>주소</th>
        <%
                for( int i = 0 ; i < v.size() ; i++){
                    cus.CustomerBean cu = (cus.CustomerBean)v.elementAt(i);
                    String num = cu.getNum();
                    String name = cu.getName();
                    String addr = cu.getAddress();
        %>
                    <tr><td><input type=checkbox name=num value=<%= num %>></td><td><%= num %></td><td><%= name %></td><td><%= addr %></td></tr>
        <%
                }
        %>
                <tr><td colspan=4><input type=submit value='삭제하기'><input type=reset value='재선택'></td></tr>
                </table></form>
        <%
            }
        %>
    <br>
        <a href="index.jsp">초기 화면으로</a>
     </BODY>
    </HTML>

DeleteJsp.JPG

 

deleteProc.jsp

  1. <%@ page contentType="text/html; charset=euc-kr" %>
    <%@ page errorPage="errorPage.jsp" %>
    <jsp:useBean id="cp" class="cus.CustomerProc" scope="page" />
    <HTML><HEAD><TITLE> DELETE process page </TITLE></HEAD>
        <style type="text/css">
            body {background-color:#e0e0e0}
            th { background-color:#404040; color:#f8f8f8}
            td { background-color:#A0A0A0; color:#f8f8f8; text-align:center;}
        </style>
     <BODY><center>
        <%!
            String sql = "DELETE customer WHERE num IN ('";
        %>

         <%

            String[] values=request.getParameterValues("num");
            if (values != null){
                for(int i = 0; i < values.length; i++) {
                    sql += values[i];
                    if ( i == values.length-1){
                        sql += "'";
                    } else {
                        sql += "','";
                    }
                }
                sql += ")";
            } else {
                sql = "선택하신 항목이 없습니다.";
            }
            int t = cp.deleteData(sql);
        %>
        <h1> 삭제를 위해 선택한 자료들은 다음과 같습니다.</h1>

       
        <%
            if(values != null){
        %>
                <table border=1 width=500>
                <tr><th>선택하신 데이터번호</th></tr><tr><td>
        <%
                for(int i = 0; i < values.length; i++) {
        %>
                <%= values[i] %>&nbsp;&nbsp;
        <%
                }
        %>
                </td></tr></table>
        <%
            }
        %>
        <hr>
        선택하신 <%= t %> 개의 자료는 삭제되었습니다.<br><br>
        <a href=index.jsp %>초기 화면으로</a>
    </center></BODY>
    </HTML>

deleteProcAccess.JPG

 

search.jsp

  1. <%@ page contentType="text/html; charset=euc-kr" %>
    <%@ page errorPage="errorPage.jsp" %>
    <jsp:useBean id="cus" class="cus.CustomerProc" scope="page" />
    <HTML><HEAD><TITLE> Search Process JSP Page </TITLE></HEAD>
         <style type="text/css">
            body {background-color:#e0e0e0}
            th { background-color:#404040; color:#f8f8f8}
            td { background-color:#A0A0A0; color:#f8f8f8; text-align:center;}
        </style>
        <script type='text/javascript'>
            var checkArticle = function checkArticle(){
                var num = document.form1.article.value.length;
                if ( num === 0 ) {
                    alert("데이터를 입력해주세요.");
                    return false;
                } else {
                    return true;
                }
            }
        </script>
     <BODY><center>
     <h1>검색을 희망하시는 항목을 선택하신 후 데이터를 입력해주세요.</h1>
        <hr>
        <form name=form1 method=post action='SearchProc.jsp' onSubmit='return checkArticle()'><table border=1 width=500>
        <tr><th>항목 선택</th><th>원하는 검색 데이터 입력</th></tr>
        <tr><td><select name='attribute'>
                <option value='num'>번&nbsp;&nbsp;&nbsp;&nbsp;호
                <option value='name'>이&nbsp;&nbsp;&nbsp;&nbsp;름
                <option value='address'>주&nbsp;&nbsp;&nbsp;&nbsp;소
                </select>
        </td><td><input type=text name='article' size=55></td></tr>
        <tr><td colspan=2><input type=submit value='검색'>&nbsp;&nbsp;&nbsp;<input type=reset></td></tr>
        </table></form>

     
     </center></BODY>
    </HTML>

SearchJsp.JPG

 

searchProc.jsp

  1. <%@ page contentType="text/html; charset=euc-kr" %>
    <%@ page import = "java.sql.*, java.util.*" %>
    <%@ page errorPage="errorPage.jsp" %>
    <jsp:useBean id="cus" class="cus.CustomerProc" scope="page" />

    <HTML><HEAD><TITLE> This page is Search Result Return </TITLE></HEAD>
        <style type="text/css">
            body {background-color:#e0e0e0}
            th { background-color:#404040; color:#f8f8f8}
            td { background-color:#A0A0A0; color:#f8f8f8; text-align:center;}
        </style>
        <BODY><center>
        <h1> 요청하신 검색의 결과입니다. </h1><hr>

        <%
            String attribute = request.getParameter("attribute");
            String article = request.getParameter("article");
            String sql = "SELECT * FROM customer where " + attribute + " like '%"+article+"%' order by num";
        %>
            <h3> 검색 Query : <%= sql %> </h3><hr>
        <%
            Vector v = cus.searchData(sql);
            if ( v.isEmpty() == true ){
                out.println("<h2>현재 DB에서 넘겨받은 데이터가 없습니다.</h2>");
                //out.println(v.size());
            } else {
        %>
                <table border=1 align=center width=500>
                <tr><th>번호</th><th>이름</th><th>주소</th>
        <%
                for( int i = 0 ; i < v.size() ; i++){
                    cus.CustomerBean cu = (cus.CustomerBean)v.elementAt(i);
                    String num = cu.getNum();
                    String name = cu.getName();
                    String addr = cu.getAddress();
        %>
                    <tr><td><%= num %></td><td><%= name %></td><td><%= addr %></td></tr>
        <%
                }
        %>
                </table>
        <%
            }
        %>
        <br><a href='index.jsp'>초기 화면으로</a>
         </center></BODY>
    </HTML>

InsertJspNoInput(1).JPG

검색 항목을 입력하지 않고 출력하려고 할 경우 발생함

SearchJspNoResult.JPG

입력한 검색 결과가 없을 경우 나타나는 화면

SearchProcResult.JPG

정상적으로 입력되었을 경우 나타나는 화면

 

이 글은 스프링노트에서 작성되었습니다.

아래의 라인부터 또 한번의 라인이 나오는 곳 까지는 root 계정으로 처리를 해준다.  root 계정으로 접속하기 귀찮으면 sudo 선언을 해주고 실행해도 된다. 이것도 귀찮기는 매한가지... 걍 root 계정에서 로그인하여 처리하자.



1. Install JRE or JDK 1.6 - 우분투를 기본 설정으로 설치하면 기본 설치된다(될 것이다, 아마도?).

2. Install the required packages (please follow the Oracle installation guide)
# apt-get install gcc
Do the same for other packages

apt-get install make binutils lesstif2 rpm libmotif3 libaio gawk alien ksh

2.6.9-11 이상의 커널이 필요하다.

#uname -r

필요한 패키지 버전(그 이상도 당연히 가능) -> 대부분 설치되어 있다.
binutils-2.15.92.0.2-10
compat-db-4.1.25-9
control-center-2.8.0-12
gcc-3.4.3-9
gcc-c++-3.4.3-9
glibc-2.3.4-2
glibc-common-2.3.4-2
gnome-libs-1.4.1.2.90-44.1
libstdc++-3.4.3-9
libstdc++-devel-3.4.3-9
make-3.80-5
pdksh-5.2.14-30
sysstat-5.0.5-1
xscreensaver-4.18-5

설치가 안된 패키지가 몇개 있었다. 아래의 명령어를 사용하여 설치가 되지 않은 패키지들을 설치되도록 하자.

$apt-get install gcc binutils libaio1 lesstif2 lesstif2-dev make rpm libc6 libstdc++5 build-essential

3. Create user and groups - 사용자 그룹과 유저를 만든다.

Add the user and change groups to make the installer morecomfortable. Remember, we are tricking the installer to think it’sinstalling on a Red Hat box.링크

# addgroup oinstall
# addgroup dba
# addgroup nobody
# useradd -m oracle -g oinstall -G dba -s /bin/bash
# usermod -g nobody nobody
# passwd oracle  (oracle 계정의 비밀번호 설정)

The usermod command is needed since because when running, theinstaller looks for a user called nobody which is part of a group namednobody (in Ubuntu, the user nobody it’s assigned to nogroup by default).

4. Set shared memory parameters - Oracle 에서 필요한 메모리와 CPU 리소스를 위해 커널 파라미터 수정

# gedit /etc/sysctl.conf
파일을 열고, 파일의 가장 끝 부분에 아래 내용을 복사해서 붙여넣기 한다. 저장 후 파일 닫는다.

fs.file-max = 65535
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144
sysctl.conf 파일은 우분투 시스템이 처음 부팅시 읽어오는 정보이다. 이것을 적용시키기 위해서는 재부팅을 한다.

5. Reload the config file:

# sysctl -p

6.Modify limits.conf  - limit.conf 파일 수정

Add these lines to /etc/security/limits.conf, letting the oracle user use more resources than the defaults allowed.

oracle soft nproc 2047
oracle hard nproc 16383
oracle soft nofile 1023
oracle hard nofile 65535

Make sure the limits.conf is being interpreted as the oracle userlogs in by adding these lines to /etc/pam.d/login. You will want tomake sure that is actually happening, since the defaults are way lowerand you may get all sorts of problems.
limits.conf 파일 수정이 완료되었으면 다음으로

# gedit /etc/pam.d/login
위의 파일을 열어서 제일 아랫 부분 아래의 내용을 추가한다.
session required /lib/security/pam_limits.so
session required pam_limits.so

4.  Make some symlinks.- 환경변수 설정

Apparently, the installer uses absolute paths, so it must find the binaries in the right places.

$ln -s /usr/bin/awk /bin/awk

$ln -s /usr/bin/rpm /bin/rpm

$ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so

$ln -s /usr/bin/basename /bin/basename /bin/basename

Oracle 11g가 설치될 폴더 생성하기(본인은 11g를 설치하여 11g로 변경함)

$mkdir /oracle

$mkdir /oracle/11g

$chown -R oracle:oinstall /oracle

$chmod -R 775 /oracle


그다음 환경변수 설정을 위해 etc밑에 profile을 gedit로 연다(vi로열어도 상관없음)

$gedit /etc/profile

파일을 열었으면.. 파일 가장 아랫부분테 밑에 정보를 복사해서 넣는다.. 파일의 가장 마지막!

export ORACLE_BASE=/oracle

export ORACLE_HOME=/oracle/10g

export ORACLE_SID=orcl10

export PATH=$PATH:$ORACLE_HOME/bin

여기까지 했으면.. 환경변수가 제대로 등록되었나.. 터미널을 열어서 확인을 해본다..

$su - oracle

password:

$echo $ORACLE_BASE

/oracle

$echo $ORACLE_HOME

/oracle/10g

 제대로 나오면 이상없음..

여기까지 했으면.. 환경변수가 제대로 등록되었나.. 터미널을 열어서 확인을 해본다..

 $su - oracle

password:

$echo $ORACLE_BASE

/oracle

$echo $ORACLE_HOME

/oracle/10g

 제대로 나오면 이상없음..



5. Unpack and prepare the installation. - 압축 해제 풀기!! 권한 설정 및 오라클 유저로 앞축을 푼다.

# cd /path/to/zipfile (Oracle 압축 파일을 받은 폴더로 이동한다).
#sudo chown oracle:oinstall Oracle11*.zip
#sudo Oracle11*.zip /home/oracle
# su - oracle
# unzip linux_11gR1b5_database.zip - 파일명은 버전에 따라 달라질 수 있습니다.

# chown -R oracle:oinstall database


6.Turn on the display - runInstaller를 실행하기 전에 xdisplay를 일치시켜줘야 한다는 군요... root 계정이나 oracle 에서 xdisplay를 사용하려고 하면 실행되지 않는 부분을 해결하기 위해서는 아래의 명령어를 본인의 사용계정에서 설정해줘야 합니다. 꼭!! 안그러면 실행 중 오류가 뜹니다.

# sudo -i
xhost +
# su - oracle
# DISPLAY=:0.0; export DISPLAY

7. Start the installer as the oracle user

# su - oracle
# export LANC = C  // 그냥 실행하면 한글이 깨진 설치화면으로 나옵니다. 속편하게 영어로~!!
$ cd /path_to_extracted_files
$ ./runInstaller

8. Install Oracle11g

아래 그림에서 보시는 것처럼

Oracle Base Location : /oracle

Oracle Home Location : /oracle/11g

Global DataBase Name : oracle

사용자 삽입 이미지

Inventory directory 는 /oracle/oraInventory로 설정

System group name 은 dba로 설정

사용자 삽입 이미지

나머지 과정은 Next~ Next~~를 눌러주시면 됩니다.

사용자 삽입 이미지

사용자 삽입 이미지


사용자 삽입 이미지
사용자 삽입 이미지

저는 이상하게... ㅡ_-);; Password Management 가 정상적으로 화면이 나오지 않더군요. 이것과 관련된 내용은 아래의 페이지에서 확인해주세요. 죄송합니다.

http://blog.naver.com/teentiny/60059971301

쭈욱 넥스트가 나오고 다음 창이 나오면, Script to be executed : 경로에 있는 곳으로 가서 sh(스크립트 파일)을 실행시켜주십시오. ^^ 보시다시피 root 계정으로 해주길 원하죠~!? 그렇게 해주세요. ^^

사용자 삽입 이미지

사용자 삽입 이미지

9. Complete Install And System Reboot.

본인 계정으로 로그인 후 터미널을 실행하여 /etc/oratab파일 부분을 수정

사용자 삽입 이미지
보이시는 것처럼 oracle:/oracle/11g:N 을 oracle:/oracle/11g:Y 로 변경해주시면 됩니다.


10. 오라클 리스너의 절대 패스 수정
# gedit /oracle/11g/bin/dbstart
사용자 삽입 이미지
ORACLE_HOME_LISTNER= 부분을
ORACLE_HOME_LISTNER=/oracle/11g
로 설정해 주면 되겠다.
이제.................... 오라클 실행해보자...

oracle 계정에서

$ lsnrctl start

리스너 시작 후에

$sqlplus /nolog

sqlplus>connect orcl as sysdba

~~~

sqlplus>startup




참고사이트 :

http://oracleabc.com/b/?p=167

http://blog.naver.com/teentiny/60059971301

http://blog.naver.com/mswar/90030555968

쿠키(Cookie)

사용자의 ID 혹은 암호까지 기억하는 경우를 보았을 것이다. 이것은 웹 브라우저가 ID 혹은 암호를 사용자의 컴퓨터에 저장하고 있기 때문에 가능하다. 이처럼 웹 서버가 전달한 정보를 웹 브라우저가 컴퓨터에 저장하는 것을 쿠키(Cookie)라고 한다. 쿠키는 다양하게 활용될 수 있는데, 대표적인 사용 예로 사용자 ID와 암호를 기억함으로써 사이트를 편리하게 사용할 수 있도록 하거나 혹은 사용자의 방문 횟수를 기억하돌고 함으로써 사용자의 웹 사이트 사용 유형을 파악하는 것이 있다. 쿠키는 넷스케이프사에서 처음 제안되었고, RFC 2109로 문서화 되었다.

● 관련정보 : http://en.wikipedia.org/wiki/HTTP_cookie (영문)

● 관련정보 : http://ko.wikipedia.org/wiki/HTTP_쿠키 (한글, 간략함. 영문 참조바람)

 

※ 쿠키 : 서버가 자신이 필요한 정보를 클라이언트에 심어놓는 것. 클라이언트가 접속시 자신(서버)이 심어놓은 쿠키 파일을 불러온다. 사용자 ID와 비밀번호, 방문횟수, 사용 패턴등을 분석 가능하다.

230px-Choco_chip_cookie.jpg

  • MS IE : Cookie 라는 폴더
  • 파폭 등은 cookie.txt
  • 쿠키 제한 : 모두 300개 까지만 사용가능
  • 쿠키 최대 크기 : 4KB

 

● 서블릿/JSP는 쿠키를 위해서 Cookie 클래스를 제공한다. 쿠키를 웹 브라우저에 전달하기 위해서는 HttpServletResponse의 addCookie() 메소드를 이용한다.

쿠키 설정하기 절차(심기)

[1]. Cookie 객체를 만든다.

[2]. 쿠키에 속성을 부여한다.

[3]. 쿠키를 전송한다.

Cookie c1 = new Cookie("id", "honeymon");

c1.setMaxAge(-1); // 브라우저가 끄면 사라진다.

res.addCookie(c1);

ex) Cookie(String name, String value) 쿠키의 이름, 값이 필요하다.

  • void setMaxAge(int expiry) 쿠키의 유효한 기간을 설정(단위 : 초)
  • void setValue(String newValue) 새로운 쿠키 값을 설정한다.

    • 정수로 변환시 Integer.parseInt(); 를 사용해준다.

 

Cookie c1 = new Cookie("id", "honeymon");

c1.setMaxAge(60 * 60 * 24 * 365); => 1년간 유지됨

c1.setMaxAge(-1); // 브라우저가 끄면 사라진다.

 

웹 브라우저에 쿠키 전송하기

쿠키의 속성값이 설정되면, 서블릿/JSP는 HttpServletResponse 클래스를 이용해서 웹 브라우저에 쿠키를 설정한다. 이 때 HttpServletResponse으 addCookie() 메소드를 사용한다.

  1. response.addCookie(cookie); --> res.addCookie(c1);

 

쿠키 정보 얻기(뽑기!)

클라이언트에 설정된 쿠키 정보는 웹 브라우저가 다시 웹 사이트를 방문할 때 웹 브라우저에 의해 자동적으로 웹 서버에 전달한다. 쿠키로부터 정보를 얻어 오려면 다음과 같은 절차를 따른다.

[1] 사용자의 요청에서 모든 쿠키를 얻는다.

[2]. 원하는 쿠키를 이름을 통해서 얻는다.

 

 

[3]. 찾은 쿠키로부터 값을 얻는다.

  1. Cookie[] cookies =  request(=req).getCookies();
  2. for ( Cookie mycookie : cookie ) {
       String n = mycookie.getName();
  3. }
    String value = mycookie.getValue();

 

ex) 서블릿/JSP 에서 쿠키 얻기
  1. Cookie[] cookies =  request(=req).getCookies();

 

ex) 쿠키의 이름을 이용해서 원하는 쿠키 찾기
  1. for ( Cookie mycookie : cookie ) {
       String n = mycookie.getName();
    }

 

ex) 쿠키의 값 추출하기
  1. String value = mycookie.getValue();

 

CookieTest.java

  1. import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;

    public class CookieTest extends HttpServlet {
        PrintWriter out;

        protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
            out = res.getWriter();
            res.setContentType("text/html; charset=euc-kr");

            Cookie[] cookies = req.getCookies();

            if ( cookies != null ) {
                for ( Cookie cookie : cookies ) {
                    String name = cookie.getName();
                    String value = cookie.getValue();
                    out.println("Cookie name : "+name+"<br>");
                    out.println("Cookie value : "+value+"<hr>");
                }
                out.println("<a href=CookieTest>다시방문하기</a>");
            } else {
                out.println("No cookies..");
                setCookies(res);
            }
        }

        public void setCookies(HttpServletResponse res){
            Cookie logCookie = new Cookie("login", "honeymon");
            logCookie.setMaxAge(-1);

            Cookie passCookie = new Cookie("pass", "wow");
            passCookie.setMaxAge(-1);

            res.addCookie(logCookie);
            res.addCookie(passCookie);

            out.println("<hr>cookie가 setting 되었습니다.<hr><br>");
            out.println("<a href=CookieTest>돌아가기</a>");
        }

    }

 

CookieTest.java(수정판 : 읽을 때마다 Count를 증가시킴)

  1. import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;

    public class CookieTest extends HttpServlet {
        PrintWriter out;

        protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
            out = res.getWriter();
            res.setContentType("text/html; charset=euc-kr");

            Cookie[] cookies = req.getCookies();

            if ( cookies != null ) {
                for ( Cookie cookie : cookies ) {
                    String name = cookie.getName();
                    String value = cookie.getValue();
                    out.println("Cookie name : "+name+"<br>");
                    out.println("Cookie value : "+value+"<hr>");

                    if ( cookie.getName().equals("count") ) {
                        //value에 1을 더하고 새로운 value를 세팅
                        value = Integer.toString(Integer.parseInt(cookie.getValue()) + 1);
                        //새값이 설정된 쿠키를 브라우저로 전송
                        Cookie countCookie = new Cookie("count",value);
                        res.addCookie(countCookie);

                        //cookie.setValue(value);
                        //res.addCookie(cookie);  이녀석도 된다. ㅡㅅ-)>
                    }
                }
                out.println("<a href=CookieTest>다시방문하기</a>");
            } else {
                out.println("No cookies..");
                setCookies(res);
            }
        }

        public void setCookies(HttpServletResponse res){
            Cookie logCookie = new Cookie("login", "honeymon");
            logCookie.setMaxAge(-1);

            Cookie passCookie = new Cookie("pass", "wow");
            passCookie.setMaxAge(-1);

            Cookie countCookie = new Cookie("count","0");
            countCookie.setMaxAge(-1);

            res.addCookie(logCookie);
            res.addCookie(passCookie);
            res.addCookie(countCookie);

            out.println("<hr>cookie가 setting 되었습니다.<hr><br>");
            out.println("<a href=CookieTest>돌아가기</a>");
        }

    }

CookieTestRun.JPG CookieTest.JPG

이 글은 스프링노트에서 작성되었습니다.

이 작업을 하기 위해 필요한 사전 준비
1. javaFX SDK 설치하기 : http://java.ihoney.pe.kr/34
2. 넷빈 설치하기 : http://java.ihoney.pe.kr/35
3. javafx.com 에서 넷빈용 플러그인 설치하기 : http://www.javafx.com/downloads/windows.jsp
 - 현재는 윈도우와 맥 용만 제공되고 있습니다. ㅡㅅ-)>



이클립스도 그렇지만, 넷빈도 Procject를 생성해야지 fx파일을 생성해서 실행해 볼 수가 있습니다. file -> new Procject 클릭하세요. ^^
간단하게 프로젝트명을 입력하고 Finish를 누릅니다. ^^
Create Main File을 생성하시면, 다음과 같이 기본 fx가 생성되어 나타납니다.

/*
 * Main.fx
 *
 * Created on 2009. 5. 24, 오후 10:19:36
 */

package javafxapplicationproject;

import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.text.Text;
import javafx.scene.text.Font;

/**
 * @author Honeymon
 */

Stage {
    title: "Application title"
    width: 250
    height: 80
    scene: Scene {
        content: Text {
            font : Font {
                size : 16
            }
            x: 10, y: 30
            content: "Application content"
        }
    }
}
위의 코드를 JavaFX에서 실행하면 아래처럼, 웹브라우저에 Application content 라는 내용이 나타납니다. 마치 프로그래밍 언어의 'Hello, World'와 같다고 할 수 있겠죠. ㅡㅅ-);; 이렇게 하니까 성의가 없어보이는군요!!! Hello, world로 해줘도 되었는데... 그냥 썼으니... 이 귀차니즘이란!!!

자, 이번에는 동그라미를 그려보도록 하겠습니다. ^^
/*
 * Main.fx
 *
 * Created on 2009. 5. 24, 오후 10:19:36
 */

package javafxapplicationproject;

import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.text.Text;
import javafx.scene.text.Font;
import javafx.scene.shape.Circle;
import javafx.scene.paint.Color;

/**
 * @author Honeymon
 */

Stage {
    title: "Application title"
    width: 250
    height: 80
    scene: Scene {
            content: Circle {
        centerX: 100, centerY: 100
        radius: 40
        fill: Color.YELLOW
    }

    }
}
참 쉽죠잉~~?? ㅡㅅ-);; 기본 예제는 사용하는 방법을 알려주기 때문에 쉽지요. 거기서 응용을 들어가면... OTL...
이제 자바스크립트를 열심히 배워줘야겠습니다. 훗~~ 모두들 ^^ 즐거운 한주 보내세요.
2009년 5월 23일 토요일, 데브멘토에서 주관하고 있는 DTFE(개발자 페스티벌)의 세미나중 하나인 JavaFX(자바모델링, 윤익환님 강연) 세미나가 있어서 도곡역에 위치한 군인공제회 건물을 향했습니다. ㅡㅅ-);; 저 간판을 보고 잠시 방황했습니다. 표지판이 뭐 저래!!

이 건물에는 IBM이 입주해있습니다. ㅡㅅ-)>
IBM가 DTFE를 협찬하면서, 세미나 전후에 자사의 서비스 들을 소개하는 경우를 보게되는군요. 좋은 내용들이어서 크게 거부감을 느끼거나 하지는 않았습니다. ^^ 자~ 강연이 있는 21층(발송된 문자에는 71층!!! 이런 고층빌딩이!!)으로 향했습니다.
IBM 연구소에서 하는 강연이었기 때문에, 보시다 시피, IBM Badge가 있는 직원만 이용할 수 있다고 합니다. 그래서 세미나 참관객들이 엘리베이터에 타면, 진행요원들이 재빠르게 탑승해서 카드를 찍어주더군요. ㅎㅎ. ㅡㅅ-) 뭔가 있어보였어요.

이번에 IBM에서 밀고 있는 슬로건이더군요. 보다 스마트한(효율적이고 지능적인... 그런 느낌?) 시스템을 개발하여 지구를 바꿔보겠다는 그런 내용인 듯 했습니다. ㅎㅎ 여전히 영어가 짧은 관계로 대략 그런 느낌을 받을 뿐이었습니다. OTL... 세계 정복을 하기 위해서는 영어는 필수인 듯 합니다. 그런 다음에, 한국어를 세계 공통어로 만들어버리겠습니다. 훗~!!
관련내용 : http://www.ibm.com/ibm/ideasfromibm/us/smartplanet/topics/healthcare/20090223/index1.shtml


자~!! 세미나 현장으로 들어가볼까요~? ^^


먼저 IBM의 윤서익 차장님이 IBM의 SMARTER PLANET 에 대해서 설명하셨습니다. 좋은게 좋은거죠!!


조금 일찍 들어간 탓에 사람은 그렇게 많지는 않았습니다. 시작하기 직전에 우르르 올라오시더군요. ^^



제가 요즘 읽고 있는 더글라스 크락포드 님의 JavaScript The Good Parts 라는 책 입니다. 살짝 맛만 봤던 JavaScript의 정수를 모아놓은 자바 정석이라고 할 수 있겠군요. ㅡㅅ-);; JavaScript와 관련된 내용은 (http://java.ihoney.pe.kr/4)을 참조해주세요. ^^ 먼저 말씀드리자면, JavaFX를 제대로 활용하기 위해서는 스크립트 언어(제 생각에는 JavaScript를 기반으로 하는 듯)를 잘 익혀야 합니다.
저의 경우에는 OpenAPI를 이용해서 매쉬업 프로그램을 만들어보고 싶어서 뒤늦게 시작하고 있는데, 나쁘지 않은 선택인 것 같습니다. ^^ 여러분들도 JavaFX를 공부해보세요!!
자바스크립트 핵심 가이드
카테고리 컴퓨터/IT
지은이 더글라스 크락포드 (한빛미디어, 2008년)
상세보기



강연이 시작하기 전, 빔프로젝트가 뿌려주는 동영상에서는 반복적으로 'I'm IBMER'라고 외치더군요. ㅡㅅ-);; 머릿 속에 각인되어버렸습니다. 나도 아이비에머가 될 것 같아요. ㅎㅎ.


오늘 세미나 강연자인 고덕한 님입니다. 좋은 인상으로 말씀하시는게 상당히 리드미컬하시더군요. ^^ 22기 스터디 그룹을 모집하고 계시답니다(http://www.javamodeling.com/index.jsp). 관심있으신 분은 참석하여보시기 바랍니다. ^^; 세미나 자료를 얻고 싶어서 가입했는데 아직 관련한 자료는 안올리셨나봐요?


오늘의 주제인 JavaFX 입니다. JavaFX에 대해서는
http://www.sun.com/software/javafx/index.xml
http://www.javafx.com/
http://java.ihoney.pe.kr/9
http://java.ihoney.pe.kr/26
의 내용을 참조해 주세요. ^^


핸드폰으로 찍은 사진이라 화질이 좋지 못한 점은 양해 부탁드립니다. 강연을 마치고 나니까, 저도 스터디를 다시 시작해야겠구나라는 생각을 하게 되었습니다. ^^; 개인적으로 하고 있기는 하지만, 개인이 할 수 있는 것의 한계가 곧 나타날 것이고 그걸 극복할 수 있는 방법은 그룹 스터디를 통해서 다른 사람들과 지식을 공유하는 방법일 것입니다. 우선은 제가 있는 기술교육센터에서 다시한번 조성을 해봐야겠습니다. ^^

  전체적으로 유익한 강연이었습니다. JavaFX를 구현하는 방법을 조금이라도 감을 잡을 수 있었으니까요. 강연을 듣고 집에오자마자 netbeans를 설치하였습니다. NetBeans 설치방법은 (http://java.ihoney.pe.kr/35)을 참조하시면 손쉽게 하실 수 있을 겁니다. ㅡㅅ-) 어렵지 않아요. 다운 받아서 실행하고 다음다음~~만 눌러주시면 됩니다. ^^




이상으로 JavaFX 세미나에 관한 내용을 마칩니다. ^^
그럼 다음 글은 JavaFX를 이용해서 간단하게 구현한 것을 보여드리겠습니다. ㅡㅅ-)b

'Java > Language' 카테고리의 다른 글

09/05/22 쿠키  (0) 2009.05.25
허니몬, JavaFX 예제 만들기  (0) 2009.05.24
Java IDE, NetBeans를 설치하다.  (0) 2009.05.24
JavaFX SDK 1.1 설치하기  (0) 2009.05.24
j2ee API DOCs, 자바EE 한글화 API 문서(1.3.1 버전)  (0) 2009.05.21

+ Recent posts