<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="dbcon.jsp" %>
<%@ include file="time.jsp" %>
<%
String custno = request.getParameter("custno");
String custname= request.getParameter("custname");
String phone = request.getParameter("phone");
String address = request.getParameter("address");
String joindate= request.getParameter("joindate");
for(int i=1;i <10000; i++){
String k1[]={"하니","둘리","길동이","영심이","또치","짱구","미선","형만","삐약이","철수","영희"};
String k21[]={"010","011","017","016","02"};
String k22[]={"1111","3222","3333","4444","9999","1234","5658","7894"};
String k23[]={"1212","6667","1255","8522","7892","0002","4563","2580"};
String k3[]={"서울","경기","인천","제주","홍콩","필리핀","일본","미국","대전","부산"};
int ch1 = (int)(Math.random()*10);
int ch21 = (int)(Math.random()*10);
int ch22 = (int)(Math.random()*10);
int ch23 = (int)(Math.random()*10);
int ch3 = (int)(Math.random()*10);
try{
sql = "insert into guest (custno, custname, phone, address, joindate)";
sql = sql + " values(guest_idx.nextval,?,?,?,?) ";
pstmt = con.prepareStatement(sql);
pstmt.setString (1, k1[ch1]);
pstmt.setString (2, k21[ch21]+"-"+k22[ch22]+"-"+k23[ch23]);
pstmt.setString (3, k3[ch3]);
pstmt.setString (4, time1);
pstmt.executeUpdate() ;
}catch(Exception e){
e.printStackTrace();
}finally{
}
}
%>
- Random 을 이용해서 난수발생, 난수를 이용한 배열값을 쿼리로 INSERT했다.
- Math.Random()은 0.0~1 사이의 double난수를 발생시키기 때문에, 10을 곱했다.
또한, 형은 (Int)로 지정해주면서 뒤에 들어올 소숫점을 짤라주었다.
종자값 설정이 현재시각기준으로 자동설정되기때문에 난수생성변수를 여러개 만들었다.- Class.Random을 사용할수도있는데 이럴경우에는 float, double, int 등 다양한 형의 난수가 가능하고, 종자값 설정이 가능하다.
- ORACLE의 rownum은 위와같이 1부터 시작이 가능하다. (2부터시작 불가)
따라서 나누기를 진행할때 생각이 필요하다.
- 위와같이 쿼리를 작성하면 21번부터 30번까지의 RN을 출력할 수 있다.
이 원리가 웹의 페이지 나누기에 적용된다.
- JSP로 적용해본다.
- 범위에는 ? 를 지정하고 변수로 받아서 쿼리를 실행한다.
- 21~30까지를 넣어주었기 때문에, 번호 21번~ 30번까지만 출력해준다.
- 위와같은 원리를 이용해서 변수 idx를 만들어 [이전][다음] 을 누를 수 있도록 기능을 만든다.
- 변수 idx를 만들고 idx가 null(비어있을때), 1을 대입한다.
- 비어있지 않을 경우, 웹에서 매개변수를 받아온다.
- 단, 웹에서 넘어오는 값은 String형 이므로, Integer.parseInt를 통해 int형으로 변환한다.
- 받아온 idx를 기준으로 그 외 9개의 데이터를 더 찍어내야 10개의 데이터를 한 페이지에 출력할 수 있다. 따라서 끝값은 idx+9 시작값은 idx를 넣어준다.
- if-else문을 이용해 [이전]버튼이 맨 첫장일 경우 활성화되지 않도록 설정한다.
- 주소창에 보면, 웹에서 보내는 값이 잘 찍히는 것을 볼 수 있다.
- 처음으로 버튼에는 idx가 1번부터 실행되어야 하기 때문에 idx=1을 넣어주었다.
- 페이지나누기 최종까지 완성했다. 다만, 함수나 전체적인 식부분에 대한 이해가 필요해서
추가 정리할 예정이다.