japanese site
온라인강좌책메일다운로드동아리쇼핑기술지원기업정보갤러리동영상 블로그
『신개념 4단계 리눅스기술지원 시스템 공개』

※ 『무료 리눅스 배포판 배송서비스』 ※

 
useBean
조회 : 3,512  



2000-12-20 kenu


JSP의 장점은 디자인과 프로그램 양쪽이 다 자신에 충실할 수 있다는 것입니다.
소스코드에 스크립트(scriptlet 이라고 합니다.)를 줄일 수 있기 때문입니다. scriptlet을줄이는 법은 빈(bean)을 사용하는 것입니다. Bean은 java 소스를 컴파일한 class 파일을 지칭합니다. 즉 자바와 연결하는 것이죠. 이 연결이 어렵지 않다는 것입니다. 하긴 아직 저도 익숙하진 않습니다. 서블릿 제작능력을 키워야 합니다. 자바를 잘 알아야한다는 뜻이죠. 지레 겁먹지는 마십시오. 어려운 것은 아니니까요. 낯선 것뿐이죠.

Bean의 위치는 root/WEB-INF/classes/ 디렉토리가 기본입니다. 물리적 위치이죠. 웹에서의 경로는 localhost/servlet/ 입니다. 서블릿과 같은 위치이죠. 저의 경우는 이렇게 됩니다. c:/jsphome/WEB-INF/classes 와 http://localhost/servlet/ 입니다.

Bean을 만들어 보겠습니다. 음~ 에디터를 이용하면 됩니다.

소스를 빌려오겠습니다. 오늘 아내가 책을 구해줘서리... ^^ (about JSP 영진꺼죠.; 오타 많네엽 헐~)

HelloBean.java

package bean;

public class HelloBean
{
private String name;

public HelloBean()
{
this.name = "World";
}

public void setName(String n)
{
this.name = n;
}

public String getName()
{
return this.name;
}
}

이 소스를 HelloBean.java 라는 이름으로 저장을 합니다. c:/jsphome/WEB-INF/classes/bean 디렉토리에 있어야 합니다.

물론 javac 이 제대로 실행되려면 path jdk1.3in 이 잡혀있어야 합니다. jdk가 설치되어있어야 된다는 말씀이죠. 엉? HelloBean.class 는 모냐구요? 자기가 알아서 생깁니다. HelloBean.java만 제자리 있으면 됩니다.

자 브라우저에 Http://localhost/hello.jsp 를 입력해보세요. 헉. 소스가 없다구요. 잠깐만요... 여기~ 소스!

hello.jsp

<jsp:useBean id="hbean" class="bean.HelloBean" />
<html>
<head>Hello</head>
<body>
html 입니다.
<hr>
<jsp:setProperty name="hbean" property="name" param="name"/>
Hello <jsp:getProperty name="hbean" property="name" /> !
<br> 이름은 jsp를 통해서 나온 것이죠.
</body>
</html>

이 hello.jsp 파일은 c:/jsphome/ 에 놓으시면 됩니다. 소스를 copy & paste 하신 분들은 짐작을 못하셨겠지만, 또이또이 하신 분들은 발견한 점이 있을 것입니다. bean(HelloBean.java) 의 위치와 bean 소스에 있는 package 이름과 hello.jsp 소스의 useBean 태그 안에 있는 class 값이 공통부분이 있다는 것입니다.

<jsp:useBean />태그의 id 속성은 jsp 파일 내에서의 bean의 이름입니다. <jsp:setPropery />와 <jsp:getProperty /> 태그의 name 속성에서 이용하게 되는 것이죠. 이 id 속성을 달리하면 여러 개의 bean을 동시에 사용할 수 있죠.

그럼 같은 빈을 다르게 이름(id)을 주면 어떻게 되냐구요? 좋은 질문입니다. 또이또이한 학생이군요. 컥... 저 선생아닌데... 정답은 각각 다르게 행동한다 입니다. 실습은 이따가 할께요. 아직 그전에 집고 넘어갈게 있으니까요.

<jsp:setProperty /> 태그 보이죠? bean에 값을 set 해주는 것입니다. property="name" 이라는 부분과 HelloBean.java 의 public void setName(String n){this.name = n;} 부분과 관계있습니다. 관례라고 할까요? property의 name 값과 setName 의 대문자로 시작하는 Name 이 같은 것입니다. 즉 bean에서의 set 처리부분의 메소드 이름에는 jsp 의 setProperty 의 property 값을 첫글자를 대문자로 시작하고 앞에 set을 붙여서 사용한다는 뜻이죠. 반대로 예를 들면 bean 의 setName() 에서 set을 뺀 name (소문자로 시작)이 jsp의 <jsp:setProperty /> 태그의 property 값으로 쓰인다는 것입니다. 여기서 주어진 값이 bean에 입력이 됩니다.

그럼 눈치 까셨죠. <jsp:getProperty /> 는 반대의 역할을 합니다.

HelloBean.java 의 public void setName(String n) 앞에 있는 void 는 반환하는 값이 없다는 뜻입니다. 대신 String 값을 받아온다는 뜻이죠. HelloBean.java 는 전형적인 자바 소스입니다. java책도 한권 준비해 두심이... 안 그럼 jsp 진도를 못나가요... 헥헥...
public String getName() 에서는 String 값을 return 한다는 뜻이죠. 메소드 안에서의 수행되는 문장을 보시면 쉽게 이해갈 것입니다.

브라우저에

http://localhost/hello.jsp?name=Na

라고 입력해보세요. shift 누른 상태에서 Reload 하시는 것이 좋을 것입니다. 그럼 Hello Na! 라고 나오죠. 여기서 우리가 알 수 있는 것은 <jsp:setProperty /> 태그에서 param="name" 의 역할을 할 수 있습니다. 이것은 HttpHeader 부분을 통해서 전해지는 name의 값을 value로 전달받아온다는 뜻입니다. 즉 form 태그를 통해서 전달되거나, 지금 본 것과 같이 URL을 통해서 보내지는 값을 받아오는 것입니다. 음~ 재미없나?

다시 hello.jsp 문으로 돌아옵니다. <jsp:setProperty />태그 안에 value="Kenu" 라는 부분을 집어넣어보세요. 그리고 시프트를 꾹 누른상태에서 페이지 리로딩을 해보세요. Hello Kenu! 라고 나타날 것입니다.

이 정도면 눈치 많이 깠을 것입니다. 아까 했던 문제 같이 풀어보죠. 이 예제면 충분할 것입니다. hello2.jsp 입니다.

hello2.jsp

<jsp:useBean id="hbean1" class="bean.HelloBean" />
<jsp:useBean id="hbean2" class="bean.HelloBean" />
<html>
<head>Hello</head>
<body>
html 입니다.
<hr>
<jsp:setProperty name="hbean1" property="name" value="Kenu"/>
Hello <jsp:getProperty name="hbean1" property="name" /> !
<hr>
<jsp:setProperty name="hbean2" property="name" value="Dalnim"/>
Hello <jsp:getProperty name="hbean1" property="name" /> !<br>
Hello <jsp:getProperty name="hbean2" property="name" /> !
<br> 이름은 jsp를 통해서 나온 것이죠.
</body>
</html>

흐흐 제 말이 맞죠? 한가지 더 package 줄을 빼고, HelloBean.java 파일을 classes 폴더에 넣으니까 tomcat에선 돌아갔는데, Resin 에서는 안도네요. 빡돌게... 그런데 곰곰이 생각해보니 package를 사용하는 쪽이 더 나을 것 같네요. 그리고, HelloBean.java 도 Resin은 컴파일이 그냥 되네요. 그런데 옵션이 있어요. resin.conf 에서 <classpath >태그를 찾으시면 compile="true" 라고 되어있을 겁니다. 이건 개발이 다 끝나서 Bean을 손댈 일이 없을 때 false로 바꿔 놓으시면 좋겠네요. ^^ 헐~ 아직 잘 모르겠어요. 하지만 이 옵션이 HelloBean.java 컴파일하는데 영향을 주는 것은 확실하네엽.

다음강좌는 Bean 에 대해서 더 고급스럽게 알아보겠습니다. 수고하셨어요. 긴글 읽어주셔서리...

참고 : about JSP, 영진꺼. 3장

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



[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=616


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기 이 글을 미투데이로 보내기

 
(주) 수퍼유저

 
   
 


『신개념 4단계 리눅스기술지원 시스템 공개』

CentOS 리눅스 전문서적 국내최초출시

 
회사소개 | 보도기사 | 채용안내 | 광고안내 | 이용약관 | 개인정보취급방침 | 책임한계와 법적고지 | 불편사항 신고하기 | 사이트맵
ㅇ 서울 : 서울특별시 강남구 노현로79길 66, 402호(역삼동,청송빌딩)  ㅇ 부산 : 부산광역시 해운대구 우동 1470 에이스하이테크21 914호
ㅇ 대표 : 1544-8128 ㅇ부산직통 : 051-744-0077 ㅇ서울직통 : 02-856-0055 ㅇ FAX : 02-6280-2663
ㅇ 사업자번호 : 128-86-68239 ㅇ 통신판매업 신고번호 : 2013-부산금정-0035호 ㅇ 개인정보책임자 : 이재석
ㅇ 상호명 : (주) 수퍼유저 ㅇ 대표자 : 박성수
Copyright ⓒ (주)수퍼유저. All rights reserved.

 아 이 디
 비밀번호
회원 가입 | 비밀번호 찾기

블로그~
 
▷ 웹개발언어
PHP
JSP
python
기타
책제목
리눅스서버관리실무바이블v3.0


저자 박성수
페이지수 2,032 pages
펴낸곳(주)수퍼유저

리눅스 서버 구축 및 관리에 필요한 거의 모든 부분과 전반적인 실무 기법들을 다루고 있음
책제목
리눅스보안관리실무(2/E)


저자홍석범
페이지수 820 pages
펴낸곳(주)수퍼유저

리눅스 보안에 관련된 내용을 종합적으로 쓴 책. 저자의 명성 그대로 보안관련의 모든 내용이 그대로 담겨져 있다.