사용자에게 ID를 입력 받았을 때
ID는 기본키 이기 떄문에 유일성과 최소성을 만족 해야 한다.
그러기에 해줘야 하는 중복체크
</head>
<body ><!-- onload="info()" -->
<br>
GuestWrite 문서입력화면 <!-- 단독실행가능 -->
<form method="get" action="guestWriteSave2.jsp" name="myform">
사번 : <input type="text" name="sabun" maxlength="4" id="sabun" size="8">
<input type="button" onclick="idCheck();" value="idCheck"><br>
이름 : <input type="text" name="name" id=""><br>
제목 : <input type="text" name="title" id=""><br>
급여 : <input type="text" name="pay" ><br>
메일 : <input type="email" name="email" id=""><br>
<input type="button" onclick="nullCheck();" value="등록하기">
<!--submit의 단점은 value값이 없어도 넘어가버린다는 것
button의 단점은 따로 기능을 정의하기 전까지 값이 넘어가지 않는다는 것 -->
<input type="reset" value="입력취소">
</form>
<br>
<a href="guestWrite.jsp"> [등록] </a>
<a href="index.jsp"> [index] </a>
<a href="guestList.jsp"> [전체출력] </a>
</body>
<input type="button" onclick="idCheck();" value="idCheck"><br>
사용자가 사번을 입력하고 idCheak를 누르면 onclick="idCheck(); 화면으로 이동 한다.
function idCheck(){
a= document.myform.sabun.value;
len_sabun = document.myform.sabun.length;
if(a==null || a==""){
alert("사번데이터를 입력하세요");
myform.sabun.focus();
return;
}
window.open("openID.jsp?idx="+document.myform.sabun.value,
"title","width=500, height=200, left=700, top=300");
dociment.myform.sabun.value
myform 에 있는 sabun.value 의 값을 가지고 온다
if( null check ){
값이 비어있다면 alert로 경고창을 띄어주고
myform.sabun.focus();
초점을 sabun text 창으로 맞추어 준다.
}
window.open ("openID.jsp ? idx=" + document.myform.sabun.value , ~임의 제목~~ , ~~~크기~~~);
openID.jsp 이 창을 열어!
document.myform.sabun.value 이 값 idx 에 담아서 보내주고
</head>
<body bgcolor="yellow" >
<%
Gdata = request.getParameter("idx");
%>
<div>
<img src="images/bar.gif" width=400><br>
<form name="open_form" method="get"
action="openIDSave.jsp?idx=<%=Gdata%>">
userid:<input type="text" name="userid" value="<%=Gdata %>" >
<input type="submit" value="중복처리" >
</form>
<img src="images/bar.gif" width=400><br>
</div>
</body>
<%
Gdata = request.getParameter("idx");
%>
값을 받아와서 받아온 값을 기본 값으로 설정
userid:<input type="text" name="userid" value="<%=Gdata %>" >
중복 처리를 누르면 "submit"!
<form action : "openIDSave.jsp? idx = <%=Gdate%>" >
실행이된다
<body>
<p>
<% //openIDSave.jsp 단독실행하면에러발생
try{
Gdata = request.getParameter("idx");
Gsabun = Integer.parseInt(request.getParameter("userid"));
//중복체크
msg="select count(*) cnt from guest where sabun = " + Gsabun;
//System.out.println("넘어온 값 : " + Gsabun);
ST=CN.createStatement();
RS=ST.executeQuery(msg);
RS.next();
if (RS.getInt("cnt")>0) {
%>
<script type="text/javascript">
alert("이미 있는 사번 입니다. 다른 사번을 이용하세요.");
location.href="openID.jsp";
//history.back();
</script>
<%
}else{
%>
<script type="text/javascript">
alert("사용가능한 sabun 입니다.");
location.href="GuestWrite.jsp";
window.close();
</script>
<%
}
}catch(Exception ex){ System.out.println("에러 "+ex); }
%>
</body>
Gdata = request.getParameter("idx");
데이터를 받아와서
msg="select count(*) cnt from guest where sabun = " + Gsabun;
쿼리문 작성
ST=CN.createStatement();
RS=ST.executeQuery(msg);
SQL 호출 해서 이미 있는 사번인지 확인
if( cnt 가 1 이상이라면 이미 존재 ){
alert("이미 있는 사번 입니다. 다른 사번을 이용하세요.");
사용 할 수 없다는 경고문
location.href = "openID.jsp"
openID.jsp 로 다시 이동한다
} else{
alert("사용가능한 sabun 입니다.");
사용 가능하다는 안내문
location.href = "GuestWrite.jsp"
GuestWrite.jsp 여기로 다시 이동하고 (다시 입력해)
window.close();
openID.jsp 창을 닫아준다
}
중복 체크 하는 법이 머릿속으로는 그려졌지만 코드로 알아가기는 쉽지 않았다.
그래도 이해하고 나니 어떤식으로 흘러가는지 이해하게 되었다.
다음 번에 똑같은 문제가 주어졌을 때 더 나은 코드를 작성 할 수 있을꺼같은 느낌
'개발중 > Web' 카테고리의 다른 글
Web01입력 (0) | 2020.07.27 |
---|---|
TOMCAT 설정하기 (0) | 2020.07.26 |
Web03 응용해서 내가 다 만들어보기 (0) | 2020.07.24 |
Web03 readonly (0) | 2020.07.23 |
Web03 post / get (0) | 2020.07.23 |