본문 바로가기

Java, Spring/06일

6일차 02

커넥션은 해봤지..

이제 데이터를 받아와 뿌려보자..

package jdbc;
 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement;
 
public class JdbcTest { 
    public static void main(String[] args) { 
        Connection cn = null;         
        Statement st = null; 
        ResultSet rs = null; 
        
        //커넥션 개체로 접속 
        try { 
            Class.forName("oracle.jdbc.OracleDriver"); 
            cn = DriverManager.getConnection( 
                    "jdbc:oracle:thin:@localhost:1521:xe", "oraclejava", "oraclejava"); 
            
            st = cn.createStatement(); 
            rs = st.executeQuery("select last_name, salary from employees "); 
            
            System.out.println("\t[급여 명세표]"); 
            System.out.println("=============================="); 
            System.out.println("이름\t급여"); 
            
            while(rs.next()){                
                System.out.print(rs.getString("last_name")+ "\t"); 
                System.out.print(rs.getInt("salary")+ "\n");    
            } 
            System.out.println("==============================");            
        } catch (Exception e) { 
            e.printStackTrace(); 
        } finally { 
            //자원해지(반드시 만든 순서의 역순으로) 
            if (rs != null) try { rs.close();} catch (SQLException e) {} 
            if (st != null) try { st.close();} catch (SQLException e) {} 
            if (cn != null) try { cn.close();} catch (SQLException e) {} 
        }    
    } 
}

CRUD(Create, Read, Update, Delete :삽입, 삭제, 수정, 조회)

  • executeQuery : Select (데이터의 변경이 가해지지 않을 때)
  • executeUpdate : Insert, Update, Delete (데이터의 변경이 가해질 때)

쿼리를 오라클에 던지면 오라클 옵티마이저가 쿼리를 해석 데이터를 넘겨줘.

받을때 ResultSet으로 받아.

Statement 인터페이스는 단점

- SQL쿼리를 가져오거나 실행을 할 때 변수를 줄 경우 문자열 자체가 조작될 수 있다..

이제 같은 프로그램을 jsp로 짜보자..

webdev\WebContent 밑에 jdbc폴더 만들고 jdbcTest.jsp 파일 만들어.

jsp에서 java코드를 작성할 때는 <%.. java code.. %> : 스크립트

jsp에서 import 마우스 대거나, ctrl-shift-o로 안돼.

미리 타이핑을 하거나.. 바로 뒤에서 ctrl+space눌러줘.

html의 주석 : <!-- --> 여기엔 중요한 정보를 보여주면 안돼.. 소스보기에서 보여..

jsp의 주석 : <%%>영역안에서  // /* */ /** */  or <%— %>

 

System.out.println 대신에 jsp 내장객체인 out.println만 쓰고

한줄내림 </br> 일일이 붙여줘야지..

<%@page import="java.sql.*" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
Connection cn = null;
Statement st = null;
ResultSet rs = null;

try {
	Class.forName("oracle.jdbc.OracleDriver");
	
	cn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "oraclejava", "oraclejava");
	st = cn.createStatement();
	rs = st.executeQuery("select last_name, salary from employees ");
	
	out.println("\t[급여명세표]<br/>");
	out.println("===================<br/>");
	out.println("이름\t급여");
	
	while(rs.next()){
		out.println(rs.getString("last_name"));
		out.println(rs.getString("salary")+"\n<br/>");
	}
	out.println("===================<br/>");			
	
} catch (Exception e) {
	e.printStackTrace();
} finally {
	if (cn != null) try { cn.close();} catch (SQLException e) { }
	if (st != null) try { st.close();} catch (SQLException e) { }
	if (rs != null) try { rs.close();} catch (SQLException e) { }
}
%>
</body>
</html>

이렇게 java코드를 jsp코드로 바꿔볼 수 있다.

 

간단한 테스트 하나 해보자..

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<% 
    String[] basketTeam = {"정대만", "서태웅", "채치수", "송태섭", "강백호"};
 
    for (int i = 0; i <basketTeam.length; i++){        
        out.print(basketTeam[i]); 
        if ( i != basketTeam.length-1) out.println(", "); 
    }
 
%><br/>
 
<%-- expression (표현식으로 출력) --%> 
<% 
    for(int i = 0; i <basketTeam.length; i++){ %> 
        <%=basketTeam[i] %><%if ( i != basketTeam.length-1) {%>, <%}  %> 
<%    } %>        

<br/>
 
<!--  while 사용하여 출력 --> 
<% 
    int j = 0; 
    while (j != basketTeam.length){        
        out.print(basketTeam[j]);        
        if ( j != basketTeam.length-1) out.println(", "); 
        j++;    
    } 
%> 
</body>
</html>

 

디버그

행번호 더블클릭 (Break Point) –> 마우스 오른쪽 버튼 Debug as –> Debug on Server

다음 Break Point로 이동 : F8

Variable에서 숫자 바꾸면 루프를 다 하나하나 돌 필요가 없어..

Breakpoints 에서 Remove all Breakpoints 혹은 Skip All Breakpoints 등 가능..

 

 

 

'Java, Spring > 06일' 카테고리의 다른 글

6일차 01  (0) 2012.09.20
6일차 03  (0) 2012.09.20
6일차 04  (0) 2012.09.20
6일차 05  (0) 2012.09.20