JSP DB 연동(1)
JSP를 공부하던 중 DB연동을 하게 되는 법을 배웠다. 안드로이드에서 DB연동을 했었던 적이 있기에 눈에 들어오는게 확실히 많아졌다. 이번에 계기로 전에 이해하지 못했던 구석까지 이해할 수 있게 되었다. 예제는 2가지가 있는데 첫번째는 내가 직접만든거다. 물론.. 이곳 저곳에서 가져와서 수정한 것이기 때문에 상당히..소스가 더럽다... 그리고 2번째는 다른 블로그에서 퍼온건데, 정말 사용하기 좋은 방식으로 되있어서 틈틈히 공부하게 되었다. 자세히 올려준 그분한테 감사하다.
바로 시작하도록 하겠다. 우선 내가 제작한 소스이다.
포스트그리에 있는 많은 양의 데이터를 카운터 쿼리를 날려 2010년도가 들어간 데이터 수를 웹에 출력해주는 소스이다.
--------------------------------------------DBconn.java--------------------------------------------------------------
package webDataBase;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import org.apache.catalina.connector.Request;
public class DBconn {
private static Connection dbConn;
static Request request;
public static Connection getConnection() throws ClassNotFoundException, SQLException{
if(dbConn == null){
String driverName="org.postgresql.Driver";//포스트그리 드라이버 연결.
String url = "jdbc:postgresql:jun";
String id = "postgres";
String pwd ="postgres";
Class.forName(driverName);
System.out.println("드라이버로드");
dbConn = DriverManager.getConnection(url, id, pwd);
System.out.println("DB연결성공!");
}
return dbConn;
}
public static void close() throws SQLException{
if(dbConn!=null){
System.out.println("conn닫기()");
if(!dbConn.isClosed()){
dbConn.close();
}
}
dbConn = null;
}
}
----------------------------------------------------------------------------------------------------------------------보면 알겠지만 메소드가 2개가 존재한다. getConnection()와 close()메소드이다.
getConnection메소드를 살펴보면
Class.forName(driverName); 메소드가 있는데 이 메소드는 포스트그리 드라이버를 불러오는 곳이다.
드라이버를 로드하기 위해선 드라이버가 필요한데, 드라이버는 각자 맞는 드라이버를 다운받아서.
프로젝트 경로 : WebContent -> WEB-INF -> lib
이곳에다가 넣어주면 된다.
--------------search_yeaer-------------------------------------------------------------------------------------
<%@page import="webDataBase.DBconn"%> <!-- db와 jsp를 연결시켜주기 위해 dbconn 클래스를 사용하기 위해 임포트함. -->
<%@page import="java.sql.ResultSet"%><!-- 사용하기위해 임포트. -->
<%@page import="java.sql.Statement"%><!-- 사용하기위해 임포트. -->
<%@page import="java.sql.Connection"%><!-- 사용하기위해 임포트. -->
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
String ip=request.getParameter("ip_address");
//out.println("code=>"+code);
Connection conn = DBconn.getConnection();
Statement st = conn.createStatement();
String sql = "select count(count_date) as count_date from tm_counter WHERE count_date like '2010%'";
ResultSet rs = st.executeQuery(sql);
if(rs.next()){ //검색된 결과가 존재하면 true
String r_count = rs.getString("count_date");
%>
<h1>조회결과</h1>
<table>
<tr>
<td>2010</td>
<td bgcolor="Red"></td> //width속성에다 값을 넣어 디비에서 나온 값을 이용해 그래프처럼 표현하고싶었지만.. 구
현하지못함..
<td><%=r_count %></td>
//쿼리문이 들어간 변수를 화면상에 출력시켜줌.
</tr>
</table>
<%
}else{
out.println("오류.");
}
rs.close();
st.close();
DBconn.close();//db를 사용했으면 모두 닫아줘야함. 안닫아줘도 실행은 되지만, 나중에 서버로 다른 사용자와 같이 사용하게 됬을 때, 메모리상에 문제가 생기기때문에 항상 닫아주어야한다.
%>
</body>
</html>
----------------------------------------------------------------------------------------------------------------------
하... 답이없다.... 정말 지저분하다. 고치고 고쳐봐도 지저분하다. 다른 프로젝트에 있는 것처럼 자바에서는 db를 관리하고 jsp에선 출력만하는 깔끔한 코딩을 하고 싶었지만,.... 잘 되지 않았다.. 그래서 인터넷을 찾아보다가 우연스럽게 굉장히 좋은 예제를 찾게 되었고, 난 그 예제를 따라하며, DTO와 DAO라는 것을 알게 되었다. 그리고 안드로이드에서 본 소스와 굉장히 똑같아서 이래서 이렇게 사용하는구나 라는 느낌을 받게 되었다. 다음은 이런.. 지저분한 .. 코딩 말고, 완전 좋은 예제로 다시 글을 작성하겠다.
출처: https://junyjsp.tistory.com/12 [개발과 취미는 열정적으로]
'study > java' 카테고리의 다른 글
[JSP] DB연동시 사용되는 클래스와 메소드 정리,. (0) | 2021.12.30 |
---|---|
[JSP] JSP DB 연동(2) (0) | 2021.12.30 |
이클립스(Eclipse) 한글 깨짐 오류 수정하기 (0) | 2021.12.30 |
자바와 연동하는 방법(JDBC), 자바 ConnectionUtil 생성 방법 (0) | 2021.12.30 |
JAVA URL인코딩, 디코딩 – URLEncoder, URLDecoder (0) | 2021.12.30 |