상세 컨텐츠

본문 제목

[펌]Eclipse , Tomcat Server, Oracle DB 연동하기

IT 세상/자바세상

by 이현민 (지후지율아빠) 2010. 1. 25. 15:49

본문


 

Eclipse 에서 Server 사용하기(Tomcat)

 

 

JavaEE Perspective 로 온다.

 

Window -> Preferences 에서 Server 항목에 Runtime Envionment 항목에서 add를 눌러 해당

 

Tomcat Server를  지정해 준다. Project 생성 시 web - dynamic web Project를 생성한다.

 

 src 부분에는 소스파일을 위치하고 WebContent 부분에는 작성한 html 파일이 위치한다. build 부분

 

에는 컴파일된 class 파일이 위치한다. 이 과정 후 deploy를 하게 되면 Tomcat에 해당 파일이 복사

 

되어 실행하게 된다. deploy이의 경우 해당 프로젝트를 Export 하여서 web의 *.war 파일로 해당

 

파일을 압축하여 Tomcat의 web-apps에 올리면 된다. 이후 Tomcat 서버를 시작하게 되면 자동으로

 

압축이 해제되어 Context가 설정되며 해당 폴더에 파일이 위치하게 된다.

 

Eclipse에서 Servlet 파일을 생성하게 될 경우 해당 Servlet의 정보가 web.xml에 등록이 된다.

 

Eclipse 에서 Servlet 파일을 지우게 될 경우 web.xml에 있는 해당 정보를 삭제해주어야 한다.

 

<servlet> ~ </servlet>과 <servlet mapping> ~ </serlvet-mapping> 을 삭제해주어야 한다.

 

Client 서비스 페이지에서 form action을 통한 servlet 이동시 해당 정보가 브라우저에 표시되면

 

안되기 때문에 서비스 방식을 Post 방식으로 한다. 또한 경로 지정 시에

 

"http://localhost:9000/memberservlet/servlet/com.java.member.MemberServlet" 의 경로를

 

아래와 같이 web.xml의 mapping에 의해 줄여서 사용할 수 있다.

 

"http://localhost:9000/memberservlet/MemberServlet"

 

위와 같은 내용을 다시

 

"/memberservlet/MemberServlet" 와 같이 더 줄여서 사용할 수 있다.

 

 

 

Eclipse 에서 Oracle DB 연동하기

 

 

 

www.easyeclipse.org 에 plug in 파일을 받아야 한다. Database management and persistence

 

항목에서 QuantumDB 항목을 다운 받는다. 설치 시 Eclipse가 설치된 폴더를 지정해 주며 이 경로에

 

한글 경로가 존재하면 안된다. 설치 후 Eclipse를 재 실행하면 Perspective에서 Other 항목에

 

Quantum DB 항목이 존재하는 것을 확인할 수 있다.

 

해당 Perspective를 선택한 후 왼쪽에 DB가 표현된다. 처음의 경우 우측 클릭 new BookMark 클릭

 

add driver를 선택하여 사용하고자 하는 해당 드라이버를 로딩한다.

 

 

개인 회원 가입시 정보 입력

 

기본 개인 정보 보관 Table 작성 (Oracle DB 사용)

 

create table member(  //테이블 이름은 member
name varchar2(30) not null, //이름 저장. null 허용 하지 않는다.
id varchar2(30) primary key not null, //기본키 설정. 중복 id 존재하지 않는다.
pass varchar2(30) not null, //password null 허용 안함
gender varchar2(10),
email varchar2(30),
phone varchar2(30),
address varchar2(4000), //주소값 지정 최대 필드 4000 설정
logtime date); //저장 시간 설정

 

========================= 회원 입력 폼 작성. member.html ==============================


<html>
<head>
<title>계정 만들기</title>
<style> //style 을 사용하여 화면 구성을 변경한다.
td {color:green; font-size:13pt;} //td 안의 모든 글색상을 green 설정. 글씨 크가 13pt 설정
</style> //style 끝
</head>
<body>

 

//image 삽입 테그. 경로지정을 정확해야 한다. 상대 주소 및 절대 주소를 사용할 수 있다
<center><img src="../image/logo.gif"></img></center>
<center><h2><b>&nbsp;&nbsp;&nbsp; 회원 가입</b></h2></center>

 

//form 지정. 서비스 방식은 post 방식 action 시 주소는 줄여서 아래와 같이 사용가능
<form method="post" action="/memberservlet/MemberServlet">
<table border="0" align="center">
<tr><td align=right><b> *이름 </b></td>
<td><input type=text name=name size=27></td>
</tr>
<tr><td align=right><b> *아이디 </b></td>
<td><input type=text name=id size=27></td>
</tr>
<tr><td align=right><b> *패스워드 </b></td>
<td><input type=password name=pass size=30></td>//input  타입을 password로 설정시
</tr>                                                                      //입력시 정보가 보이지 않는다
<tr><td align=right><b> *재입력 </b></td>
<td><input type=password name=repass size=30></td>
</tr>
<tr><td align=right><b>성별  </b></td>
<td align=center><input type=radio name=gender value="남자" checked> 남
    <input type=radio name=gender value="여자"> 여
</td>
</tr>
<tr><td align=right><b> 이메일 </b></td>
<td><input type=text name=email1 size=10> @
 <select name=email2>
 <option>naver.com</option>
 <option>nate.com</option>
 <option>hanmail.net</option>
 </select>
</td>
</tr>
<tr><td align=right><b> 연락처  </b></td>
<td><select name=phone1>
 <option>011</option>
 <option>016</option>
 <option>019</option>
 </select> -
 <input type=text name=phone2 size=6> -
    <input type=text name=phone3 size=8>
</td>
</tr>
<tr>
<td align=right><b> 주소지 </b></td>
<td><input type=text name=addr1 size=28 readonly><br>//readonly속성을 설정하면 글을

 <input type=text name=addr2 size=28>       //쓸 수 없다. 주소 지정시 우편번호에 의한 찾기
</td>
</tr>
<tr>
<td></td>
<td>
 <input type="submit" value="보내기"></input>
 <input type="reset" value="다시작성"></input>
</td>
</tr>
</table>
</form>

</body>
</html>

 

========================= 회원 입력 폼 끝. member.html ==============================

 

==================== 회원 입력 처리 servlet. MemberServlet.java ======================

 

package com.java.member;

 

import java.io.IOException;

import java.io.PrintWriter;

import java.io.UnsupportedEncodingException;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.sql.Statement;

 

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

public class MemberServlet extends HttpServlet {

 

  protected void doPost( //post 서비스 방식

    HttpServletRequest request,HttpServletResponse response)

           throws ServletException, IOException {

                          

     //1 입력받기       

     //Client로 부터 얻어온 데이터를 인코딩 하여 저장한다.

     String name=toKor(request.getParameter("name"));

     String id=request.getParameter("id");

     String pass=request.getParameter("pass");

     String repass=request.getParameter("repass");

     String gender=toKor(request.getParameter("gender"));

     //하나의 문장으로 연결하여 만든다.

     String email=request.getParameter("email1")+" @ "+

                  request.getParameter("email2");

     String phone=request.getParameter("phone1")+" - "+

                  request.getParameter("phone2")+" - "+

                  request.getParameter("phone3");

     String address=toKor(request.getParameter("addr1"))+

                    toKor(request.getParameter("addr2"));

            

     int flag=1;//패스워드 재입력이 틀린 경우 사용할 flag 변수

     //패스워드 재입력을 입력하지 않거나 패스워드가 같지 않은 경우 0 set

     if(repass.equals("") || !pass.equals(repass))

         flag=0;

            

      //2 DB 보내기

      //드라이버 로딩 -> 컨넥션 -> Statement 보내기

      int su=0;

      if(flag==1){ //패스워드 입력이 정상일 경우만 실행

         Connection conn=null;

         Statement stmt=null;

         String sql="insert into member values('"

            +name+"','"+id+"','"+pass+"','"+gender+"','"

            +email+"','"+phone+"','"+address+"',sysdate)";          

         try{

           Class.forName("oracle.jdbc.driver.OracleDriver");

           conn=DriverManager.getConnection(

           "jdbc:oracle:thin:@localhost:1521:orcl","scott","tiger");

           stmt=conn.createStatement();

           su=stmt.executeUpdate(sql);

           }catch(Exception e){e.getStackTrace();

           }finally{

             try{

               stmt.close();

               conn.close();

           }catch(SQLException e1){e1.getStackTrace();}

           }//finally

      }//if

                          

      //3 응답하기

      response.setContentType("text/html;charset=euc-kr");

      PrintWriter out=response.getWriter();

      out.println("<html><body>");

      out.println("<center>");                     

      if(su!=0){ //명령이 정상적으로 실행된 경우

         out.println(name+" 회원가입을 축하 드립니다.<br>");

         out.println("정상적인 서비스를 사용하실 있습니다.<br>");

      }else{

         //반드시 입력하는 * 항목을 입력하지 않은 경우

         if(name.equals("")||id.equals("")||pass.equals"))

            out.println("* 표시 항목은 반드시 기입하셔야 합니다.<br>");

         //입력한 패스워드와 재입력이 같지 않는 경우

         else if(flag==0)

            out.println("패스워드와 재입력 패스워드가 일치하지 않습니다.<br>");

          //위 경우를 제외한 경우는 중복 아이디로 인한 경우밖에 없다.

         else

            out.println("중복되는 아이디가 이미 있습니다.<br>");

         out.println("회원가입이 취소되었습니다.");

         out.println("다시 작성해 주세요.<br><br>");

         out.println("<a href='javascript:history.back()'>

                    다시 작성하러 가기</a>"); //뒤로 바로 가기 작성

      }//if                  

      out.println("</center>");

      out.println("</body></html>");

      out.close(); //출력 stream을 닫는다

  }//doGet

 

   public String toKor(String src){//한글 문자 인코딩 메서드

      String tmp=null;

      try {

        tmp=new String(src.getBytes("8859_1"),"euc-kr");

      } catch (UnsupportedEncodingException e){

           e.printStackTrace();

      }//try

      return tmp;

  }//toKor

}//class

 

 

 

반응형

관련글 더보기