강좌
클라우드/리눅스에 관한 강좌입니다.
프로그램 분류

beans 활용

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

icon01.gif title35.gif
2001-02-03 kenu

점점 생각은 많고 강좌를 올릴 시간은 없네요. 죄송합니다. 오늘은 bean 에 대해서 조금 깊게 들어가보겠습니다. 주민등록번호 13자리를 가지고 가져올 수 있는 정보가 있습니다.

일단 생일을 알 수 있죠.
남자인지 여자인지 알 수 있습니다. 남자는 1,3 여자는 2,4
현재 나이도 알 수 있겠죠.
그 밖에도 여러가지 있을 수 있겠지만 일단 주민등록번호를 입력하면 이 3가지를 출력해 주는 프로그램을 구현해보겠습니다.

scriptlet은 쉽거든요. bean으로 하자고 하면 괜히 어렵게 느껴집니다. java에 아직 익숙지 않은 탓이죠. 하지만 태산이 높다하되 하늘 아래 뫼이로다 ... 라는 시조 다 아시죠. 일단 시작해 봅시다.

 

입력받는 부분입니다. bean.htm 입니다. 위치는 c:/jsphome/bean.htm 입니다.

bean.htm

<html>
<head>
<title>주민번호</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<form name="form1" method="post" action="bean.jsp">
<p> 이름
<input type="text" name="name">
</p>
<p> 주민번호<br>
<input type="text" name="jumin1" maxlength="6" size="6">
-
<input type="text" name="jumin2" size="7" maxlength="7">
</p>
<input type="submit" name="Submit" value="보내기">
</form>
</body>
</html>

정말 어려운 것 없습니다. maxlength는 입력 글자의 최대치를 정해주는 것입니다. 이런 설명은 앞으로 뺄께요. 주의해서 보실 것은 form 태그의 action 속성입니다. 보내기 버튼이 눌려지면 name 과 jumin1, jumin2 라는 3개의 값이 bean.jsp 로 전달됩니다.

 

다음은 처리해주는 부분입니다. 한 가지 앞서서 이름부터 해결해 보겠습니다.

bean.jsp (1)

<jsp:useBean id="jumin" class="JuminNumber" />
<jsp:setProperty name="jumin" property="*"/>
이름 : <jsp:getProperty name="jumin" property="name"/>

화면에 에러가 날 것입니다. JuminNumber.class 의 위치가 어디인지 찾지를 못해서 그렇죠. JuminNumber.class 를 빈이라고 말하는데요. 이번엔 이것을 만들어봐야죠. 이것은 순수 자바 코드입니다.

JuminNumber.java (1)

public class JuminNumber {
	private String name = null;
	private String jumin_no1 = null;
	private String jumin_no2 = null;
	
	public void JuminNumber() {}

	public void set(String str) {
		name = str;
	}
	public void setJuminNumber1(String str) {
		jumin_no1 = str;
	}
	public void setJuminNumber2(String str) {
		jumin_no2 = str;
	}

	public String get() {
		return name;
	}
}

값을 빈으로 불러들이는 것은 setName(String str), setJuminNumber1(String str), setJuminNumber2 (String str). 이렇게 3 개의 메소드입니다. 빈에서 밖으로 값을 내보내는(return) 것은 getName() 하나입니다. 아직 코드를 다 적지 않았습니다. bean을 불러서 bean에서 빼낼 수 있는 것은 계속 추가해서 만들 수 있습니다. 일단 이 코드를 컴파일합니다. 도스 상태에서

javac JuminNumber.java

라고 해 주면 됩니다. 오타가 없다면 특별히 에러가 나지 않을 것입니다. 아! 또 한가지 경우는 필요한 클래스가 classpath 에 잡혀있지 않으면 에러가 납니다. javac 이 아예 실행이 안 되는 경우는 path 에 c:jdk1.3in 디렉토리가 잡혀있지 않아서 그렇습니다. 이 때는 win98의 경우 autoexec.bat 를 수정해서 재부팅하시거나, win2000의 경우 내 컴퓨터 등록정보의 등록정보에서 환경변수 값을 수정한 뒤에 도스창을 다시 띄워서 작업하면 됩니다.

 

컴파일이 다 끝났다면 생성된 JuminNumber.class 파일을 C:/jsphome/WEB-INF/classes/ 에 옮겨 놓습니다. 그리고, 이왕이면 JuminNumber.java 파일도 함께 옮기는 것이 좋습니다.

이제 브라우저에 http://localhost/bean.htm 을 입력하고, 폼에 정보를 입력하면 빈을 사용해서 이름을 받아오는 것을 보실 수 있습니다.

이제 주민번호까지 화면에 출력시키도록 하겠습니다.

JuminNumber.java 파일에 주민번호 출력부분을 추가합니다. 에잇! 남,여 구분까지 집어넣겠습니다.

JuminNumber.java (2)

public class JuminNumber {
	private String name = null;
	private String jumin_no1 = null;
	private String jumin_no2 = null;
	
	public void JuminNumber() {}

	public void set(String str) {
		name = str;
	}
	public void set(String str) {
		jumin_no1 = str;
	}
	public void set(String str) {
		jumin_no2 = str;
	}

	public String get() {
		return name;
	}

	public String get() {
		return jumin_no1+"-"+jumin_no2;
	}

	public String get() {
		int g = Integer.parseInt(jumin_no2.substring(0,1));
		g = g % 2;
		return (g==1)?"남":"여";
	}
	
}

흐흐, ~ 코드를 실행해 보니까 jumin번호가 제대로 안 나오네엽. 문제는 간단한 것이지만 심각한 것이었습니다. bean.htm 에서 bean.jsp 로 값을 넘길 때 <input> 태그의 name 이 중요합니다. setProperty 로 들어갈 때 모두 한꺼번에 값을 빈으로 전달하기 위해 * 를 썼습니다. bean에서 값을 입력받는 부분이 setXXX 부분입니다. 여기서 XXX는 bean.htm의 name과 맞아야 들어갑니다. 상통하는 것는 name과 setName 밖에 없고 나머지 두개는 jumin1과 jumin2 값을 setJuminNumber1과 setJuminNumber2 로 받으려고 했는데, 이것이 오류입니다. 에러는 안 나지만 제대로 된 값이 나오지 않는 아주 고질적인 숨어있는 오류입니다.

bean.htm의 jumin1과 jumin2를 juminNumber1과 juminNumber2 로 바꿔줍니다. 페이지를 reload 한 뒤에 실행합니다. <input> 태그의 name 값을 이렇게 수정해주었습니다. 대소문자 주의하세요.

bean.htm (2)

<html>
<head>
<title>주민번호</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<form name="form1" method="post" action="bean.jsp">
<p> 이름
<input type="text" name="name">
</p>
<p> 주민번호<br>
<input type="text" name="juminNumber1" maxlength="6" size="6">
-
<input type="text" name="juminNumber2" size="7" maxlength="7">
</p>
<input type="submit" name="Submit" value="보내기">
</form>
</body>
</html>

아, bean.jsp는 다음과 같습니다.

bean.jsp (2)

<jsp:useBean id="jumin" class="JuminNumber" />
<jsp:setProperty name="jumin" property="*"/>
이름 : <jsp:getProperty name="jumin" property="name" /><br>
주민번호 : <jsp:getProperty name="jumin" property="jumin" /><br>
성별 : <jsp:getProperty name="jumin" property="gender" /><br>

다 되었나요? 한글문제가 아마도 걸릴 것입니다. 그것은 다음 페이지에서 해결하겠습니다.

 

 

참고 :

kenu: heogn@shinbiro.com
http://okjsp.pe.kr

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,043 명
  • 현재 강좌수 :  35,853 개
  • 현재 접속자 :  75 명