[jsp] action tag(표준액션)

*action tag(표준액션)

- 태그를 기술하면 정해진 일을 한다.(jsp태그와의 차이점 : jsp는 기술 했다고 해서 일을 하지는 않는다.)

- 사용자가 태그를 만들 수 있다.(tag library)

- <jsp:태그명 속성="값" ... ></jsp:태그명>

- <jsp:태그명 속성="값" ... ></jsp:태그명> | prefix surfix(제조사가 어딘지 알려주는 형식) 시작태그(열림) 끝태그(닫힘) => 합쳐쓰면 </>

- prefix : 사용자 정의 tag lib에서는 따로 정의하고 사용해야 한다.

 

include : 다른 jsp를 끼워넣어 보여줄 때

<jsp:include page="끼워넣을 jsp"/>

웹에서 중요한 것 : 요청에 대한 응답, 페이지 이동, 관계 유지

<jsp:include page="끼워 넣을 jsp"/>

- 이때 끼워 넣을 jsp에는 <%= %>를 이용 할 수 있다. => 동적인 페이지를 인크루드할 수 있다.

- 보여지는 html이 합쳐진다.

- 변수, 메서드의 공유가 되지 않는다.

- 속도가 include 지시자보다 느리다.

- page지시자의 충돌이 발생하지 않는다.

- 중복되는 디자인 사용시

 

 

forward : 페이지 이동 (서버쪽에서 바로 이동하기 때문에 페이지의 이동을 브라우저가 모른다)

<jsp:forward page="이동할 jsp의 uri">

uri = 도메인이 포함되지 않은 주소(따라서 내 서버안에서만 해결 할 수 있다.)

사족:따라서 forward에서는 객체를 넘길 수가 없다. 굳이 넘겨주려면 함수를 사용해야 한다.

- 이동하는 페이지로 parameter를 넘길 수 없다.

<jsp:forward page="이동할 jsp">

<jsp:param name="파라메터명" value="값"/>

</jsp:forward>

사족:파라메터로 전달할 수 있는 값은 문자열 뿐이다.

파람에서 쓰인 파라메터를 이동하는 페이지에서 받고 싶을 때(속성값으로 넘어가는게 아니라 파라메터로 붙어 넘어가기 때문에)에는 request.getParameter("name");으로 받는다.

 

- Bean 사용

- 값을 가진 객체(VO(value object):디자인패턴에서 나온 객체 = 자바에서는 bean이라고 부른다.)

사족:자바에서 사용 하는 개념. 값을 가지고 있는 존재이다. 값을 여러 개 가지고 있는 것은 beans라고 한다. 업무 하나를 bean으로보고 업무 여러개를 모아놓은것이 enterprise beans이다.

사족:VO : 값을 저장하고 반환할 목적으로 만든 것

사족:GOF(Gang of Four)의 디자인패턴. 비슷한 개발 코드를 뽑아낸 것. 이바이 아곱슨(?)

<jsp:useBean id="객체명" class="객체화 할 클래스" scope="저장하고 사용 할 영역"/> 객체를 생성

- setter method

<jsp:setProperty name="객체명(식별자 이름)" property="set을 제회한 method명을 소문자로" value="값"/>

- getter method

<jsp:getProperty name="객체명" property="get을 제외한 method명 소문자"/>

 

사족:package는 역방향 도메인을 사용한다.

- 객체화 : 반드시 기본 생성자가 존재해야 한다.

<jsp:useBean id="객체명" class="객체화 할 class" scope="범위"/>

<jsp:useBean id="참조변수명" class="패키지명.클래스명" class" scope="page/request/session/application"/>

 

- setter method

<jsp:setProperty name="사용할 객체명" property="set을 제외한 메서드명을 소문자로" value="값"/>

 

-getter method

<jspLgerProperty name="객체명" property="get을 제회한 메서드명 소문자"/>

이때! 첫 단어는 모두 소문자로쓰고 두번째 단어 부터는 대소문자를 구분한다.

 

===============================================================

1202

 

scope 속성

 속성 특징 
page  페이지가 호출 될 때마다 Bean을 생성한다. 이 페이지에서만 값이 사용된다. 
request   페이지가 호출 될 때마다 Bean을 생성한다. forward로 이동한 페이지에서도 값을 사용 할 수 있다.
session   브라우저마다 객체가 생성되고 유지된다.
application   최초 접속자에 의해서 하나의 객체가 만들어지고 모든 사용자가 값을 사용한다.
 (TOC TOU(Time of check time of use) 취약점에 해당한다. 값을 경쟁적으로 사용하다 보면 다른 사용자가 입력한 값을 사용 할 수가 있게된다. 따라서 application은 잘 사용하지 않는다.)

 

useBean으로 parameter 반기

- HTML의 Form Control의 이름과 Bean(VO)의 instance 변수명이 같아야 한다.

- 사용법

<jsp:useBean id="" class="" scope=""/>

<jsp:setProperty name="" property="*"/>

이때 Form Control의 명과 bean의 setter method명(set을 제외하고)이 같다면 모두 추가한다. 모든 것을 받을 수 있지만 배열의 경우 주소값을 출력하게 되므로 request를 사용하는 것이 더 좋다.