useBean
작성자 정보
- 웹관리자 작성
- 작성일
컨텐츠 정보
- 6,992 조회
- 0 추천
- 목록
본문


2000-12-20 kenu | ||||||
JSP의 장점은 디자인과 프로그램 양쪽이 다 자신에 충실할 수 있다는 것입니다. Bean의 위치는 root/WEB-INF/classes/ 디렉토리가 기본입니다. 물리적 위치이죠. 웹에서의 경로는 localhost/servlet/ 입니다. 서블릿과 같은 위치이죠. 저의 경우는 이렇게 됩니다. c:/jsphome/WEB-INF/classes 와 http://localhost/servlet/ 입니다. Bean을 만들어 보겠습니다. 음~ 에디터를 이용하면 됩니다. 소스를 빌려오겠습니다. 오늘 아내가 책을 구해줘서리... ^^ (about JSP 영진꺼죠.; 오타 많네엽 헐~)
이 소스를 HelloBean.java 라는 이름으로 저장을 합니다. c:/jsphome/WEB-INF/classes/bean 디렉토리에 있어야 합니다. 물론 javac 이 제대로 실행되려면 path에 jdk1.3in 이 잡혀있어야 합니다. jdk가 설치되어있어야 된다는 말씀이죠. 엉? HelloBean.class 는 모냐구요? 자기가 알아서 생깁니다. HelloBean.java만 제자리 있으면 됩니다. 자 브라우저에 Http://localhost/hello.jsp 를 입력해보세요. 헉. 소스가 없다구요. 잠깐만요... 여기~ 소스!
이 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 진도를 못나가요... 헥헥... 브라우저에 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 입니다.
흐흐 제 말이 맞죠? 한가지 더 package 줄을 빼고, HelloBean.java 파일을 classes 폴더에 넣으니까 tomcat에선 돌아갔는데, Resin 에서는 안도네요. 빡돌게... 그런데 곰곰이 생각해보니 package를 사용하는 쪽이 더 나을 것 같네요. 그리고, HelloBean.java 도 Resin은 컴파일이 그냥 되네요. 그런데 옵션이 있어요. resin.conf 에서 <classpath >태그를 찾으시면 compile="true" 라고 되어있을 겁니다. 이건 개발이 다 끝나서 Bean을 손댈 일이 없을 때 false로 바꿔 놓으시면 좋겠네요. ^^ 헐~ 아직 잘 모르겠어요. 하지만 이 옵션이 HelloBean.java 컴파일하는데 영향을 주는 것은 확실하네엽. | ||||||
다음강좌는 Bean 에 대해서 더 고급스럽게 알아보겠습니다. 수고하셨어요. 긴글 읽어주셔서리... | ||||||
참고 : about JSP, 영진꺼. 3장 |
관련자료
-
이전
-
다음