안녕하세요 워누입니다😀

지난 포스팅에 이어 오늘은 전화번호와 이메일 데이터에 대하여 정규표현식을 이용해

유효성을 검사해보는 방법을 포스팅해보겠습니다!

 

1. 전화번호

 

전화번호의 유효성을 검사하려면 먼저 전화번호가 어떤 식으로 구성되어야 하는지 알아야겠죠?

우선 여기서는 우리가 가지고 다니는 휴대전화를 기준으로 설명드리겠습니다. 

 

전화번호 형식은 "010-0000-0000" 이런 식으로 구성되어 있다는 건 모두 아실거에요!

휴대전화는 앞자리가 대부분 010으로 시작을 합니다만, 

예전 폰을 사용하시는 분들은 간혹 011, 016 등도 사용하시더라구요...🤔

 

그래서 앞 세자리는 예전에도 사용했던 번호를 포함해 010, 011, 016, 017, 018, 019까지는 허용하도록 하고,

뒤에 특수기호인 하이픈( - )이 온 다음 중간 자리는 숫자 3자리 또는 4자리이며

다시 뒤에 특수기호 하이픈이 오고 마지막 자리는 숫자 4자리 고정이라는 형식으로 규칙을 정해봅시다. 

 

이렇게 규칙을 정했다면 다음은 패턴을 작성해보아야 겠죠?

 

우선 맨 앞 세자리는 010, 011, 016, 017, 018, 019만 허용하는 패턴은 아래와 같습니다.

(맨 처음에 오는 문자를 의미하는 기호( ^ )를 반드시 붙여줍니다!)

 

^(010|011|016|017|018|019)

 

** OR 연산에 대한 기호로 | 를 사용합니다.

그 다음, 하이픈은 아래와 같이 붙여주시면 됩니다.

 

^(010|011|016|017|018|019)-

 

중간 자리는 숫자가 3자리 혹은 4자리이므로 아래와 같이 패턴을 만들면 되며,

뒤에 하이픈이 한번 더 오므로 같이 붙여줍시다.

 

[0-9]{3,4}-

 

중괄호 {3,4}의 의미는 3, 4 byte를 검사하겠다는 의미입니다. 

 

마지막 자리는 숫자 4자리만 오면 되기에 아래와 같이 패턴을 만들면 됩니다. 

(맨 마지막에 오는 문자를 의미하는 기호( $ )를 반드시 붙여줍니다!)

 

[0-9]{4}$

 

위에서 언급한 규칙을 모두 합쳐서 아래와 같이 패턴을 완성하면 됩니다!

 


:: 전화번호 패턴 ::

 

^(010|011|016|017|018|019)-[0-9]{3,4}-[0-9]{4}$


해당 패턴을 활용하여 아래와 같이 테스트가 가능합니다. 

 

<request.html>

<html>
<head>
 <title> PHP 정규표현식 TEST </title>
</head>
<body>
 <form method="post" action="response.php">
  <table> 
	<tr>
        <th>전화번호 (000-0000-0000 형식에 맞추어 기입하세요.)</th>
        <td><input type="text" name="PhoneNo" value=""></td>
    </tr>
  </table>
  <input type="submit" value="Submit" />
 </form>
</body>
</html>

<response.php>

<?php 

//전달받은 데이터를 변수로 저장 
$phoneNo = $_POST['PhoneNo'];

//전화번호 데이터에 대한 패턴 작성
$phonePattern = '/^(010|011|016|017|018|019)-[0-9]{3,4}-[0-9]{4}$/';


//패턴 체크(유효성 검사)
if(preg_match($phonePattern, $phoneNo, $match)){
	echo "전화번호 : ".$phoneNo."<br>";
	var_dump($match);
	echo "<br>";
} else {
	echo "올바른 전화번호가 아닙니다. 다시 입력해 주세요. <br>";
}


?>

 

<테스트>

request.html : 데이터 입력
response.php : 결과

2. 이메일

 

이번엔 이메일의 유효성 검사를 정규표현식을 이용하여 검사해보도록 합시다!

이메일은 보편적으로 "ID@domain" 형식으로 구성되어 있는데요, 

ID를 영문 소문자, 숫자만 허용하는지 혹은 특수기호를 사용할 수 있는지 등 생성 규칙이 개발자 마음대로인지라,

정규표현식도 일단은 정하기 나름인 것 같습니다. 

우선 여기서는 ID의 허용 범위를 영문(소문자, 대문자 모두 포함), 숫자, 하이픈, 언더바( _ )까지만

포함하는 것으로 정하고 패턴 규칙을 만들면 아래와 같습니다. 

 

^[a-zA-Z0-9]{1}[a-zA-Z0-9\-_]

 

대괄호 [] 안에서 하이픈은 범위를 정하는 기호이다 보니 문자 그대로를 사용하려면 백슬래시( \ )를 사용해야 합니다.

.

아이디 다음에는 @가 고정값이므로 아이디 패턴 뒤에 붙여주면 됩니다. 

@ 다음에는 gmail.com이나 naver.com처럼 도메인 형식이 와야 하죠?

 

위에서 언급한 gmail이나 네이버(naver)처럼 간단하면 좋겠지만

가끔씩 하이픈이 있는 도메인을 보신 적이 있으실 거에요..!

도메인은 영문 소문자와 숫자 그리고 하이픈이 포함될 수 있지만

하이픈은 첫글자와 마지막에는 위치할 수가 없다는 특징이 있습니다. 

 

이러한 규칙들을 준수하여 점( . )을 포함한 도메인의 앞부분은 아래와 같이 패턴을 작성할 수 있습니다. 

 

[a-z0-9]{1}[a-z0-9\-]+[a-z0-9]{1}\.

 

도메인의 뒷부분은 com, net, io, co.kr 등 여러 가지가 있습니다. 

이것 역시 처음과 끝에 점이 위치하지 않아야 하고 이외에는 영문 소문자로만 구성되어야 하는 규칙을 준수하여

아래와 같이 패턴을 작성할 수 있습니다.

 

(([a-z]{1}[a-z.]+[a-z]{1})|([a-z]+))$

 

위에서 작성한 규칙들을 모두 하나로 합쳐보도록 하죠!


:: 이메일 패턴 ::

 

^[a-zA-Z0-9]{1}[a-zA-Z0-9\-_]@[a-z0-9]{1}[a-z0-9\-]+[a-z0-9]{1}\.(([a-z]{1}[a-z.]+[a-z]{1})|([a-z]+))$


....

상당히 길긴 하군요..

샘플 소스도 함께 보도록 하죠🤨

 

<request.html>

<html>
<head>
 <title> PHP 정규표현식 TEST </title>
</head>
<body>
 <form method="post" action="response.php">
  <table> 
	<tr>
        <th>이메일</th>
        <td><input type="text" name="Email" value=""></td>
    </tr>
  </table>
  <input type="submit" value="Submit" />
 </form>
</body>
</html>

<response.php>

<?php 

//전달받은 데이터를 변수로 저장 
$email = $_POST['Email'];

//이메일 데이터에 대한 패턴 작성
$emailPattern = '/^[a-zA-Z0-9]{1}[a-zA-Z0-9\-_]+@[a-z0-9]{1}[a-z0-9\-]+[a-z0-9]{1}\.(([a-z]{1}[a-z.]+[a-z]{1}[a-z]+)|([a-z]+))$/';


//패턴 체크(유효성 검사)
if(preg_match($emailPattern, $email, $match)){
	echo "이메일 : ".$email."<br>";
	var_dump($match);
	echo "<br>";
} else {
	echo "올바른 이메일이 아닙니다. 다시 입력해 주세요. <br>";
}

?>

<테스트>

request.html : 데이터 입력
response.php 데이터 결과

 

위와 같이 전화번호와 이메일을 정규표현식을 이용해서 검증하는 방법을 알아보았는데요, 

사실.. PHP에서는 사실 이메일을 굳이 정규표현식으로 검증하지 않아도 됩니다. 

filter_var()이라는 함수를 이용해서도 이메일을 아래와 같이 검증을 할 수 있거든요!

 

<response.php>

<?php 

//전달받은 데이터를 변수로 저장 
$email = $_POST['Email'];

//이메일 유효성 검사
if(filter_var($email, FILTER_VALIDATE_EMAIL)){
	echo "이메일 : ".$email."<br>";
} else {
	echo "올바른 이메일이 아닙니다. 다시 입력해 주세요. <br>";
}

?>

위 소소코드로 다시 적어서 테스트하셔도 똑같이 이메일을 검증할 수 있습니다. 

filter_var() 함수에 대하여는 기회가 되면 따로 포스팅 해보도록 하겠습니다!

 

정규표현식은 PHP 외 다른 언어에서도 자주 쓰이니 알고 계시면 좋습니다만.. 

저는 아직까지는 전 회사에서 써먹어본 경험은 없네요🙄🙄🙄

 

정규표현식에 대하여 문법이나 예시, 개념 등을 자세히 알고 싶은 분들 혹은 실무에서 사용하셔야 되는 분들은

이전 포스팅에서도 언급했지만 위키 백과에서도 자세히 나와있으니 참고하시면 도움이 될 거에요!

 

https://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D

 

읽어주신 분들께서 도움이 되었기를 바라며,

오늘 포스팅은 여기서 마치도록 하겠습니다 ㅎㅎ

 

 

안녕하세요 워누입니다. 

오늘은 PHP에서 사용하는 비교연산자 중 헷갈릴만한 요소를 포스팅해보고자 합니다!

.

우선 소스부터 함께 보시죠!

.

:: 소스코드 - equalTest.php ::

<?php 

$int5 = 5;				// 정수형 숫자 5
$str5 = '5';				// 문자열 5

if ($int5 == $str5){		
	echo "true"."<br>";
} else {
	echo "false"."<br>";
}

if ($int5 === $str5){
	echo "true"."<br>";
} else {
	echo "false"."<br>";
}
?>

위 소스코드는 숫자 5와, 문자열 5를 비교하여 같으면 true, 다르면 false를 출력하는 소스코드입니다. 

아래 결과를 보기 전 결과가 어떨지  미리 생각해보아요~

.

결과는 어떤지 이제 한번 보도록 하죠!

.

:: 결과화면 ::

equalTest.php 실행화면

 

비교연산자 중 '==' 으로 비교한건 true가 나오고, '===' 으로 비교한건 false가 나왔네요! 

이유는 '=='으로 비교할 땐 값의 일치여부만 판단하지만,

'==='으로 비교하게 되면 자료형의 일치여부까지도 판단하기 때문인데요!

즉, 변수 int5와 str5의 값은 동일하게 '5'이므로 '=='으로 비교하였을 땐 같다고 판단하여 true를,

'==='으로 비교하였을 땐 자료형이 각각 정수, 문자열로 서로 다르기에 false를 출력하였습니다!

.

그렇다면 부정을 의미하는 !=, !==은 어떤지 같이 살펴 볼까요?

 

:: 소스코드 - equalTest2.php ::

<?php 

$int5 = 5;				// 정수형 숫자 5
$str5 = '5';				// 문자열 5

if ($int5 != $str5){		
	echo "true"."<br>";
} else {
	echo "false"."<br>";
}

if ($int5 !== $str5){
	echo "true"."<br>";
} else {
	echo "false"."<br>";
}

?>

 

이번엔 반대로 다르면 true, 같으면 false를 출력하도록 바꿨습니다.

결과를 바로 보시죠!

 

:: 결과화면 ::

equalTest2.php

 

예상대로 '!='로 비교하였을 땐 두 변수 모두 같은 값을 가지고 있어 false를 출력하였고, 

'!=='으로 비교하였을 땐 두 변수의 자료형이 다르니 true를 출력하였네요!

 

!= 연산자는 값의 다름만을 판별하지만,

!== 연산자는 값은 물론 자료형의 다름까지 판별한다는 점을 알게 되었네요 ㅎㅎ

.

위에서 언급한 '==', '===', '!=', '!==' 비교연산자는 javascript에서도 동일하게 적용된다고 하네요!

php가 웹에 특화된 언어인 만큼 javascript를 같이 사용하시는 분도 많을테니 참고하시면 도움이 될 듯합니다!

 

이번 포스팅도 유용한 글이 되었기를 바라며, 여기서 마무리 하겠습니다!

그럼 2만~

 

안녕하세요 워누입니다!

방통대 학업과 회사 일을 병행하다 보니 꾸준히 포스팅하겠다는 의지가 꺾여버렸네요..

그동안 포스팅해야 하는 내용들을 산더미처럼 쌓아놓고 정작 쓰질 않아 귀찮음이 좀 많이 생겼지만,

이제라도 하나씩 풀어야겠습니다!  

.

오늘 포스팅할 내용은 PHP로 JSON data를 다루는 법을 포스팅하겠습니다! 

PHP에서 JSON data를 처리할 수 있도록 json_encode(), json_decode() 함수를 지원합니다.

 

우선 json_encode() 부터 볼까요? 

.

1. json_encode()

:: php에서 배열 데이터를 json 데이터로 바꿔주는 역할을 합니다. 

사용 방법은 아래와 같이 사용하시면 됩니다!

 

json_encode(변수);

.

그럼 거두절미하고 바로 사용예시부터 볼까요?

:: 소스 코드(example) / jsonEncode.php :: 

<?php

//배열 데이터 생성 
$arrData = array(
	'ID' => 'testID',
	'buyerNm' => 'testName',
	'buyerPhoneNum' => '01012345678',
	'goodsData' => array(
		'goodsNm' => 'testGoods',
		'price' => 1000
	)
);

var_dump($arrData);
echo "<br>";

// json 데이터로 변경
$jsonData = json_encode($arrData); 

var_dump($jsonData);

?>

:: 출력 결과 ::

jsonEncode.php 실행 결과

보이시나요?

배열 데이터가 저장된 arrData를 json_encode()라는 함수 하나만으로 json 데이터 형식으로 변경이 되었습니다!!(박수)

변수의 저장 타입도 배열(array)에서 문자열(string)으로 변경된 것을 알수 있습니다 ㅎㅎ

 

그럼 이번엔 반대의 경우로 가볼까요?

우선 json data 파일을 만들어봅시다. json data 파일을 만드는 방법은 간단합니다!

json data 형식을 툴 아무데서나 작성한 뒤, 확장자를 json으로 저장해주시면 되거든요!!

.

:: json data 파일 (ex.json) ::

{
	"ID":"testID",
	"buyerNm":"testName",
	"buyerPhoneNum":"01012345678",
	"goodsData":{
		"goodsNm":"testGoods",
		"price":1000
	}
}

 

이렇게 작성된 json 파일을 file_get_contents() 함수로 불러와서 사용 예정입니다!

(file_get_contents()에 대한 설명은 아래 링크 참조해주세요!)

https://seoneu.tistory.com/25

 

API 통신할 때 file_get_contents(), curl은 무슨 차이일까?

안녕하세요 워누입니다! 오늘은 제가 회사에서 개발하다가 궁금한 점이 부딪혀서 직접 알아본 내용을 포스팅하고자 합니다. . 상황은 API 호출 시 특정 URL로 form-data를 post로 던지고 그 결과를 받

seoneu.tistory.com

 

그리고 아래와 같이 json data를 json_decode() 함수를 이용해 배열 데이터로 바꾸어봅시다!

json_decode(변수, true)

true..? 왜 들어갔는지는 글 아래에 후술해드릴게요!

간략하게만 설명드리면 json_decode에서 true로 지정이 되지 않으면 다른 파일 형태로 변경되더라구요!

그러니 우선은 꼭 true로 설정해주세요!! 

.

이제 사용 예시를 보여드릴께요!

.

:: 소스 코드(example) / jsonDecode.php :: 

<?php

//json data
$jsonData = file_get_contents("ex.json");
var_dump($jsonData);
echo "<br>";

// 배열 타입으로 변경
$arrData = json_decode($jsonData, true);

var_dump($arrData);

?>

:: 출력 결과 ::

jsonDecode.php 출력 결과

 

어떠신가요? 생각보다 간단하죠??

이렇게 json_encode(), json_decode() 사용 방법을 알아보았습니다!

근데 위에서 제가 json_decode()를 사용할 때, 2번째 매개변수로 true를 반드시 입력해야 한다고 했죠??

그 이유가 무엇인지 jsonDecode.php 파일에 코드를 추가하여 다시 실행해보도록 하겠습니다!

 

:: 소스 코드(example) / jsonDecode.php ::

<?php

//json data
$jsonData = file_get_contents("ex.json");
var_dump($jsonData);
echo "<br>";

$arrData = json_decode($jsonData, true); // true 입력
$arrData2 = json_decode($jsonData); // true 미입력 (false)

var_dump($arrData);  // true 입력한 결과
echo "<br>";
var_dump($arrData2); // true 미입력 결과 (false 결과)

?>

:: 출력 결과 ::

jsonDecode.php 출력 결과

....? 

true 값을 없애니, type이 array가 아닌 object(stdClass)라는 값이 왔네요??

이게 무엇인지 몰라 구글신께 검색하여 object라는 type이 PHP에 따로 있어서 찾아본 결과... 

 

일단 뜻은 흔히 알고 있는 객체(클래스의 '객체'할 때 그 객체가 맞습니다!)를 의미하고, 

stdClass는 PHP에서 일반적으로 쓰이는, 비어있는 클래스를 의미하며 다른 object를 캐스팅할 때 쓴다고 합니다. 

.

정리하면 변수 $arrData2는 stdClass에 캐스팅된 object 타입의 변수라 합니다..

(어려워서 좀더 찾아봐야 알 것 같지만 일반적인 배열이 아닌 object 타입의

클래스 기반 배열이라고 보시면 될 것 같네요.. 이거 때문에 회사에서 시간낭비한건 안비밀..)

 

PHP 개발자 분들 중 혹시 자세히 알고 계신 분이 있다면 댓글로 남겨주세요!! 

저도 더 정리할 수 있는 내용이 있다면 수정해서 올리거나, 댓글로 남기도록 하겠습니다!!

오늘 포스팅은 여기서 마치도록 할게요 ㅎㅎ 그럼 이만!

 

 

블로거 워누입니다!

 

오늘은 Java를 html과 융합하여 JSP와 Servlet(서블릿)이라는 것들을 이용하여 웹 페이지를 만들어 보았는데요! 코드가 조금 기니까 자세히 보셔야 해요ㅎㅎ 총 세개의 파일로 구성되어 있구요!하나는 JSP, 하나는 서블릿, 하나는 자바스크립트 파일입니다!

 

아래 코드와 결과를 같이 봐주세요!

 

1) 11_testpage.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>WebTest Page</title>
<script type="text/javascript" src="testScript.js"></script>
</head>
<body>
<form method="get" action="testServlet" name="frm">
<h2> 회원 가입 페이지 </h2>

 <label for="userName"> 이름 </label><span style="color:blue;"> * </span>
 <input type="text" id="userName" name="userName"> <br>
 
 <label> 주민등록번호 </label><span style="color:blue;"> * </span>
 <input type="text" id="userNoBir" name="userNoBir"> -
  <input type="password" id="userNoSec" name="userNoSec"> <br>

  <label for="userID"> 아이디 </label><span style="color:blue;"> * </span>
  <input type="text" id="userID" name="userID"> <br>

  <label for="userPwd"> 비밀번호 </label><span style="color:blue;"> * </span>
  <input type="password" id="userPwd" name="userPwd"> <br>

  <label for="userPwdchk"> 비밀번호확인 </label><span style="color:blue;"> * </span>
 <input type="password" id="userPwdchk" name="userPwdchk"> <br>
 
 <label for="userEmail"> 이메일 </label><span style="color:blue;"> * </span>
  <input type="text" name="userEmail" id="userEmail"> @
  <input type="text" name="Emailaddr" id="Emailaddr">

  <label for="EmailSelect" style="float: left;"> </label>
     <select id="EmailSelect" name="EmailSelect" size="1">
      <option value="직접입력">직접입력 </option>
      <option value="naver.com"> naver.com </option>
      <option value="nate.com"> nate.com </option>
      <option value="hanmail.net"> hanmail.net </option>
      <option value="gmail.com"> gmail.com </option>
    </select>
    <br>

 <label for="userHomeNo"> 우편번호 </label> &nbsp;
    <input type="text" id="userHomeNo" name="userHomeNo"> <br>
   
    <label for="userAddr1"> 주소 </label> &nbsp;
  <input type="text" id="userAddr1" name="userAddr1">
  <input type="text" id="userAddr2" name="userAddr2"> <br>
  
  <label for="userHP"> 전화번호 </label> &nbsp;
  <input type="text" name="userHP"> <br>
 
 <label for="job" style="float: left;"> 직업 </label>
    <select id="job" name="job" size="1">
      <option value="학생"> 학생 </option>
      <option value="공무원"> 공무원 </option>
      <option value="언론"> 언론 </option>
      <option value="컴퓨터/인터넷"> 컴퓨터/인터넷 </option>
   </select>
   <br>

  <label for="chkMailSMS"> 메일/SMS 정보 수신 여부 </label> &nbsp;
  <input type="radio" id="chkMailSMS" name="chkMailSMS" value="yes" checked> 수신
  <input type="radio" id="chkMailSMS" name="chkMailSMS" value="no"> 거부 <br><br>

 <label for="pl"> 개발언어 관심 분야 </label> &nbsp; <br>
 <input type="checkbox" name="pl" value="C"> C
 <input type="checkbox" name="pl" value="C++"> C++
  <input type="checkbox" name="pl" value="Java"> Java <br>
  <input type="checkbox" name="pl" value="C#"> C#
  <input type="checkbox" name="pl" value="JavaScript"> JavaScript
 <input type="checkbox" name="pl" value="python"> python <br>

 <br><br>
 <input type="submit" value="회원가입" style="float: center;" onclick="return check()">
 <input type="reset" value="취소" style="float: center;margin-right:50px">

</form>
</body>
</html>

 

2) testServlet.java <- 얘가 서블릿이에요!

package unit11;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class testServlet
 */

@WebServlet("/testServlet")

public class testServlet extends HttpServlet {

 private static final long serialVersionUID = 1L;

 /**
  * @see HttpServlet#HttpServlet()
  */

 public testServlet() {
  super();
  // TODO Auto-generated constructor stub
 }

 /**
  * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
  *      response)
  */

 protected void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  // TODO Auto-generated method stub
  response.setContentType("text/html; charset=UTF-8");

  String userName = request.getParameter("userName");
  int userNoBir = Integer.parseInt(request.getParameter("userNoBir"));
  int userNoSec = Integer.parseInt(request.getParameter("userNoSec"));
  String userID = request.getParameter("userID");
  String userPwd = request.getParameter("userPwd");
  String userPwdchk = request.getParameter("userPwdchk");
  String userEmail = request.getParameter("userEmail");
  String Emailaddr = request.getParameter("Emailaddr");
  String EmailSelect = request.getParameter("EmailSelect");
  int userHomeNo = Integer.parseInt(request.getParameter("userHomeNo"));
  String userAddr1 = request.getParameter("userAddr1");
  String userAddr2 = request.getParameter("userAddr2");
  String userHP = request.getParameter("userHP");
  String Job = request.getParameter("job");
  String chkMailSMS = request.getParameter("chkMailSMS");

  PrintWriter out = response.getWriter();

  out.print("<html><body>");
  out.print("<h1> 회원 정보 <h1> <br><hr>");
  out.println("이름 : <b>" + userName);
  out.print("<br>");
  out.println("</b>주민등록번호 : <b>" + userNoBir + "-" + userNoSec);
  out.print("<br>");
  out.println("</b>아이디 : <b>" + userID);
  out.print("<br>");
  out.println("</b>비밀번호 : <b>" + userPwd);
  out.print("<br>");
  

  if (Emailaddr.trim() == "")
   out.println("</b>이메일 : <b>" + userEmail + "@" + EmailSelect);
  else
   out.println("</b>이메일 : <b>" + userEmail + "@" + Emailaddr);  
  out.print("<br>");

  out.println("</b>우편번호 : <b>" + userHomeNo);
  out.print("<br>");
  out.println("</b>주소 : <b>" + userAddr1);
  out.print(userAddr2);
  out.print("<br>");
  out.println("</b>핸드폰번호 : <b>" + userHP);
  out.print("<br>");
  out.println("</b>직업 : <b>" + Job);
  out.print("<br>");
  out.println("</b>메일/문자 수신 여부 : <b>" + chkMailSMS);
  out.print("<br>");

  String pls[] = request.getParameterValues("pl");
  if (pls == null) {
   out.print("</b>선택한 항목이 없습니다. <b>");
  } else {
   out.println("</b>관심분야 : <b>");
   for (String pl : pls)
    out.print(pl + " ");
  }

  out.print("</b><br>");
  out.println("</b><br><br><a href='javascript:history.go(-1)'>다시</a>");
  out.print("</body></html>");
  out.close();
 }

 /**
  *
  * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
  *      response)
  *
  */

 protected void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  // TODO Auto-generated method stub

  doGet(request, response);

 }

}

 

3) testScript.js

/**
 *
 * 입력된 값에 대하여 유효성을 검사하는 자바스크립트입니다.
 *
 */

function check() {

 if (document.frm.userName.value == "") {
  alert("이름을 입력해주세요.");
  document.frm.userName.focus();
  return false;
 } else if (document.frm.userNoBir.value == "") {
  alert("주민번호 앞자리를 입력해주세요.");
  document.frm.userNoBir.focus();
  return false;
 } else if (isNaN(document.frm.userNoBir.value)) {
  alert("숫자로 입력해주세요.");
  document.frm.userNoBir.focus();
  return false;
 } else if (document.frm.userNoBir.length == 6) {
  alert("주민번호 앞자리는 6자리여야 합니다. 다시 입력해주세요.");
  document.frm.userNoBir.focus();
  return false;
 } else if (document.frm.userNoSec.value == "") {
  alert("주민번호 뒷자리를 입력해주세요.");
  document.frm.userNoSec.focus();
  return false;
 } else if (document.frm.userNoSec.length == 7) {
  alert("주민번호 앞자리는 7자리여야 합니다. 다시 입력해주세요.");
  document.frm.userNoSec.focus();
  return false;
 } else if (isNaN(document.frm.userNoSec.value)) {
  alert("숫자로 입력해주세요.");
  document.frm.userNoSec.focus();
  return false;
 } else if (document.frm.userID.value == "") {
  alert("아이디를 입력해주세요.");
  document.frm.userID.focus();
  return false;
 } else if (document.frm.userID.length < 4) {
  alert("아이디는 최소 4자리 이상이어야 합니다.");
  document.frm.userID.focus();
  return false;
 } else if (document.frm.userPwd.value == "") {
  alert("비밀번호를 입력해주세요.")
  document.frm.userPwd.focus();
  return false;
 } else if (document.frm.userPwdchk.value == "") {
  alert("비밀번호 확인란에 비밀번호를 재입력해주세요.");
  document.frm.userPwdchk.focus();
  return false;
 } else if (document.frm.userPwd.length < 6) {
  alert("비밀번호는 최소 6자리 이상이어야 합니다.");
  document.frm.userPwd.focus();
  return false;
 } else if (document.frm.userPwd.value != document.frm.userPwdchk.value) {
  alert("비밀번호가 일치하지 않습니다. 다시 확인해주세요.");
  document.frm.userPwd.focus();
  return false;
 } else if (document.frm.userEmail.value == "") {
  alert("이메일 계정을 입력해주세요.");
  document.frm.userEmail.focus();
  return false;
 } else
  return true;

}

---------------------------------------------------------------------------------------------

 

뭔가 좀 많죠..? ㅎㅎ 그럼 바로 아래 결과를 보겠습니다.

 

1. 출력 화면

.

.

2. 정보 입력

.

.

3. 결과 확인

.

.

나름 괜찮나요? 만약 이름이나 비밀번호 등 * 표시 된것들 중에서 하나 빼고 확인 누르거나 취소 버튼 눌러보거나 하는 액션을 취해주시면 흥미로운 결과도 발견됩니다. 확인해 보시고 이상이 있거나, 지적할 사항, 보충해야 되는 부분들 확인해 주시면 감사하겠습니다 ㅎㅎ 

 

아직 데이터베이스를 구축하지 않아 저장은 되지 않네요 ㅎㅎ 앞으로 데이터베이스를 빨리 익혀서 회원 정보를 구축하는 법도 익혀야겠어요! 그러면 하나의 웹 페이지를 제작할 수 있는 능력이 생기겠죠?? 얼른 제대로 된 웹개발자가 되어야 겠습니다! 그 전까지 같이 공부하고 응원합시다!

 

밤이 늦었으니 전 이만 자러 가볼께요! 다음 포스팅에서 봅시다!! 안녕!!

 

 

 

 

+ Recent posts