2009년 8월 25일 화요일

자바스크립트 접속할 때마다 다른 이미지 나타내기

<script>


var BgArray = new Array(
"../../img/cat.gif", // 보여질 이미지들을적어주세요.
"../../img/dog.gif",
"../../img/fade01.gif",
"../../img/fade02.gif",
"../../img/fade03.gif",
"../../img/fade04.gif"
);

var gifimage="";
today=new Date();
jran=today.getTime();
ia=9301;
ic=49297;
im=233280;
jran = (jran*ia+ic) % im;

gifimage =BgArray[ ( Math.ceil((jran/(im*1.0))
*BgArray.length) ) - 1];

 

</script>

 

JSP 레코드를 글 리스트에 띄우기

public Vector getBoList()

 

백터형 자료 반환을 위한 설정

 

  {
   
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;
    String strQuery = null;
    Vector boList = new Vector();

 

백터형 변수 boList 생성.. 토탈레코드 구할 때 쓰인다.

 

 

    try{

           conn = pool.getConnection();

 

풀링기법을 공유하고 있으므로 따로 풀링객체 생성없이 가져온다

 

 

       }catch(Exception e){
           System.out.println("Error:커넥션 가져오기 실패!!");
       }

    try
    {       
         stmt = conn.createStatement();
     strQuery = "select * from gesi order by pos asc";

 

셀렉트를 이용하여 테이블안의 모든 내용을 불러오자

order by pos asc pos 레코드를 기준으로 정렬한다는 내용인데

포스 레코드는 없으니 넘어가자.

 

 

        rs = stmt.executeQuery(strQuery);

 

rs 에 담아주고

 

 

        while (rs.next()){

 

다음 레코드가 있으면 계속 반복

 

 

         BoBean ListBo = new BoBean();
 
빈즈형 변수 ListBo 생성

 

 

         ListBo.setTitle(rs.getString("title"));

 

빈즈형 변수의 setTitle 메소드를 실행시키는데 값으로 서버의 title 를 가져간다.

 

요기서 빈즈에 저장되게 되고 리스트페이지에서 빈즈를 불러와

리스트 업이 완료되게 된다.

 


         boList.add(ListBo);

 

백터형변수 boList 에다가 빈즈의 실행결과를 담자.

 


        }
    }
    catch (SQLException ex2)
    {
            System.out.println("Exception" + ex2);

    }
    finally
    {
 
    pool.freeConnection(conn,stmt,rs);

 

풀링기법을 닫아주고

 

 

    }
   return boList;

 

리스트 페이지  boList = Bo.getBoList();  에서 리턴된 값을 가져오게 된다.

 

  }
}

JSP 게시판 리플

reple    ( 리플 내용을 전송)

id        (작성자의 아이디를 전송)

page    ( Read.jsp로 전송된 페이지 고유번호를 전송)

 

reple 는 그냥 넘기고 나머지는 딱히 넘길 입력창이 없으니 히든으로 넘기자.


<input type="hidden" name="id" value="<%=memberId%>">

    세션아이디를 변수로 뽑아와 넘기자

<input type="hidden" name="page" value="<%=num%>">

    전송된 페이지 고유번호를 넘기자 

 

JSP 게시판 리스트 페이지 [1 2 3 4]

<%

    if(totalRecord !=0 ) {

 

토탈레코드가 1개라도 있으면 for 문을 돌아라

 

 

      for(int i=0; i< pagePerBlock; i++) { %>

 

i 값이 pagePerBlock 값 10 보다 작을때까지 돌아라 총 10 번

 

 

     <a href = "List.jsp?nowBlock=<%=nowBlock%>

 

     &page=<%=(nowBlock * pagePerBlock)+ i %>">

 

1 2 3 .. , 각각의 숫자를 클릭시 List.jsp 페이지로 nowBlock 변수와 page 변수를 넘긴다.

 

               (nowBlock  *  pagePerBlock ) + i

첫번째      (     0          *         10          ) +    0  = 0

두번째      (     0          *         10          ) +    1 = 1

두번째      (     0          *         10          ) +    2  = 2

                             .

nowBlock = 0   과 page = 0 부터 9 까지 차례로 보내게 된다

 

 

     <%=(nowBlock * pagePerBlock) + i + 1 %></a>

 

현재블럭 0  * 페이지 블럭의 한계 수 10  + i 에다가 올림 수 1 을 더해준다.

위 구문으로 해서 1 2 3 4 5 6 7 8 9 10 이 생성되게 되는데 올림 수 1을 더해주지

않는다면 0 1 2 3 4 5 6 7 8 9  로 표현이 될 것이다.

그런데

레코드는 총 12 개 작성되었으니 2 페이지 만 나와야 한다. 나머지 3~10 은 ?

 

 

<% if ((nowBlock * pagePerBlock) + i + 1 ==totalPage){

          break;
       }
%>

 

for 문을 돌다가 (  ) 숫자가 토탈페이지와 동일하다면 브레이크 !

레코드가 12개 였을때의 나머지 3 ~ 10 을 지워주는 기능이다.

 

 

그럼 여기서.. totalPage 의 값을 구해보자.

 

 

 totalPage = (int)Math.ceil((double)totalRecord / numPerPage);

 

토탈레코드를 최대페이지 숫자로 나누고 나머지는 수학함수.ceil 로 올림해버리자.

이 구문은 beginPerPage 값 구하는 식 아래에다 적어주자.

 

 

List 페이지를 구동해 보면

하단에 살폿이  1 과 2 라는 숫자가 나온 것을 확인 할 수 있다.

하지만 아무리 클릭해도 다음페이지로 넘어가는 변화가 없다.

넘겼던 nowBlock 변수와 page 변수를 받아서 처리해 주면 비로소

페이징이 살아서 제기능을 하게 된다.

 

 

 if (request.getParameter("page") != null) {
     nowPage = Integer.parseInt(request.getParameter("page"));

 

페이지 받고

 


 if (request.getParameter("nowBlock") != null) {
     nowBlock = Integer.parseInt(request.getParameter("nowBlock"));

 

JSP 게시판 글 리스트

<%@ page contentType="text/html; charset=EUC-KR" %>
<%@ page import="member.*,java.util.*"%>
<jsp:useBean id="Bo" class="member.BoMgr"/>


<%
  request.setCharacterEncoding("euc-kr");
%>

 

기본적인 셋팅과 자료를 가져와 리스트 업 시킬 클래스파일인 BoMgr 을 아이디 설정하자.

 

 

변수들을 셋팅 하자. 

 

<%
   int totalRecord=0;                 // 전체 레코드 수
   int numPerPage=10;             // 페이지 당 레코드 수
   int pagePerBlock=10;           // 블록 당 레코드 수
   int totalPage=0;                   // 전체 페이지 수
   int totalBlock=0;                  //  전체 블록수
   int nowPage=0;                  //  현재 페이지
   int nowBlock=0;                 //  현재 블록
   int beginPerPage=0;           //  페이지의 시작번호
 
   Vector boList;              // Select 로 검색한 자료들을 담아올 벡터형 변수

%>

 

저 많은 변수들이 말해주듯 게시판 구성은 복잡하다.

 

 

우선 단 한 개의 레코드라도 리스트에 불러오는 것이 목적이다.

간단하게 Title 레코드만 불러와서 테스트 후 각자 추가하도록 하자


<body >


   <table>
    <tr>
     <td width=50>번 호</td>
     <td width=350>제 목</td>
    </tr>
    <tr>
     <td></td>
     <td><%=title%></td>
    </tr>

  </td>

</table>

 

너무나도 간단한 리스트가 만들어졌는데 이상태에선 에러가 난다.

 

<%=tilte%> 명령어를 만족시키기 위해

select 시킨 MySql 자료를 불러오자

아마도 빈즈에 담겨있겠지?

 

 

     <td width=350>제 목</td>
    </tr>

 

<%

      BoBean ListBo = (BoBean)boList.elementAt(i);

      String title = ListBo.getTitle();
%>


    <tr>
     <td></td>
     <td><%=title%></td>

 

사이에다가  추가해주자.

import 했던 빈즈의 구조를 가지는 변수 ListBo 에다가

백터형 boList 변수의 내용을 대입한다.

boList 안에는 (BoBean) 의 내용이 담겨져 있다

 

아시다시피 빈즈의 속에는 각각의 컬럼들이 있다.

여러 자료를 한번에 담기 위해 백터형 변수를 쓰고 한번에 뽑아내기 위해

elementAt(i) 를 통하여 백터변수에 접근한다.

 

 

입력창을 통하여 12개의 글을 입력해 놓았다.

모두 불러내어 리스트 업 하기 위해서 FOR 문을 사용하자.

 

<%
     for (int i=beginPerPage; i<(beginPerPage+numPerPage); i++){
         if (i==totalRecord){break;}

        BoBean ListBo = (BoBean)boList.elementAt(i);

        String title = ListBo.getTitle();
%>

 

 

 

For 문에 나온 세가지 변수의 값을 구해야 한다.

 

beginPerPage  =  nowPage * numPerPage;

 

페이지 넘버링   1 2 3 4 5 6 7 8 9 10  만들때

2번을 누를경우 nowPage 로 1을 ++ 하여 넘긴다.

이러면 첫페이지는 0 이니까 0 ~9 까지 다음은 1 이니까 10~ 19 까지 열개씩 나열한다.

 

numPerPage    = 페이지당 레코드 개수로 이미 10 개로 설정했다.

 

totalRecord      = 총 레코드 수 는 select 하는 메소드를 반환하여 값을 얻는다.

 

                       boList = Bo.getBoList();

                       totalRecord = boList.size();

 

          백터형 변수 = Bo(BoMgr.class) 속의 메소드 BoList 의 결과를 담고

          .size() 로 갯수를 추출해서 토탈레코드에 담자

          12 개 작성했다면 Select 가 12번 실행되었으니 12가 추출된다.

JSP 게시판 글 수정하기

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<%@ page import="net.ion.board.Manger.SiBoardMgr" %>
<%@ page import="net.ion.board.bean.SiBoardBean" %>
<%
 int id = Integer.parseInt(request.getParameter("num"));
 SiBoardMgr mgr = SiBoardMgr.getInstance();
 SiBoardBean bean = mgr.edit(id);
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>게시판 수정</title>
</head>
<body>
<form action="update.jsp" method="post">
 <input type="text" name="board_num" value="<%= id %>">
 <table border="1">
  <tr>
   <td>이름 </td>
   <td><input type="text" name="name" value="<%= bean.getName() %>" size="10"></input></td>
  </tr>
  <tr>
   <td>암호 </td>
   <td><input type="password" name="password" size="10"><br>
   암호가 동일해야 수정이 가능함
   </td>
  </tr>
  <tr>
   <td>제목 </td>
   <td><input type="text" name="title" value="<%= bean.getTitle() %>"  size="30"></input></td>
  </tr>
  <tr>
   <td>내용 </td>
   <td><textarea name="content" rows="5" cols="50"><%= bean.getContent() %></textarea></td>
  </tr>
  <tr>  
   <td><input type="submit" value="수정하기" ></input></td>
  </tr>
 </table>
</form>
</body>
</html>

JSP 게시판 글 삭제

package mvc.bbs;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import www.utility.FileUploadRequestWrapper;
import www.utility.Utility;

public class DeleteProcAction implements Action{
    @Override
    public ActionForward execute(HttpServletRequest request,
            HttpServletResponse response) throws Throwable {
        request.setCharacterEncoding("euc-kr");
        ActionForward forward = new ActionForward();
        String password = request.getParameter("password");
        String filename = request.getParameter("filename");
        int bbsnum = Integer.parseInt(request.getParameter("bbsnum"));
       
        BbsMVCMgr  mgr = new BbsMVCMgr();
        System.out.println("파일이름 여기 : " + filename);
        boolean retVal = mgr.checkPass(bbsnum, password);
       
        if (retVal == true){
            if(mgr.delete(bbsnum)){
               
                String dir = Utility.getRealPath(request, "bbs/storage");
                if(FileUploadRequestWrapper.deleteFile(dir, filename) == true){
                    System.out.println(filename + " 삭제");
                }
            }
        }
       
        request.setAttribute("delete", (Boolean)retVal);
       
        forward.setPath("/bbs/delete_proc.jsp");
        forward.setRedirect(false);
       
        return forward;
    }
}

JSP 게시판 입력페이지

<%@ page import="member.*" %>

 

멤버폴더의 모든 클래스들을 가져오는 편리한 import

 

<%
  request.setCharacterEncoding("euc-kr");
%>

 

input 으로 전송되어져 온 한글의 지킴이

 

 

<jsp:useBean id="gesi" class="member.BoBean" />

 

BoBean으로 작성한 빈즈를 불러와 " gesi " 로 아이디 설정

 


<jsp:setProperty name="gesi" property="*" />

 

받아온 모든 자료를 gesi 에다가 setProperty 로 저장해버리겠다 !!

 


<jsp:useBean id="ge" class="member.BoMgr" />

 

BoMgr.class 게시판의 핵심!!  서버접속과 저장을 담당하는 클래스

이 놈을 불러와 아이디를 ge 로 자바 형식화 시켜서  간편하게 쓰겠다. 라고 선언

 

 

<%
  ge.insertBoard(gesi);

 

 ge 는 위에 설정한 것처럼 BoMgr 의 이름이다.

다음 포스트에 자세하게 나오겠지만 BoMgr.class를 잘 파헤쳐보면

insertBoard 라는 메소드가 나오는데 바로 입력을 담당하는 녀석이다.

(gesi) 는 저장된 빈즈의 내용을 싸그리 가져가겠다는 의미이다. 꼭 기억하시길..

 

  response.sendRedirect("List.jsp");

JSP 게시판 엔터 인식처리

package member;

import java.util.*;

   public class UtilMgr {

   public String getContent(String comment){
      return br(" ", "<br>", comment);
   }

   public String br(String first, String brTag, String comment){
     StringBuffer buffer = new StringBuffer();
     StringTokenizer st = new StringTokenizer(comment, "\n");
     int count = st.countTokens();
     buffer.append(first);
     int i = 1;
       while(st.hasMoreTokens()){
         if(i==count){
           buffer.append(st.nextToken());
         }else{
           buffer.append(st.nextToken()+ brTag);
         }
       i++;
     }
   return buffer.toString();
   }
}

모렐리아 웨이브 KR-12KP99109

ㅇ 제 조 사 : 미즈노
ㅇ 원 산 지 : 일본
ㅇ 소    재 : 캥거루가죽
ㅇ 부 소 재 : 합성수지

- 특징 : 모렐리아와 웨이브 컵의 합체. 전통과 혁신의 융합이 만들어낸 차세대 축구화
 
(1)FIXED HOLD OVER TONGUE 플레이 기능의 저하를 최소화하고, 발등을 확실히 보호해준다.
  발의 형상에 맞춘 비대칭의 고정식 발등 커버. 충격을 받기 쉬운 외측을 강화하고, 플레이에
  장해가 되는 내측을 절단하였다. 발등 커버 본체에는 물세탁이 가능한 캉가루 가죽을 사용하여 발의 착용감을 향상시켰다.
 
(2)WASHABLE KANGAROO LEATHER(물세탁이 가능한 캉가루 가죽) 방수의 기능을 가짐과 동시에 신속하게 건조가 되는 가죽.
  비가 오는 날에도 간단한 손질로 관리가 수월하다. 수분을 흡수하지 않음과 동시에 건조성이 뛰어난 소재.
  비에 젖어도 간단한 손질로 부드러움을 유지. 착용감이 좋은 경량의 가죽을 사용.
 
(3)인체 해부학적 솔+VS-1 착용감과 안정감, 쿠션성을 향상시킴. 발바닥의 둥근 형상에 맞춘 바닥 깔창의
  뒤꿈치 부분에 특수 방진포리마를 배합한 쿠션재를 가미하였 다.
 
(4)신제조공법 축구화의 앞부분과 뒷부분을 서로 다른 제조공법으로 제작한 하이브리드 사양.
  앞부분은 HARD BOARD에 의한 안정감과 내구성, 뒷부분은 부직포를 사용하여 경량화와 착용감의 향상을 실현한 제조공법.
  콤팩트 웨이브가 발을 한층 편안하게 하는 효력을 발휘한다.
 
(5)3D CUTTING+DURABLE ARCH SUPPORT 그라운드로부터의 충격을 감소시키고 발과의 일체감을 향상.
  발바닥의 안쪽 부분의 독특한 입체 형상을 고려한 UPPER PATTERN. 내마모성이 뛰어난 고무인공피혁을
  사용하여 발과 축구화의 일체감의 생겨 발과 축구화를 보호한다.
 
(6)인체 해부학적인 라스트(족형) 발의 구조를 고려한 족형 연구에 의한 라스트의 설계로 절묘한 착용감을 실현하였다.
  해부학적인 족형 연구로 실제 발의 모양과 흡사한 라스트를 개발.
  특히 발 뒷부분의 둥근 형상을 고려함으로써 착용감과 안정감을 실현하였다.
 
(7)데이터 샤워 솔의 디자인 컨셉 선수들의 발의 축의 움직임을 분석한 데이터에 의해 제작된 축구화 바닥이
  발의 안정감을 향상시킴. 선수의 발축의 움직임을 1/100초마다 분석을 하여, 그것을 기본으로 축구화
  창의 두께와 스터드의 위 치, 방향, 높이, 형상 등을 설정. 안정감과 착용감의 향상으로
  보다 정확한 플레이가 가능하게 되었다.
 
(8)DFC(카운터 겸 아웃솔) 카운터와 솔이 일체화되어 안정감이 한층 향상됨. 발뒤꿈치의 카운터와 아웃 솔이
  일체화된 DFC 구조로 착용감과 안정감이 향상되었다. 충격에도 강하며 높은 내마모성과 강성도 겸비한 아웃솔.
 
(9)PARALLEL WAVE(콤팩트 타입) 맨발의 감각을 중시하는 축구화용으로 개발된 미즈노 웨이브.
  두께 약 4.5mm , 중량 약3.4g의 소형이지만, 쿠션성은 종래의 60%가 향상되었다. 경량으로 안정감이 높은 것이 특징이다.

인테그리티 프로 FG(006)-19171006

ㅇ 기능 : 천연가죽, tpu
ㅇ 통기성 증대 설포 고정 및 신발 끈 보호
ㅇ 쿠셔닝 제공 및 뒤꿈치 압력 분산
ㅇ 편안한 착화감과 쿠셔닝 제공

JSP 아이디 중복체크

<%-- JSP 페이지 정의 시작 --%>
<%@ page info="userid check" errorPage="error.jsp" %>
<%@ page contentType="text/html; charset=euc-kr" %>
<%@ page language="java" import="java.sql.*,java.io.*,java.net.*" %>
<%-- JSP 페이지 정의 끝 --%>

<%-- 자바빈즈 선언 시작 --%>
<jsp:useBean id="dbconn" class="MyBeans.DBConnect" scope="request" />
<jsp:useBean id="myutil" class="MyBeans.MyUtil" scope="request" />
<%-- 자바빈즈 선언 끝 --%>

<%-- JSP 코드 시작 --%>
<%
    Connection conn = null;
    Statement  stmt = null;
    ResultSet  rs   = null;

    // User ID값 받기
    String userid = myutil.checkNull(request.getParameter("userid"));
    String query  = new String();

    int check_count = 0;  // 해당레코드 카운드

    try {
        conn = dbconn.getConnection(); // 자바빈즈로부터 데이터베이스 커넥션 받기
        stmt = conn.createStatement(); // 커넥션으로부터 Statement 생성

        // 아이디 조회
        query = "Select count(*) as count from member where userid='" + userid + "'";
        rs = stmt.executeQuery(query);
        rs.next();
        check_count = rs.getInt("count");
        rs.close();
    } catch(SQLException e){
    } finally {
        dbconn.close();
    }
%>
<%-- JSP 코드 끝 --%>

<%-- HTML 코드 시작 --%>
<html>
<head>
<title>아이디 중복검사</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<%-- 외부 스타일시트 지정 --%>
<link rel="StyleSheet" href="style.css" type="text/css">
<%-- 자바스크립트 영역 시작 --%>
<script language="JavaScript">
<!--
function checkEnd(){
    var form = document.id_check;

    opener.join.userid.value       = form.userid.value;
    opener.join.userid_check.value = form.check_count.value;
    self.close();
}

function doCheck(){
    var form = document.id_check;

    if(!checkValue(form.userid, '아이디', 5, 16)){
        return;
    }

    form.submit();
}

function checkValue(target, cmt, lmin, lmax){
    var Alpha = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    var Digit = '1234567890';
    var astr = Alpha+Digit;
    var i;
    var tValue = target.value;
    if(tValue.length < lmin || tValue.length > lmax){
        if(lmin==lmax) alert(cmt+'는'+lmin+'Byte이어야 합니다.');
        else alert(cmt+'는'+lmin+'~'+lmax+'Byte 이내로 입력하셔야 합니다.');
        target.focus();
        return false;
    }

    if(astr.length > 1){
        for (i=0; i<tValue.length; i++){
            if(astr.indexOf(tValue.substring(i,i+1))<0){
                alert(cmt+'에 허용할 수 없는 문자가 입력되었습니다.');
                target.focus();
                return false;
            }
        }
    }
    return true;
}
-->
</script>
<%-- 자바스크립트 영역 끝 %>
</head>
<body text="#000000" bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<br>
<br>
<%-- FORM 태그 시작 --%>
<form name="id_check" method="post" action="userid_check.jsp">
  <input type="hidden" name="check_count" value="<%=check_count%>">
  <table width="300" border="0" cellspacing="0" cellpadding="0" align="center">
    <tr>
      <td>원하는 아이디를 입력하세요.</td>
    </tr>
  </table>
  <table width="300" border="0" bgcolor="#B6C1D6" height="39" align="center">
    <tr>
      <td bgcolor="#ffffff" width="40%" align="center">
        <input type="text" name="userid" value="<%=userid%>" onFocus="this.value=''" maxlength="16" size="16" class="oneborder">
        <input type="button" value="중복확인" onClick="doCheck()" class="oneborder">
      </td>
    </tr>
    <tr>
      <td>
<%
    if(check_count > 0){
%>
      [<%=userid%>]은 등록되어있는 아이디입니다.<br> 다시 시도해주십시오.
<%
    }else{
%>
      [<%=userid%>]은 사용 가능합니다.
<%
    }
%>
      </td>
    </tr>
  </table>
  <table width="100%" border="0" cellspacing="0" cellpadding="0" align="center">
    <tr>
      <td align="center">
        <input type="button" value="확인" onClick="checkEnd()" class="oneborder">
      </td>
    </tr>
  </table>
</form>
<%-- FORM 태그 끝 --%>
</body>
</html>
<%-- HTML 코드 끝 --%>

V2.08 I HG(864 06)-10186406

JSP 주민등록번호 유효성 체크

 <script language="javascript">
 <!--
 function jumin()
 {
  if (document.regForm.jumin1.value.length != 6)
  {
   alert("올바른 주민등록번호를 입력해주세요.");
   document.regForm.jumin1.value = "";
   document.regForm.jumin_check.value = "false";
   document.regForm.jumin1.focus();
  }
  else if (document.regForm.jumin2.value.length != 7)
  {
   alert("올바른 주민등록번호를 입력해주세요.");
   document.regForm.jumin2.value = "";
   document.regForm.jumin_check.value = "false";
   document.regForm.jumin2.focus();
  }
  else
  {
   var str_jumin1 = document.regForm.jumin1.value;
   var str_jumin2 = document.regForm.jumin2.value;
   var digit=0
   for (var i=0;i<str_jumin1.length;i++)
   {
    var str_dig=str_jumin1.substring(i,i+1);
    if (str_dig<'0' || str_dig>'9')
    {
     digit=digit+1
    }
   }
   if ((str_jumin1 == '') || ( digit != 0 ))
   {
    alert('잘못된 주민등록번호입니다.\n\n다시 확인하시고 입력해 주세요.');
    document.regForm.jumin1.value = "";
    document.regForm.jumin2.value = "";
    document.regForm.jumin_check.value = "false";
    document.regForm.jumin1.focus();
   return false;  
   }
   var digit1=0
   for (var i=0;i<str_jumin2.length;i++)
   {
    var str_dig1=str_jumin2.substring(i,i+1);
    if (str_dig1<'0' || str_dig1>'9')
    {
     digit1=digit1+1
    }
   }
   if ((str_jumin2 == '') || ( digit1 != 0 ))
   {
    alert('잘못된 주민등록번호입니다.\n\n다시 확인하시고 입력해 주세요.');
    document.regForm.jumin1.value = "";
    document.regForm.jumin2.value = "";
    document.regForm.jumin_check.value = "false";
    document.regForm.jumin1.focus();
    return false;  
   }
   if (str_jumin1.substring(2,3) > 1)
   {
    alert('잘못된 주민등록번호입니다.\n\n다시 확인하시고 입력해 주세요.');
    document.regForm.jumin1.value = "";
    document.regForm.jumin2.value = "";
    document.regForm.jumin_check.value = "false";
    document.regForm.jumin1.focus();
    return false;  
   }
   if (str_jumin1.substring(4,5) > 3)
   {
    alert('잘못된 주민등록번호입니다.\n\n다시 확인하시고 입력해 주세요.');
    document.regForm.jumin1.value = "";
    document.regForm.jumin2.value = "";
    document.regForm.jumin_check.value = "false";
    document.regForm.jumin1.focus();
    return false;  
   }
   if (str_jumin2.substring(0,1) > 4 || str_jumin2.substring(0,1) == 0)
   {
    alert('잘못된 주민등록번호입니다.\n\n다시 확인하시고 입력해 주세요.');
    document.regForm.jumin1.value = "";
    document.regForm.jumin2.value = "";
    document.regForm.jumin1.focus();
    document.regForm.jumin_check.value = "false";
    return false;  
   }
   var a1=str_jumin1.substring(0,1)
   var a2=str_jumin1.substring(1,2)
   var a3=str_jumin1.substring(2,3)
   var a4=str_jumin1.substring(3,4)
   var a5=str_jumin1.substring(4,5)
   var a6=str_jumin1.substring(5,6)
   var check_digit=a1*2+a2*3+a3*4+a4*5+a5*6+a6*7
   var b1=str_jumin2.substring(0,1)
   var b2=str_jumin2.substring(1,2)
   var b3=str_jumin2.substring(2,3)
   var b4=str_jumin2.substring(3,4)
   var b5=str_jumin2.substring(4,5)
   var b6=str_jumin2.substring(5,6)
   var b7=str_jumin2.substring(6,7)
   var check_digit=check_digit+b1*8+b2*9+b3*2+b4*3+b5*4+b6*5
   check_digit = check_digit%11
   check_digit = 11 - check_digit
   check_digit = check_digit%10
   if (check_digit != b7)
   {
    alert('잘못된 주민등록번호입니다.\n\n다시 확인하시고 입력해 주세요.');
    document.regForm.jumin1.value = "";
    document.regForm.jumin2.value = "";
    document.regForm.jumin_check.value = "false";
    document.regForm.jumin1.focus();
    return false;  
   }
   else
   {
    document.regForm.jumin_check.value = "true"
    alert('올바른 주민번호입니다');
   }
  }
 }
 //-->
 </script>

프레데터 파워스워브 베컴 TRX FG-909592

ㅇ 제 조 사 : 아디다스
ㅇ 원 산 지 : 베트남
ㅇ 소    재 : 합성가죽
ㅇ 부 소 재 : TPU
 
- 데이비드 베컴 스페셜 에디션/베컴 컬러 SPECIALTY SHOP ONLY
- 프레데터의 9번째 버전으로서 2008년형 디자인의 가을, 겨울 컬러
- 완전히 새로워진 갑피디자인과 더욱 향샹된 기능의 고무
  돌기는 착용자의 경기력을 최고의 수준으로 끌어올리게될 것
- 최고급 가죽을 사용하였으며, 업그레이드된 파워펄스기능은 더욱 강력한슛을 가능하게 하며, 드리블시에는 무게중심을 발바닥에 고루 전달시켜 착용자의 체력에 무리가 없도록 고안되었음
- 발목의 컬러부분은 부드러운 송아지 가죽을 사용하여 발목에 거부감이 없으며,
  프레데터만의 다이나믹 파워시스템은 2007년형 보다 3% 더욱 강력한 파워와 8% 더욱 강화된 스핀 그리고 업그레이된 큐셔닝을 제공
- 아디프렌이 인솔 뒷축에 삽입되어 있음

프레데터 PS FG CL(챔스) 스타-G02399

ㅇ 제 조 사 : 아디다스
ㅇ 원 산 지 : 베트남
ㅇ 소    재 : 천연 캥거루 가죽
ㅇ 부 소 재 : TPU
ㅇ 색    상 : 검정/메탈실버/적색

아디퓨어 II TRX FG-G02666

ㅇ 제 조 사 : 아디다스
ㅇ 원 산 지 : 인도네시아
ㅇ 소    재 : 천연 캥거루 가죽
ㅇ 부 소 재 : TPU
ㅇ 색    상 : 적색/백색
 
- 축구 매니아를 위해 수제작된 제품
- 캥거루 가죽을 사용해 뛰어난 착용감
- 전통적인 느낌의 디자인에 현대의 제작 기술을 적용
- 출시 후 폭발적인 소비자 반응을 이어오고 있는 아디다스의 주요 3가지 축구 테마 중 하나
- UCL(챔스) 컬러
 
- 이 제품은 천연잔디 및 인조잔디용 제품입니다.
 
 
※ FG 제품을 맨땅에서 사용시 A/S가 전혀 되지 않습니다

 

F50 i 튜닛-G02526

ㅇ 제 조 사 : 아디다스
ㅇ 원 산 지 : 중국
ㅇ 소    재 : 최고급 천연 소가죽+합성가죽
ㅇ 부 소 재 : TPU
ㅇ 색    상 : 남색/골드/스카이블루
 
- 2009년형으로 새롭게 진화한 F50 튜닛
- 편안한 피팅을 위해 개발된 새로운 라스트를 사용하여 기존의 F50에서는 느낄 수 없었던 편안한 착용감을 제공.
- 최고급 천연 소가죽을 사용하여 편안한 착용감 제공.
- 메시 전용 디자인/컬러.
- SG/FG/HG 교체가능.

- 새로운 F50i는 이전 모델인 튜닛(TUNiT ™)의 5번째 버전으로 선수들은 다양한 종류의 어퍼와 두 종류의
  섀시와 인솔, 세 가지 스터드 중에서 개개인의 취향이나 날씨 상태를 고려하여 개성있는 자신만의 맞춤형
  조립 축구화를 만들수 있다. 튜닛의 모듈성과 혁신적인 스프린트 스킨, 써멀 본딩된 신발 끈커버와
  트랙션(TRAXION)테크놀로지가 더욱 업그레이드 되었다.

1. 어퍼- 어퍼 선택시 고려해야 될 점은 컬러뿐만 아니라 경기시 날씨 상태도 염두 해야 한다.
   선수들은 세 종류의 소재들 중에서 그들이 원하는 소재를 선택할 수 있다.
   간편하고 유연성이 뛰어나며,방수 기능이 있는 스틸 블루와 블랙 컬러의 스프리트 스킨 합성 외피,
   블랙과 화이트 컬러의 전통 가죽 외피,초경량의 우수한 통기성이 특징인 클라이마 쿨(CLIMACOOL)
   소재의 어퍼 중에서 기능에 맞는 어퍼를 선택 하도록 한다.
   발등의 써멀 본딩(바느질없는 열 접착방식)된 레이스커버는 신발과 공의 접촉면적을 증가 시켜
   끈으로 인한 볼컨트롤 효과를 감소 시키고 아울러 방수 효과까지 있다.

2. 섀시- 어퍼를 선택한 다음, 신발 안쪽 바닥에 위치하는 섀시를 선택한다.
   스터드를 고정시키는 섀시는 완변한 안정성과 스터드 압력을 골고루 분산시켜 주는
   컴포트 섀시와 발의 앞 부분에 최대한의 유연성을 제공하고 신발의 무게를 상당히 감소
   시켜주는 초경량 울트라 라이트 섀시가 있다.

3. 스터드- 선택한 섀시는 신발 안쪽 바닥에 삽입하고 스터드는 신발 바깥 바닥의 구멍에 맟춰 끼운다.
   트랙션 테크놀로지를 특징으로 하는 SG/FG/HG 3가지 종류의 스터드는 어떤 경기장 상태에서도 완벽하게
   고정되어 우수한 착용감과 밀착감을 제공해 최상의 경기력을 보장해 준다
   Round studs Traxion studs
   O형의 깉 라운드 동그라미 형태
   전통적인 스터드 모양으로 직선 움직임에 용이하며 좌우 흔들림 방지 터닝이 빠른 스피드용
   스터드의 밑창 배열이 일자로 되어 있어서 더욱 빠른 스피드를 도와줌
   엑스 트렉션(X-traction)
   더욱 간편하게 빠르게 교환 탈착할 수 있게 설계(갈아끼울 수 있음을 의미)
   그라운드에서 더욱 확실한 접지력과 효과적으로 발에 전달되어 오는 압력을 분산하여
   선수들의 경기력을 한층 더 끌어 올릴 수 있음.

4. 인솔- 축구화 조립의 마지막 단계는 신발의 편암함과 통기성 정도에 따라 인솔을 선택하는 것이다.
   발 모양에 맞춰진 부드러운 쿠셔닝 인솔과 보다 얇고 구멍이 뚫린 초경량의 통기성 인솔은
   최상의 편안함을 제공한다.

5. 힐 카운터- F50i는 이전 모델과 같이 `알레스 클라(ALLES KLAR=ALL CLEAR)`라는 반투명한 힐이 특징이다.
   이 반투명 힐은 투명 TPU소재로 신발 무게를 줄여주는 동시에 견고한 품질로 신발의 안정성과 유연성을
   향상시킨다. 하낭의 소재로 제작되었음에도 불구, 뒤꿈치 부분은 안정선을 위해 강력하게 고정시켜 주는
   반면 옆 부분은 자유로운 움직임을 위해서 부드럽고 유연하게 발을 감싸주도록 만들어 졌다.

JSP 세션을 이용해서 로그인상태 유지

입력을 누르면 자료는 디비와 접속하여 비교분석을 하게되고

회원이라는 등식이 성립되면 변수 myId 로 반환하게 만든다.

 

session.setAttribute("memID", myId); <- memID 라는 세션명으로 저장하면

 

 

웹페이지가 살아있는 동안 또는 유지기간내에

 

 <%String memberId = (String)session.getAttribute("memID");%>

 

getAttribute 로 꺼내서 사용할 수 있다.  이 때 세션이름 사용

 

* 세션저장시 세션명을 달리하면 여러개의 세션도 저장이 된다. *

 

 

그럼 여기서 로그인 구성의 마무리 로그아웃은

당연히  <% session.invalidate(); %> 로 싹 지워버리자.

그리고 스크립트로  alert("로그아웃 되었습니다."); 을 뿌려주는 쎈스!

 

F30 i TRX HG WF-G03659

ㅇ 제 조 사 : 아디다스
ㅇ 원 산 지 : 중국
ㅇ 소    재 : 합성가죽
ㅇ 부 소 재 : TPU
ㅇ 색    상 : 블루/검정/백색
 
- 새롭게 진화된 F50의 디자인을 그대로 적용한 감각적인 디자인
- 아디소프트 어퍼를 사용하여 더욱 부드럽고 편안한 착용감 제공
- 런칭 컬러
- 하드그라운드 용 와이드 핏
 
※ 이 제품은 하드그라운드 맨땅용 제품입니다.
 
 

파루카스 수퍼 와이드 K TRX HG-

ㅇ 제 조 사 : 아디다스
ㅇ 원 산 지 : 일본
ㅇ 소    재 : 캥거루가죽,합성피혁
ㅇ 부 소 재 : TPU
ㅇ 색    상 : 백색/곤색/실버

- 수퍼와이드핏
- adiTraxion
- TPU 아웃솔
- 와이드 핏으로 인해 쉽게 벗고 신을 수 있는 제품
 
※ 이 제품은 하드그라운드 맨땅용 제품입니다.
 
 

우편번호 검색


<html>
<head><title>주소검색</title> </head>
<center><imgsrc= "image/ZipFinder.gif"></center><br>
<table align=center cellpadding=15 cellspacing=0 width=450 border=0>
<tr><td height=10></td></tr>
<tr><td bgcolor=#F7F6EA>
<font size=2 color=#7b775f> 입력할지역의동이나읍/면의이름을
빈칸없이입력한후<br><br><b>[찾아보기]</b>버튼을
누르세요. <br><br>우편번호까지자동으로찾아줍니다.
<p>
<b>보기</b> : 등촌3동, 상주면, 보성읍, 장기동, 신당동</font>
</td></tr>
</table>
<form method="post" action="zipsearch.jsp">
<table align=center border=0>
<tr>
<td>
<font size=2 color=#7b775f>
읍/면/동이름<input type="text" name="dong">
<input type="submit" value="찾아보기"></font>
</td>
</tr>
</table>
</form>
</html>

머큐리얼 탈라리아 5 HG(071)

ㅇ 제 조 사 : 나이키
ㅇ 원 산 지 : 중국
ㅇ 소    재 : 인조가죽,EVA
ㅇ 부 소 재 : 열성형 플라스틱
ㅇ 색    상 : 검정/노랑
 
- 갑피: 경량의 인조가죽을 사용하여 볼 터치감이 우수함.
- 중창: EVA 깔창을 사용하여 스터드압을 줄여 착화감을 증가함.
- 겉창: 전장 TPU(열성형폴리우레탄)을 사용하여 거친 노면에서도 내구성이 우수하며 접지력도 우수함.
- 특징: 스피드를 중요시하는 선수를 위한 경량의 제품. 맨땅용 제품
 

JSP 회원가입

package member;

import java.sql.*; 
import member.MemberBean;

 

패키지를 member 로 묶어주자

Sql 문 사용을 위한 import java.sql.*;

MemberBean; 을 사용하기 위해 멤버빈의 패키지 내용과 동일하게 써준다.

 

 

public class MemberProcess
{
  public MemberProcess()
  {
  }
  public void memInsert( MemberBean memberBean )

 

드디어 등장하는 memInsert !!

등록페이지 하단에서 위 메서드를 불러왔고 memberBean 의 값을 넣었는데

이곳에서 받아서 처리를 하게된다.

 

 

    String URL = "jdbc:mysql://localhost:3306/ju1?useUnicode=true&amp;characterEncoding=euckr";

 

 접속을 하기위해 URL 변수에 주소를 담는다.

 


    String USER = "mio";
    String PASS= "****";

 

 접속을 하기 위한 아이디와 패스워드 변수도 지정


   
    Connection conn = null;
    PreparedStatement pstmt = null;

 

 커넥팅 변수도 준비하고, insert 를 위한 프레퍼레드스테이트먼트도 준비하자.

 

여기서 잠깐 !!

PreparedStatement pstmt 란?

 

1.  Statement 의 확장문이다.

2.  디비에 쿼리를 날려서 결과를 얻어내는 용도로 쓰인다.

 

   사용방법은

   

    ┌ Connection 객체를 생성한다.

    └ Connection 객체로부터 PreparedStatementStatement를 만들어 내면 된다.

 

 

자 다음..

 

    try
    {

      Class.forName("com.mysql.jdbc.Driver");
    }
    catch (ClassNotFoundException ex1)
    {
    }

 

드라이버 로딩부분을 예외처리부분으로 감싸주자.

 

try
    {
        conn = DriverManager.getConnection(URL, USER, PASS);

 

 디비 접속설정을 완료해주시고 ~

    

 

       String sql = "INSERT INTO mem1";
                sql += "(name, passwd, id )";
                sql += "VALUES ( ?, ?, ?)";

 sql 셋팅을 하자. mem1 디비에 이름과 비번과 아뒤를 넣으라는 것..

 넣는 순서는 디비 구성과 동일하게 해주자.

       

 

        pstmt = conn.prepareStatement( sql );

 

위에서 설명했던 방식으로 변수에 conn 접속설정을 받아서 (sql) 문을 실행시키자.


        pstmt.setString( 1, memberBean.getId() );
        pstmt.setString( 2, memberBean.getName() );
        pstmt.setString( 3, memberBean.getPasswd() );

 

  디비 접속과 동시에 1번째 테이블안에 값으로 가져왔던 멤버빈의

  getId() 메소드를 실행시켜 리턴값을 저장시킨다.

  이런방식으로 3, 번 까지 완료.     1,2,3, 은 그냥 순서지정하는 의미이다.

     

   
        pstmt.executeUpdate();

 

    executeUpdate() 는 실행된 결과값을 반환한다.

 

여기서 잠깐 !!

 

  ┌ executeQuery select 할 때 사용하고, 결과값으로 ResultSet이 나온다.

  └ executeUpdate insert, update, delete를 할때 사용하고,

                                    결과 값으로 실행된 횟수를 반환하게 된다.


  }
    catch (SQLException ex2)
    {

 

  예외처리 완료 


    }
    finally
    {
 
      if( pstmt != null ) try { pstmt.close(); } catch( SQLException ex ) {}
      if( conn != null ) try { conn.close(); } catch( SQLException ex ) {}

 

 파이널리 절에서는 꼭 실행되어야 할것들을 넣어주자.

 PreparedStatement 를 닫아주자.

 conn 을 닫아주자


    }
  }
}

 

컴파일 후 완료~!

 

회원입력.jsp 와 등록완료.jsp 는 Root 에 넣고

MemberBean.java 는 컴파일 하여 패키지명과 동일한

 

\ROOT\WEB-INF\classes\member 에 넣어주고

 

MemberProcess.java 는

 

\ROOT\WEB-INF\classes\member 에서 컴파일 한 후 패키지명과 동일한

\ROOT\WEB-INF\classes\member 에다 넣어주자.

 

필자는 MemberProcess 가 컴파일 되지 않아서 상당히 고민했다.

컴파일 에러메세지를 떠듬떠듬 읽어보니

member 폴더에 있는 MemberBean 클래스를 임폴트 하지 못한다고 나온다.

 

네이버에서 5시간정도 검색을 해본 결과

CLASSPATH 를 잘못 설정했었다는 결론에 도달하여

재설정 후 재 컴파일을 시도 했으나 이번엔 다른 에러메세지가 떴다.

 

하위폴더에 MemberBean 클래스가 없다는 .. 뜻으로 파악되어

 

classes                           <-이곳에서 MemberProcess 를 넣고

         └-> member           <-이곳에 MemberBean 을 넣고

 

비로소 컴파일이 완료되었다.  악몽의 시간들이 지나고 광명의 빛이 내려온 것이다. 아흑..

허나.....

페이지 입력테스트시 500 에러 .. 컴파일된 MemberProcess.클래스를

 

classes                                     <-이곳에서

         └-> member                     <- 이곳으로 옮겨넣고

     (MemberProcess.class)

      (MemberBean.class)

티엠포 슈퍼 리게라 K-HGE

ㅇ 제 조 사 : 나이키
ㅇ 원 산 지 : 중국
ㅇ 소    재 : 캥거루가죽,EVA
ㅇ 부 소 재 : 열강화 플라스틱

- 갑피: 최고급 캥거루 가죽을 사용하여 매우 우수한 착화감을 제공 기존의 축구화의 갑피와 비교
   가죽내의 폼 소재를 줄여 볼 터치감을 더욱 강조하였음
- 중창: EVA소재의 인솔을 발 모양에 맞게 몰딩을 하여 스터드압을 감소하는 동시에 우수한 착화감제공

- 겉창: 새롭게 개발된 HGE스터드를 사용하여 맨땅 및 천연잔디에서 우수한 내구성과 접지력을 선보임
  HGE스터드는 매우 유연하면서도 내구성이 우수하여 다양한 노면에서 사용이 가능함
- 특징: 티엠포 라인에서 가장 가볍고 볼 터치감이 우수한 제품 맨땅 및 천연잔디에서 사용가능
 
- 맨땅 및 천연잔디용


티엠포 호나우딩요 FG(271)

ㅇ 제 조 사 : 나이키
ㅇ 원 산 지 : 중국
ㅇ 소 재 : 캥거루 가죽
ㅇ 부 소 재 : 포론/열강화 플라스틱
- 갑 피 : 힘, 내구성, 감각을 조합한 최상급 천연 캥거루 가죽 소재 사용.
- 중 창 : 향상된 쿠셔닝과 편안한 착화감을 위해 전장포론과 몰딩 처리된 깔창 사용
- 겉 창 : 경량성 TPU와 앞부분 유연성을 위한 플렉스존 그리고 360도 콘트롤을 위한
스터드 마무리.
- 특 징 : 전문선수 및 상급 동호인용으로 최상의 기능성과 소재를 모두 갖춘
천연 캥거루가죽 제품.

에어줌 토탈 90 3 FG(011)

* 소재
갑피:부드럽고 신축성이 우수한 초경량의 KNG-100소재 (나이키가 개발한 인조가죽)
중창:몰드깔창,포란패드
밑창:새로 디자인된 익스트림트랙 밑창
* 용도 : 맨땅과 잔디겸용
* 국가대표 지원상품, 잉글랜드 국가대표 루니가 착용한 상품

 

토탈 90 레이저 II FG LTD




[나이키축구화]머큐리얼 베이퍼 5 슈퍼플라이

 

머큐리얼 베이퍼 5 슈퍼플라이

[직수입] 머큐리얼 베이퍼 5 슈퍼플라이
 
- 8월초 입고예정입니다.
- 직수입상품으로 A/S가 불가능합니다.
- 극소량으로 입고될 상품이므로 예약 및 입금완료해 주셔야 합니다.