JSP기초 및 자바스크립트 유효성 검사
* 유효성 검사
- 사용자에 의해 입력된 값이 제대로 입력되었는지 확인하는 작업
주로 JavaScript가 그 역할을 담당한다
.숫자를 제대로 입력했는가?
.아이디가 공백인가?
.이메일 주소에 @ 문자를 입력했는가?
.주민번호와 이름이 일치하는 실명인가? 에 대한 유효성 검사는 불가능하다.
- JavaScript
-> jQuery로 발전하고 있음
- 자바스크립트에서 유효성검사를 해야 하는 시점
.폼이 전송될 때 할것인가?
.커서가 다음 요소로 이동될 때 할것인가?
- 자바스크립트는 이벤트를 발생시킨후 함수호출에 의해 작동되게끔 프로그램을 구현한다
* 자바스크립트의 특징
- 대소문자를 엄격히 구분한다
- 자료형이 없다 (int double String이 존재하지 않는다)
- 함수의 리턴형이 없다
- 완벽한 객체지향언어는 아니다
- 웹브라우저에 의해 해석된다
- 최상위 객체 window
* JSP페이지에 HTML 태그를 사용할 명령어가 많을 경우에는
차라리 HTML 페이지에 JSP코드를 삽입하는게 수월하다
#################################################################
sungjukForm.html---------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> 성적폼 작성 </title>
<script type="text/javascript">
<!--
function Check()
{
var uname=document.myform.uname.value;
//document->body를 가르키는 객체
//이름 앞뒤의 공백 제거
//trim()함수가 없음으로 정규 표현식으로 공백제거
uname=uname.replace(/^\s*|\s*$/g, '');
if(uname.length==0)
{
//메세지상자
alert("이름입력바람!!");
document.myform.uname.value="";
//uname 텍스트상자에 커서 생성
document.myform.uname.focus();
return; //Check()함수호출부분으로 되돌아감
}
//숫자로 입력이 되어 있는지 확인
var kor=document.myform.kor.value;
if(isNaN(kor)||kor.length==0)
{
//따옴표 안에 문자가 입력되면 true반환
alert("국어점수 숫자로 제대로 입력바람!!");
document.myform.kor.value="";
document.myform.kor.focus();
return;
}
kor=parseInt(kor);
if(!(kor>=0 && kor<=100))
{
alert("국어점수 0~100사이 입력바람!!");
document.myform.kor.value="";
document.myform.kor.focus();
return;
}
var eng=document.myform.eng.value;
if(isNaN(eng)||eng.length==0)
{
alert("영어점수 숫자로 제대로 입력바람!!");
document.myform.eng.value="";
document.myform.eng.focus();
return;
}
eng=parseInt(eng);
if(!(eng>=0 && eng<=100))
{
alert("영어점수 0~100사이 입력바람!!");
document.myform.eng.value="";
document.myform.eng.focus();
return;
}
var mat=document.myform.mat.value;
if(isNaN(mat)||mat.length==0)
{
alert("수학점수 숫자로 제대로 입력바람!!");
document.myform.mat.value="";
document.myform.mat.focus();
return;
}
mat=parseInt(mat);
if(!(mat>=0 && mat<=100))
{
alert("수학점수 0~100사이 입력바람!!");
document.myform.mat.value="";
document.myform.mat.focus();
return;
}
//스크립트를 이용해서 폼전송
//type=submit 기능
document.myform.submit();
}
//-->
</script>
</head>
<body>
<!-- 사용자가 데이터값을 입력하기 좋게
만들어주는 것을 양식(폼)이라 한다. -->
<!-- type=submit 서버로 해당 폼을 전송-->
<!-- action 전송되어온 자료를 받는 파일 지정 -->
<form name="myform" action="sungjukok.jsp">
이름:<input type="text" name="uname" value="홍길동" size="8"><br/>
국어:<input type="text" name="kor" value="80" size="5"><br/>
영어:<input type="text" name="eng" value="90" size="5"><br/>
수학:<input type="text" name="mat" value="70" size="5"><br/>
<input type="button" value="확인" onClick="Check();">
<input type="reset" value="취소">
</form>
<br/>
<!-- 표작성
출력하고자 하는 값은 cell에 써야 한다-->
<table border="1">
<tr> <td>서울</td> <td>안양</td> </tr>
<tr> <td>사과</td> <td>수박</td> </tr>
<tr> <td>개나리</td> <td>무궁화</td> </tr>
</table>
</body>
</html>
#########################################################
sungjukok.jsp------------------
<%
//자바코드를 작성하는 부분
String uname;
int kor;
int eng;
int mat;
//사용자에게서 넘어온 자료를 보관하고 있는 클래스
//request객체
uname=request.getParameter("uname");
//type=text에서 넘어온 값을 보관하고 있는
//request객체는 문자열값으로 저장된다
//처리하고자 하는 값이 정수형이면
//형변환해서 사용해야 한다.
kor =Integer.parseInt(request.getParameter("kor"));
eng =Integer.parseInt(request.getParameter("eng"));
mat =Integer.parseInt(request.getParameter("mat"));
int aver;
aver=(kor+eng+mat)/3;
/*
1)출력방식
*/
//out.print(uname+"<br/>");
//out.print(kor+"<br/>");
//out.print(eng+"<br/>");
//out.print(mat+"<br/>");
//out.print(aver+"<br/>");
/*
2)출력방식
//결과값 table에 출력하기
out.print("<table border='1'>");
out.print("<tr>");
out.print(" <td>이름</td>");
out.print(" <td>" + uname + "</td>");
out.print("</tr>");
out.print("<tr>");
out.print(" <td>국어</td>");
out.print(" <td>" + kor + "</td>");
out.print("</tr>");
out.print("<tr>");
out.print(" <td>영어</td>");
out.print(" <td>" + eng + "</td>");
out.print("</tr>");
out.print("<tr>");
out.print(" <td>수학</td>");
out.print(" <td>" + mat + "</td>");
out.print("</tr>");
out.print("<tr>");
out.print(" <td>평균</td>");
out.print(" <td>" + aver + "</td>");
out.print("</tr>");
//문)평균 10점당 ★하나씩 출력
out.print("<tr>");
out.print(" <td>그래프</td>");
out.print(" <td>");
int su;
for(su=1;su<=aver/10;su++)
{
out.print("★");
}
out.print(" </td>");
out.print("</tr>");
out.print("</table>");
*/
%>
<html>
<head>
<title>성적결과</title>
</head>
<body>
* 성적결과 * <br/>
<table border=1>
<tr>
<td>이름</td>
<td><%out.print(uname);%></td>
</tr>
<tr>
<td>국어</td>
<td><%=kor%></td>
</tr>
<tr>
<td>영어</td>
<td><%=eng%></td>
</tr>
<tr>
<td>수학</td>
<td><%=mat%></td>
</tr>
<tr>
<td>평균</td>
<td><%=aver%></td>
</tr>
<tr>
<td>그래프</td>
<td>
<%
int su;
for(su=1;su<=aver/10;su++)
{
out.print("★");
}
%>
</td>
</tr>
</table>
</body>
</html>
------------------------
* method 방식
1. get방식
- 사용자가 입력한 값 그대로 서버로 전송된다.
- 사용자가 입려한 값이 그대로 URL에 노출된다
- 서로 전송되는 값의 용량의 제한이 있다.
2. post방식
- 사용자가 입력한 값이 코드화 즉, 변환되어 서버로 전송된다
- 주민번호, 은행계좌번호, 비밀번호등은 반드시 post방식으로 한다
- 많은 양을 서버로 전송할 수 있다.