설치 : JDBC MySQL : MySQL 연결 #2 : MySQL 연결 #3

JSP 강좌 > JDBC > MySQL 연결 #3

2001-01-26 kenu


이번에는 db에 저장된 내용을 브라우저로 불러오겠습니다.

mysqljdbc02.jsp

<%@ page import="java.sql.*"%>

<%
String DB_URL = "jdbc:mysql://localhost/test";
String DB_USER = "";
String DB_PASSWORD= "";

Connection conn;
Statement stmt;
ResultSet rs=null;

String query = "select * from createTest";

// try {
Class.forName("org.gjt.mm.mysql.Driver");

conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);

stmt = conn.createStatement();

rs = stmt.executeQuery(query);

while (rs.next()) {

out.println(rs.getString(1));
out.println(" ");
out.println(rs.getString(2));
out.println("<br>");
}

rs.close();

stmt.close();

conn.close();

// } catch(Exception e){e.printStackTrace();}
%>

이렇게 저장을 한 뒤에 브라우저에서 페이지를 불러와 실행 시켜봅니다.

db에 입력했던 값들이 브라우저에 표시될 것입니다. 500 에러라구요? 이럴 수가... 오타확인해보세엽.

문제가 하나 있을 것입니다. 깨진 한글....

???

라고 나오죠? 이 문제는 일단 db에 깨진 값이 들어가면 복구가 힘들다고 저 개인적으로 판단하고 있는데요. sql 상에서 질의(query)했을 때 한글이 제대로 나온다면 불러올 때 한글로 불려진다고 생각하시면 됩니다. 인코딩할 때 각개 전투하는 법과 페이지 통째로 하는 법이 있습니다.

일단 각개 전투법은

out.println(rs.getString(1)); 을 decoding 해주는 것입니다.

이렇게요.

out.println(new String(rs.getString(1).getBytes("euc-kr"),"8859_1"));

db에 입력할 때 인코딩한 코드이기 때문에 역으로 decoding 해주면 볼 수 있습니다. 또 다른 방법은 page 지시자에 contentType 속성을 표시하는 것입니다.

페이지 맨 첫줄에 있는

<%@ page import="java.sql.*"%>

<%@ page import="java.sql.*" contentType="text/html; charset=euc-kr"%>
으로 바꿔줍니다. 그리고 디코딩 부분을 주석처리하고 원래 표시부분을 아래 다시 씁니다.

//out.println(new String(rs.getString(1).getBytes("euc-kr"),"8859_1"));
out.println(rs.getString(1));

이런 식으로요. 나중엔 주석처리를 깨끗하게 정리해 주는 것이 좋겠죠. 한글 처리 가능한 부분이 두가지 이기 때문에 더 헷갈리는 지도 모르겠습니다. 하지만 이것을 차근차근 적용해 본다면... (경우의 수가 8가지 이지만 ^^) 한글 문제가 그리 어렵지만은 않을 것입니다.

출근해야 되니까, 이 정도로 초고 넘깁니다. 다음 번에는 파일 업로드 기능을 알아보겠습니다. 그러면서 jspSmartUpload 의 유용한 기능 몇 가지를 구워삶아 먹겠습니다.

 

참고 :

kenu: heogn@shinbiro.com
http://okjsp.pe.kr

prev : back : next
 
since 2000/12/05