본문 바로가기

중앙정보처리학원/JSP

액션태그(usebean, setProperty, getProperty)

자바빈(JavaBean) : 자바빈은 자바로 작성된 컴포넌트 클래스를 의미한다.

자비빈의 장점 :
1. 폼데이터 처리에 용이하다. - 폼에서 넘어오는 많은 데이터를 자바빈에 저장하고, 전달할 수 있다.
2. 재사용성 - 자바빈은 여러 JSP 파일에서 사용할 수 있다.
3. 컴포넌트 기반 구현 - JSP, JavaBean(DTO), DAO 클래스가 분리되어서, 각 컴포넌트로 별로 기능을 수행한다.

JSP Model1 architecture




자바빈(JavaBean) 작성법 :


package javaBean;
public class SimpleBean {
private String mag; : 프로퍼티(property)
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}

1. 자바빈에서 맴버변수를 property라 부른다.
2. 프로퍼티(property)는 값을 저장하기 위한 필드로 접근제이자 private로 선언해서 작성한다.
3. 프로퍼티는 JSP 페이지의 내용을 DB에 저장하거나 DB에 저장된 내용을 JSP페이지에 출력할 때
중간데이터 저장소로 사용된다.
4. 프로퍼티에 값을 저장할 때는 setXxx() 메소드를 사용하고, 저장된 값을 사용할 때는 getXxx()
메소드를 사용한다. 이때 Xxx는 프로퍼티명으로, 첫 글자는 대문자로 작성한다.
5. 하나의 프로퍼티당 한쌍의 setXxx() 메소드와 getXxx() 메소드가 존재한다.
6. setXxx() 메소드와 getXxx() 메소드에서는 주로 public 접근 제어자를 사용한다.

자바빈 관련 액션태그




useBean 액션태그 : useBean 액션태그는 자바빈 객체를 생성하는 역할을 한다.
형식 : <jsp:useBean id="빈 이름" class="자바빈 클래스 이름" scope="범위"/>
id : 생성될 자바빈 객체의 이름을 명시하는 곳
class : 객체가 생성될 자바빈 클래스명을 기술하는 곳
(패키지명을 포함한 자바 클래스의 풀네임을 기술한다.)
scope : 자바빈 객체의 유효범위로 자바빈 객체가 공유되는 범위를 지정한다.
(scope 속성값으로는 page, request, session, application을 가지며, scoope속성 생략시 기본값은 page다.)



setProperty 액션태그 : setProperty 액션태그는 객체의 프로퍼티 값을 저장하기 위해서 사용된다.
형식 : <jsp:setProperty name="빈이름" property="프로퍼티이름" value="프로퍼티에 저장할값"/>
name : 자바빈 객체의 이름을 명시 하는 곳
property : 프로퍼티명을 기술하는 곳
value : 프로퍼티에 저장할 값을 기술하는 곳




getProperty 액션태그 : getProperty 액션태그는 자바빈 객체에서 저장된 프로퍼티 값을 사용하기 위해서 사용된다.
형식 : <jsp:getProperty name="빈이름" property="프로퍼티이름"/>
name : 자바빈 객체의 이름을 명시 하는 곳
property : 프로퍼티명을 기술하는 곳




ex1).

simpleBeanForm.jsp

simpleBean.jsp로 post방식으로 전송.

simpleBean.jsp

request.set으로 한글 인코딩.
useBean으로 자바빈 객체를 생성 (내부적으로 인포트까지 해줌)
javaBean.SimpleBean : 패키지부터 해당 클래스까지 경로
<jsp:useBean id="sb" class="javaBean.SimpleBean" />
useBean을 안써도 밑에처럼 할수 있다.
<%@page import="javaBean.SimpleBean"%>
<%
SimpleBean sb1 = new SimpleBean();
%>

useBean을 쓰면 import를 안해도된다!
simpleBeanform.jsp 의 name 값과 simpleBean.jsp의 property값이 같아야한다!

jsp:setProperty 에서 name은 위에 useBean 의 id값이고 property 값은 가져올 태그의 name값이다.
지금 앞에서 이름하고 내용 2개를 불러와야하는데 주석 처리한것 처럼 한개한개 불러올수도 있지만
불러올값이 많아지면
jsp:setProperty property = "*" name="sb" 여기서 " * " 를 쓰면 모두 불러와서 메모리상에 저장한다.


simpleBean.java


실행:







ex2.

registerForm.jsp

 

register.jsp
register.jsp

passwd는 값이 넘어오지 않는다. (Form에 passwd가 없다) 그래서 강제로 전달한다.
이때 쓰는게 value 속성이다. 속성값이 memberInfo.getId() 이다 이건 맴버인포의 id값을 가져온다.
(힙메모리상에 있는 id값을 불러와서 전달을 하라는뜻)
registerDate도 앞에서 넘어오는 값이 아니기에
value 속성을 써서 value="<%=new Timestamp(System.currentTimeMillis()) %> 강제로 전달한다.
거기에 SimpleDateFormat를 써서 yyyy-MM-dd HH:mm:ss EEE요일 형식으로 바꿔준다.

MemberInfo.java
MemberInfo.java



실행:

ex3.

login_form.html

html이기에 meta charset="UTF-8" 로 한글 인코딩을 해준다.

login.jsp

id="Login" class="beans.LoginBean 가 new연산자로 LoginBean객체 생성하는거랑 같은거다.
setProperty에서 property= "property네임"이 들어가야되는데 "*"를 사용하면 전부다 전달하는거다.

LoginBean.java

위에서 객체를 생성했기에 hip메모리상에 userid passwd _userid _passwd 를 저장할 공간을 만들어진다.
userid와 _userid가 같고 passwd와 _passwd가 같아야 true값을 돌려주는 checkUser메소드를 생성한다

실행:

 

LoginBean.java에서
public LoginBean() {
_userid = "myuser";
_passwd = "1234";
}

로 되어있으므로 다른아이디나 비번으로 하면 로그인이 안된다!



ex4.

joinForm.jsp
joinForm.jsp



joinChk.jsp
joinChk.jsp






실행: