[ 객체생성 action태그 ]
: Java로 <% 객체생성하고, get set 하는거 %>
<% %> 쓰는거 싫어하는 사람들을 위해
<jsp: > 액션태그로도 사용할 수 있게 해줄게.
[ useBean ]
: 자바 객체 생성 문장을 JSP action 태그로 표현
<% memberDTO m1 = new memberDTO(); %>
==
<jsp : useBean id="m1" class="DTO.memberDTO" />
id : 객체명
class : 클래스명
- 기본생성자 호출 ( 기본생성자 필수 )
- class로 가서 객체 가져와야 하므로, 패키지명도 같이 붙여줘야 한다.
( class 경로는 억지로라도 어떤 폴더 안에 있어야 한다. )
< scope 주기 >
: 이 Bean객체 자체를 해당 scope 방식으로, setAttribute 에 담아두겠다.
memberDTO m1 = new memberDTO( );
request.setAttribute( "m1", m1 );
==
<jsp : useBean id="m1" class="dto.memberDTO" scope="request" /> ( forward 방식 )
: memberDTO 클래스의 m1 객체를 ( requestDispatcher - forward 방식 )으로
객체이름과 같은 " m1 " key값으로 담아두겠다.
< scope 종류 >
scope= "request"
scope= "session"
scope= "application"
scope= "page" ( default ) : 현재 파일 내에서만 사용가능
[ jsp:setProperty ]
: setter 메소드 호출
( - 이건 객체내에 변수값 하나를 set 하는 세터역할
자바 <% setAttribute %>는 request/session/pageContext 등 에서 공유값 넘길 때 사용하는 것
헤깔리지말자 )
<% m1.setId("june"); %>
==
<jsp : setProperty name="m1" property="id" value = " 넣을값 " >
: m1 객체에 id 값으로 value 넣겠다.
- name : Bean id (객체 이름)
- property : set 할 변수명 ( 소문자 )
<jsp : setProperty name="m1" property=" id " param = " id " >
: m1 객체에 변수 id 값으로, 파라미터 태그 name속성="id" 로 들어온 value 값을 넣겠다.
[ 자동인식 ]
=> 객체 변수명( id, pw, name ) 이랑 파라미터 name값이 같으면,
즉, property이름이랑 param이름이 같으면
자동으로 인식해서 넣어줄게. param 생략해도 된다.
==
<jsp : setProperty name="m1" property=" id " >
: property 만 보고, 그거에 맞게 들어온 파라미터를 알아서 붙여서 가져와줌
( - MVC 자동인식이랑 같은 개념
: 태그 name 값이랑 DTO 변수 이름만 맞춰두면
DTO 객체 해당 변수로 자동으로 쏙쏙 들어간다. )
[ jsp:getProperty ]
: getter 메소드 호출
<% m1.getId( ); %>
==
<jsp:getProperty name="m1" property="id" />
: m1 객체에 id변수 value값 get 해서 웹 화면에 출력
<jsp:useBean id="dto" class="Bean.beandto" scope="request"/>
<jsp:setProperty name="dto" property="id" />
<jsp:setProperty name="dto" property="pw" />
<jsp:setProperty name="dto" property="name" />
<jsp:forward page="beanrequest2.jsp"/>
=> jsp:useBean 에서 scope = "request" 방식으로 줘놓고,
거기서 setProperty 로 set 해둔 값을 가져다 쓰려면
"request" 방식을 받아서 사용할 쪽에서도 똑같이
<jsp:useBean id="dto" class="Bean.beandto" scope="request"/>
<h1> <jsp:getProperty name="dto" property="name"/> 님의 아이디가 생성되었습니다. </h1>
<h3>아이디 : <jsp:getProperty name="dto" property="id"/> </h3>
<h3>비밀번호 : <jsp:getProperty name="dto" property="pw" /> </h3>
(1) useBean 에서 scope="request" 로 통일시켜주고
(2) getProperty 로 가져다 쓰면 된다.
------------------------------------------------------------
자세히보면
get set property 액션태그는 되려 매우 복잡스럽다.
<% %>자바코드들이 보고 "뭐하냐?" 물어볼 지경이다.
- useBean 객체생성 태그는, 그 자체는 별 메리트가 없어보이지만,
scope 를 사용해서 단번에
RequestDispatcher, session, application 등의 기능을 사용할 수 있다는 건 장점으로 보인다.
무엇보다, jsp 태그를 선호하는건
중간에 <% %> 자바 코드 섞여있는게 보기 거슬린다는 이유에서
좀 억지로라도 최소한으로 자바코드를 사용하려는 이유에서 라고 한다.
이대로는 사실상 좀 비효율적일 수 있다.
해서, JSP 는 더 간단하게 문법을 만들어 제공한다.
=> EL ( Expression Langauge )
예를들어 getProperty 액션태그로 쓰기엔 오히려 불편하니깐
<% m1.getId(); %>
==
${ m1.id }
편하게 쓰렴 하고 만들어 준다.
=> action 태그는 java 코드가 섞이는 걸 최대한 기피하고,
편하게 만들어주고자 만들어놓은 도우미 정도로 생각하면 될 것 같다.
java코드 싫어! <= jsp : actioni태그 + EL 로 최대한 대체해서 사용
'Back to the JSP' 카테고리의 다른 글
[JSP] EL - Expression Language (0) | 2022.08.11 |
---|---|
jsp:useBean 사용시 jasperException 컴파일 오류. cannot be resolved to a type (0) | 2022.08.11 |
[ 서블릿 + JSP ] 효율적으로 섞어쓰기 (0) | 2022.08.10 |
[JSP] action 태그 forward / include / param (0) | 2022.08.10 |
[JSP] exception 처리 1. errorPage / 2. web.xml (0) | 2022.08.10 |