JSP로 주민번호 검사하기
form4.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
// 이놈, 길이, 다음놈
function checkLength(obj, length, nextObj){
if(obj.value.length==length){
var next = document.getElementById(nextObj);
next.focus();
}
}
function checkForm(obj){
var j1 = obj.j1.value;
if(j1.length!=6){
alert("주민번호 앞자리는 6자리 이어야 합니다.");
obj.j1.value = "";
obj.j1.focus();
return false;
}
for(i=0;i<j1.length;i++){
if(j1.charAt(i)<'0' || j1.charAt(i)>'9'){
alert("주민번호 앞자리는 반드시 숫자 이어야 합니다.");
obj.j1.value = "";
obj.j1.focus();
return false;
}
}
var j2 = obj.j2.value;
if(j2.length!=7){
alert("주민번호 뒷자리는 7자리 이어야 합니다.");
obj.j2.value = "";
obj.j2.focus();
return false;
}
for(i=0;i<j2.length;i++){
if(j2.charAt(i)<'0' || j2.charAt(i)>'9'){
alert("주민번호 앞자리는 반드시 숫자 이어야 합니다.");
obj.j2.value = "";
obj.j2.focus();
return false;
}
}
return true;
}
</script>
</head>
<body>
<form action="result4.jsp" method="post" onsubmit="return checkForm(this)">
주민번호 :
<input type="text" maxlength="6" size="10" name="j1" id="j1" onkeyup="checkLength(this,6,'j2')">
-
<input type="password" maxlength="7" size="10" name="j2" id="j2" onkeyup="checkLength(this,7,'submitBtn')">
<input type="submit" value="주민번호 유효성 검사하기" id="submitBtn">
</form>
</body>
</html>
result4.jsp
<%@page import="java.util.Map"%>
<%@page import="java.util.Enumeration"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
// 한글이 POST전송이면 꺠진다. 그래서 받기전에 꼭 인코딩 타입을 지정한다.
request.setCharacterEncoding("UTF-8");
// POST접근이 아니면 폼으로 보내기
if(!request.getMethod().equals("POST")){
out.println("<script>");
out.println("alert('잘못된 접근입니다.')");
out.println("location.href='form4.jsp'");
out.println("</script>");
return;
}
String j1 = request.getParameter("j1");
String j2 = request.getParameter("j2");
String jj = j1 + j2;
int sum = 0;
for(int i=0;i<12;i++){
sum += (jj.charAt(i)-'0') * (i%8+2);
}
sum = (11-(sum%11))%10;
boolean isCheck = ((sum+'0') == jj.charAt(12));
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>"<%=j1 %>-<%=j2 %>"는 <%=(isCheck ? "맞는" : "틀린") %> 주민번호 입니다.</h1>
</body>
</html>