일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- Session쿠키
- Persistence 쿠키
- PrepareStatement란?
- ServletContext 메서드
- Tomcat DataSource 설정
- 세션트래킹 이란
- DataSource이란?
- ConnectionPool이란?
- 자바 웹을 다루는 기술
- 오라클 데이터베이스 접속
- 서블릿에서 초기화하는방법
- ServletConfig란
- 스크립트 요소 예제
- load-on-startup
- 이클립스 톰캣 DataSource사용방법
- 쿠키실행과정
- Statement 단점
- JNDI란
- ClassPath 경로
- 쿠키 종류
- Configure build path
- web.xml에 load-on-startup 설정
- 애너테이션으로 서블릿에서 초기화
- Project facet java version 10 is not supported
- 쿠키API
- JRE라이브러리 깨짐
- 서블릿과 오라클 연동
- 쿠키생성위치
- import 오류
- DataSource 설정
- Today
- Total
백문이불여일타
Jsp&Servlet:: 서블릿 과 오라클 연동 하는법 _실습포함 본문
오늘은 서블릿에서 데이터베이스와 연동하여 조회한 데이터를 얻은 후 클라이언트의 웹 브라우저로
응답하는 과정을 알아본다.
★TIP
서블릿의 비즈니스 처리 기능을 이해하려면 우선 데이터베이스 접근 명령어인 SQL문을
어느정도 알아야한다.
사전에 데이터베이스 이론이 부족하면 온라인 강의나 책을 통해 자바 데이터베이스 기능을 먼저 숙지한뒤
공부하는것이 좋다
서블릿의 데이터베이스 연동과정
서블릿에서 데이터베이스와 연동하는 과정은 자바의 데이터베이스 연동과정과 같다.
클라이언트로부터 요청을 받으면 서블릿은 SQL문을 사용해 데이터베이스에 접근하여 작업을 한다.
이 과정에서 DAO와 VO클래스가 사용된다.
SQL테이블 생성방법
먼저 회원 정보를 저장하는 테이블의 이름명칭을 t_member 로 정하겠다 !!
NO | 속성 이름 | 컬럼 이름 | 자료형 | 크기 | 유일키 | NULL | 키 | 기본값 |
1 | ID | id | varchar2 | 10 | Y | N | 기본 키 | |
2 | 비밀번호 | pwd | varchar2 | 10 | N | |||
3 | 이름 | name | varchar2 | 50 | ||||
4 | 이메일 | varchar2 | 50 | N | ||||
5 | 가입일자 | joinDate | varchar2 | N |
회원 정보 테이블을 생성 한후 회원정보를 추가하여 웹 브라우저에서 서블릿으로 요청하면
데이터베이스 회원(t_member)테이블와 연동해 회원 정보를 웹 브라우저로 출력하는 작업을 진행해보겠다.
1. 먼저 SQL Developer에서 회원테이블과 회원 정보를 입력하기 위해 SQL Developer를 실행한다.
왼쪽 메뉴의 + 를 클릭한후 데이터베이스 연결정보 설정한다
설정을 했으면 꼭 테스트(T) 를 눌러 왼쪽에 상태확인이 성공 이 나와야 정상 접속된다
2. 접속한 후 생성되는 워크시트에 다음과 같은 테이블 생성 SQL문을 입력한다.
--회원 테이블 생성 create table t_member( id varchar2(10) primary key, pwd varchar2(10), name varchar2(50), email varchar2(50), joinDate date default sysdate); --회원 정보 추가 insert into t_member values('hong','1212','홍길동','hong@gmail.com',sysdate); insert into t_member values('lee','1212','이순신','hong@gmail.com',sysdate); insert into t_member values('kim','1212','김유신','kim@jweb.com',sysdate); --영구반영하기위해 실행 commit; --테이블에서 회원정보 조회 select*from t_member; |
3. 왼쪽상단에 녹색버튼 클릭해 SQL문 실행한다.
4.commit; 도 해준다
5. select*from t_member; 조회하면 회원 정보가 표시된다.
6. 이클립스에서 만든 프로젝트에서 회원 정보를 조회한다.
새 프로젝트 pro07을 생성한다음 오라클 데이터베이스와 연동하는데 필요한 드라이버인
ojdbc6.jar 를 프로젝트의 /WebContent/WEB-INF/lib 폴더에 복붙한다!!
★★TIP
오라클드라이버는 아래 링크를 클릭해 다운받을수 있다 고고!!
https://www.oracle.com/technetwork/apps-tech/jdbc-112010-090769.html
7. sec01,ex01 패키지를 만들고 다음과 같이 회원 조회와 관련된 자바 클래스 파일인 MemberDAO,MemberServlet,MemberVO클래스를 생성한다.
8. 브라우저의 요청을 받는 MemberServlet 클래스를 작성한다
package sec01.ex01;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Date;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/member")
public class MemberServlet extends HttpServlet {
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>");
}
}
9. MemberDAO 클래스를 작성한다.
회원정보SQL문을 실행해서 조회한 레코드들의 컬럼 값을 다시 MemberVO 객체의 속성에 설정한다음
ArrayList에 저장하고 호출한곳으로 반환한다.
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 = "비밀번호입력란";
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();
}
}
}
10. MemberVO클래스를 작성한다
값을 전달하는 데 사용되는 VO(Value Object)클래스이다.
테이블에서 조회한 레코ㅡ의 컬럼 값을 속성에 저장해야 하므로
컬럼 이름과 동일한 자료형과 이름으로 속성을 선언하고 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;
}
}
11. 실행결과
▼ 콘솔창 실행시
'Jsp' 카테고리의 다른 글
jsp&Servlet:: ServletContext의 메서드기능 (0) | 2019.08.20 |
---|---|
jsp&servlet:: ServletContext란 (0) | 2019.08.20 |
서블릿 비즈니스 처리작업 이란? (0) | 2019.07.19 |
[Jsp/Servlet]Jsp페이지 예외처리하기_실습 (0) | 2019.07.11 |
[Jsp/Servlet]스크립트요소_내장객체기능(out 내장객체 실습) (0) | 2019.07.11 |