백엔드/웹개발
[이클립스/웹개발]서블릿의 오라클 데이터베이스 연동
김곰댕
2022. 2. 22. 12:53
728x90
1. DB 준비
1. SQL Developer 실행
2. 아래와 같이 코드를 입력하여 회원 테이블 생성
create table t_member
(
id varchar2(10) primary key,
pwd varchar2(10),
name varchar2(50),
email varchar2(50),
joinDate date default sysdate
);
3. 테이블안에 데이터 추가
commit을 사용해야 데이터가 영구적으로 반영됨
insert into t_member
values('hong', '1212', '홍길동', 'hong@gmail.com', sysdate);
insert into t_member
values('lee', '1212', '이순신', 'lee@test.com', sysdate);
insert into t_member
values('kim', '1212', '김유신', 'kim@jweb.com', sysdate);
commit;
4. 데이터가 잘 추가되었는지 select문으로 확인
select * from t_member;
2. 이클립스 서블릿으로 DB연동
1. New -> Dynamic Web Project 생성
2. 아래와 같이 프로젝트 구성 후 Next
3. Generate web.xml deployment descriptor 체크 후 Finish
4. 서블릿 사용을 위해 프로젝트이름 오른쪽클릭 -> Build Path -> Configure Build Path... 클릭
5. Java Build Path -> Libraries -> Classpath -> Add External JARs... 클릭
6. tomcat servlet-api 경로 찾은 후 클릭 -> 열기
7. 아래와 같이 추가되었다면 Apply and Close
8. 오라클과 연동하는데 필요한 드라이버인 ojdbc경로를 찾음
C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib
9. pro07 아래의 경로에 ojdbc6복사 붙여넣기
10. New -> Servlet
11. 아래와 같이 작성후 Next
12. member로 매핑 후 Next
13. doGet만 사용할것이기 때문에 체크 후 Finish
14. 방금 생성한 서블릿클래스에 아래와 같은 내용 입력
package sec01.ex01;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Date;
import java.util.List;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@WebServlet("/member")
public class MemberServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out=response.getWriter();
MemberDAO dao=new MemberDAO();
List<MemberVO> list=dao.listMembers();
out.print("<html><body>");
out.print("<table border=1><tr align='center' bgcolor='lightgreen'>");
out.print("<td>아이디</td><td>비밀번호</td><td>이름</td><td>이메일</td><td>가입일</td></tr>");
for (int i=0; i<list.size();i++){
MemberVO memberVO=(MemberVO) list.get(i);
String id=memberVO.getId();
String pwd = memberVO.getPwd();
String name=memberVO.getName();
String email=memberVO.getEmail();
Date joinDate = memberVO.getJoinDate();
out.print("<tr><td>"+id+"</td><td>"+
pwd+"</td><td>"+
name+"</td><td>"+
email+"</td><td>"+
joinDate+"</td></tr>");
}
out.print("</table></body></html>");
}
}
15. New -> Class
16. 아래와 같이 작성 후 Finish
17. 방금 생성한 MemberDAO클래스에 아래와 같은 내용 입력
DAO ? Data Access Object의 약어로서 실질적으로 DB에 접근하는 객체
DB를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트를 말한다.
DB에 대한 접근을 DAO가 담당하도록 하여 데이터베이스 엑세스를 DAO에서만 하게 되면 다수의 원격 호출을 위한 오버헤드를 VO나 DTO를 통해 줄일 수 있고 다수의 DB 호출 문제를 해결할 수 있다.
package sec01.ex01;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class MemberDAO {
private static final String driver = "oracle.jdbc.driver.OracleDriver";
private static final String url = "jdbc:oracle:thin:@localhost:1521:XE";
private static final String user = "scott";
private static final String pwd = "tiger";
private Connection con;
private Statement stmt;
public List<MemberVO> listMembers() {
List<MemberVO> list = new ArrayList<MemberVO>();
try {
connDB();
String query = "select * from t_member ";
System.out.println(query);
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
String id = rs.getString("id");
String pwd = rs.getString("pwd");
String name = rs.getString("name");
String email = rs.getString("email");
Date joinDate = rs.getDate("joinDate");
MemberVO vo = new MemberVO();
vo.setId(id);
vo.setPwd(pwd);
vo.setName(name);
vo.setEmail(email);
vo.setJoinDate(joinDate);
list.add(vo);
}
rs.close();
stmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
private void connDB() {
try {
Class.forName(driver);
System.out.println("Oracle 드라이버 로딩 성공");
con = DriverManager.getConnection(url, user, pwd);
System.out.println("Connection 생성 성공");
stmt = con.createStatement();
System.out.println("Statement 생성 성공");
} catch (Exception e) {
e.printStackTrace();
}
}
}
18. 패키지에 클래스를 하나 더 추가
19. 방금 생성한 MemberVO클래스에 아래와 같은 내용 입력
DTO(Data Transfer Object)는 VO(Value Object)로 바꿔 말할 수 있으며 DTO와는 read only라는 속성이 있다는 차이점이 있다. VO는 관계 데이터 베이스의 레코드에 대응되는 자바 클래스이며, 형태는 db 레코드를 구성하는 필드들을 VO의 Attribute로 하고 해당 변수에 접근할 수 있는 Getter, Setter 메소드의 조합으로 클래스가 형성되어진 클래스이다.
package sec01.ex01;
import java.sql.Date;
public class MemberVO {
private String id;
private String pwd;
private String name;
private String email;
private Date joinDate;
public MemberVO() {
System.out.println("MemberVO 생성자 호출");
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Date getJoinDate() {
return joinDate;
}
public void setJoinDate(Date joinDate) {
this.joinDate = joinDate;
}
}
20. 서버에 프로젝트를 추가하기 위해 Server -> Tomcat v10.0 .... 오른쪽클릭 -> Add and Remove... 클릭
21. Add를 사용해 pro07을 서버에 추가
22. 홈페이지 주소창에 IP주소:포트번호/프로젝트이름/매핑이름 작성후 엔터
아래와 같이 DB에서 작성한 테이블의 내용이 웹페이지에 출력되는것을 확인할 수 있음
728x90