본문 바로가기

개발중/Web

Web06 전체 데이터 출력 ( MY )

728x90
반응형

한 주를 마무리 지으면서 오늘 받은 미션은 객체가 할 일을 분리하는 것이다!

 

자바에서는 SQL 이랑 연동해서 데이터를 가지고 오고

JSQ 문서에서는 화면에 출력 하는 일

 

늘 썜이랑 공부하면서 한 코드에 주구장창 넣는게 불편했는데

 

오늘 수업은 유난히 신이 났다.

드디어 역활 분담을 하는구나,

 

근데 역활 분담하는 건 쉽지는 않았지만 그래도 성공해서 기분이 너무 좋았다. 

더 좋은 방법이 있겠지만은 아직 내가 아는 지식들 중에서는 쥐어 짜냈다.

 

아무튼 만족

 

일단 3개의 클래스를 이용했다.

 

guestList();

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>

<%@ page import="net.tis.sql.GuestSQL" %>
<%@ page import="net.tis.sql.Infomation" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
	<style type="text/css">
	*{font-size:16; color:white text-decoration:none; }
	</style>
</head>
<body>
	
	<%
	GuestSQL ob    = new GuestSQL();
	Infomation info = new Infomation(); 
    %>
    
	<table width= 900; border= "1"; cellspacing = "0">
		<tr align = "center" >
			<td>행번호</td>
			<td>사   번</td>
			<td>이   름</td>
			<td>제   목</td>
			<td>이메일</td>
			<td>급   여</td>
			<td>날   짜</td>
			<td>조회수</td>
		</tr>
		
		<% 
		int i = 1;
		int Gtotal = ob.Total();
		
		do{
			info = ob.dbSelect( i++ );
		 %>
			<tr align = "center" onmouseover = "style.backgrounfColor = 'roundColor(0, 200, 200)'">
				<td><%= info.getGronum()  %></td>
				<td><%= info.getGsabun()  %></td>
				<td><%= info.getGname()   %></td>
				<td><%= info.getGtitle()  %></td>
				<td><%= info.getGmail()   %></td>
				<td><%= info.getGpay()    %></td>
				<td><%= info.getGdate()   %></td>
				<td><%= info.getGhit()    %></td>
			</tr>
		<% 
		}while( i != Gtotal );
		%>
	</table>
</body>
</html>

 

Information (); 정보를 임시 저장하고 꺼내 올 구조체

package net.tis.sql;

import java.util.Date;

public class Infomation {
	
	Date Gdate;    // 날짜
	
	String Gname;  // 이름
	String Gtitle; // 제목
	String Gmail;  // 메일
	String Gronum; // rownum
	
	int RN;    // 사번
	int Gsabun;    // 사번
	int Gpay;      // 페이
	int Ghit;      // 조회수
	
	
	public Date getGdate() {
		return Gdate;
	}
	public void setGdate(Date gdate) {
		Gdate = gdate;
	}
	public String getGname() {
		return Gname;
	}
	public void setGname(String gname) {
		Gname = gname;
	}
	public String getGtitle() {
		return Gtitle;
	}
	public void setGtitle(String gtitle) {
		Gtitle = gtitle;
	}
	public String getGmail() {
		return Gmail;
	}
	public void setGmail(String gmail) {
		Gmail = gmail;
	}
	public String getGronum() {
		return Gronum;
	}
	public void setGronum(String gronum) {
		Gronum = gronum;
	}
	public int getGsabun() {
		return Gsabun;
	}
	public void setGsabun(int gsabun) {
		Gsabun = gsabun;
	}
	public int getGpay() {
		return Gpay;
	}
	public void setGpay(int gpay) {
		Gpay = gpay;
	}
	public int getGhit() {
		return Ghit;
	}
	public void setGhit(int ghit) {
		Ghit = ghit;
	}
	
	
}

GuestSQL();

package net.tis.sql;

import java.sql.*;
import java.util.Date;
import net.tis.common.*;
import net.tis.sql.*;
import java.text.SimpleDateFormat;


public class GuestSQL{
	
	Infomation info = new Infomation();

	PreparedStatement PST;
	CallableStatement CST;
	
	Connection CN;
	Statement ST;
	ResultSet RS;

	Statement  ST1;
	ResultSet  RS1;
	
	int GTotal = 0;
	
	public int Total() {
		
		try {
			
			String msg = "SELECT COUNT(SABUN) AS CNT FROM GUEST";
			
			CN = DB.getConnection();
			
	        ST1    = CN.createStatement();
			RS1    = ST1.executeQuery(msg);
			System.out.println("******************************");
			RS1.next();
			GTotal = RS1.getInt("CNT");

		}catch (Exception e) {
			System.out.println(e);
		}
		return GTotal;
	}
	
	public Infomation dbSelect( int GNum ) {
		
		try {
			String msg = "SELECT * FROM (SELECT ROWNUM RN, G.* FROM GUEST G )WHERE RN =" + GNum;
            ST = CN.createStatement();
			RS = ST.executeQuery(msg);
			
			if( GNum != 0 ) {
				
				RS.next();
                
				info.setGronum( RS.getString("RN")   );
				info.setGsabun( RS.getInt("SABUN")   );
				info.setGname ( RS.getString("NAME") );
				info.setGtitle( RS.getString("TITLE"));
				info.setGmail ( RS.getString("EMAIL"));
				info.setGpay  ( RS.getInt("PAY")     );
				info.setGdate ( RS.getDate("WDATE")  );
				info.setGhit  ( RS.getInt("HIT")     );
			
			}else {
				return null;
			}
		}catch (Exception e) {
			System.out.println(e);
		}
		return info;
	}
}

 

 

 

[ 코 드 해 석 ]

 

ob.Total () 는 

 

총 데이터 갯수를 불러오는 함수이다.

 

반환 된 개수를 GToal 에 저장 시키고

dbSelect () 함수를 호출 한다

매개변수로 보낼 i는 기본값은 1 이다.

하나씩 증가를 하면서 보내줄꺼고

 

 

i 가 Gtotal 이랑 같아질 때까지 반복 할꺼야!

 

 

그러면 Gtotal 은 ROWNUM 이 GNum ( 즉 , i 번째 ) 번째에 있는 데이터를 가지고 온다.

 

쿼리문을 실행 하고

 

GNum 이 0이 아니라면 반복문이 실행 되는데 당연히 i는 0 일리가 없지!

 

RS.next() 를 해주지 않으면 안돼 여기서 한참을 해맸는데 다음부터 조심하자

RS 도 다음 데이터를 가르쳐야지 !

 

 

Information type을 반환 할 것이고 이 데이터들은 

 

이렇게 저장이 될거야

 

그럼 info 를 반환 해주고

 

반환 받은 info 로 데이터를 get! 해오자

그러면 총 데이터가 출력이 된다!

 

이 문제를 해결하는데 총 5시간이 걸렸는데 너무도 값진 고생이었다.

쌤 강의를 듣는 것도 도움이 되지만 내가 직접 만들어보고 에러 나보고 하는게 제일 큰 도움이 되는거 같다.

이제 조건을 걸어서 데이터를 출력 해보러 가야지 🥴💓

 

문제 해결해서 기분 넘나 좋음 완전 신남 개좋음

728x90
반응형

'개발중 > Web' 카테고리의 다른 글

Web 이미지를 a 태그로  (0) 2020.08.04
댓글 저장, 수정, 삭제 기능 구현하기  (0) 2020.08.03
Web06 .jsp 문서에서 .java 문서 호출  (0) 2020.07.30
Web06 FORWARD / INCLUDE  (0) 2020.07.30
Web06 댓글 수 표기  (0) 2020.07.30