한 주를 마무리 지으면서 오늘 받은 미션은 객체가 할 일을 분리하는 것이다!
자바에서는 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시간이 걸렸는데 너무도 값진 고생이었다.
쌤 강의를 듣는 것도 도움이 되지만 내가 직접 만들어보고 에러 나보고 하는게 제일 큰 도움이 되는거 같다.
이제 조건을 걸어서 데이터를 출력 해보러 가야지 🥴💓
문제 해결해서 기분 넘나 좋음 완전 신남 개좋음
'개발중 > 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 |