본문 바로가기

JSP & WEB & Ajax

Struts 2 Tag

Struts 2 태그

struts 2 태그를 사용하기 위해서는 jsp 페이지에 다음과 같이 taglib를 선언해야 한다.

  <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><?xml:namespace prefix = o />

<%@ taglib prefix="s" uri="/struts-tags" %>

 

 

[0] request.getParameter()  request.getAttribute()session.getAttribute()

 

<s:property value="#parameters.변수명" /> => request.getParameter()

<s:property value="#request.변수명"> => request.getAttribute()
<s:property value="#session.변수명"> => session.getAttribute()

 

 

[1]OGNL(Object Graph Navigation Language)

OGNL은 자바 객체의 프로퍼티 값을 얻거나 저장하기 위하여 자바 빈들 상의 프로퍼티들을 추적하는 표현식을 다룰 수 있게 한다.

 

또 한 OGNL은 정적 메서드 또는 인스턴스 메서드를 실행하고, 컬렉션 타입의 데이터 또한 사용할 수 있도록 Lambda 표현식과 같은 진보된 표현식을 제공한다. 또한 OGNL은 XWork 내에서 확장된 풍부한 타입 변환 모델을 제공한다. 또한 OGNL 언어의 기본은 단순하며, 빈의 프로퍼티는 프로퍼티 이름으로 엑세스 된다.

 

■ 태그의 value속성은 객체를 의미한다

<s:textfield name="id" value="seoul"/> 또는

<s:textfield name="id" value="${seoul}"/>

 

이라고 하면 value 속성의 seoul은 문자가 아닌 getSeoul() 메서드 호출의 의미가 된다. 따라서 문자 seoul을 의미하고 싶다면

 

<s:textfield name="id" value="'seoul'"/>또는

<s:textfield name="id" value="{'seoul'}"/>

 

라고 표현해야 한다.

 

■ # 사용(외부 참조)

스 트럿츠2는 OGNL표현식을 사용하기위해 최상위 컨텍스트 맵를 사용한다. 이 컨텍스트 맵에는 어플리케이션, 세션, ValueStack(루트), request, 파라미터 등의 객체가 저장되고 여기서 액션은 ValueStack 즉 루트 객체에 있기 때문에 루트 객체에서는 #없이 프로퍼티를 참조할 수 있다. 그러나 다른 객체 예를 들어 session 객체의 프로퍼티를 참조하려면 #을 사용해야한다.

 

<s:property value="#session.myid"/> 또는

<s:property value="#session['myid']"/>

 

예) OGNL을 사용해서 요청 파라미터, 요청, 세션을 참조 하는 법

#parameters['key'] or #parameters.key

-> request.getParameter("key") 의 반환 값과 동일

 

#request['key'] or #requuest.key

-> request.getAttribute("key")의 반환 값과 동일

 

#session['key'] or #session.key

-> session.getAttribute("key")의 반환 값과 동일

 

■ collections 객체(map, list, set) 사용 시 OGNL

<s:select name="name" list="{'aa','bb','cc'}" value="%{'bb'}"/>

 

이것은 문자열 aa,bb,cc 를 포함하는 리스트를 생성하고 기본값으로 bb를 사용한다는 의미 이다.

 

<s:select name="name" list="#{'key1':'aa','key2':'bb','key3':'cc'}"/>

 

이것은 key1 라는 키 값에 aa라는 value 값을 저장 한다는 의미 이다.

 

 

[2] 컨트롤 태그(일반)

■ if , else , elseif

⋅ 의미

 기본적 if구문

⋅ 사용 예

 <s:if test="a==1">a는 1이다

 </s:if>

 

■ append

⋅ 의미

 여러 리스트를 하나의 iterator로 묶어줌(첫 번째 리스트에 두 번째 리스트가 합쳐진 형태)

⋅ 사용 예

<s:append id = "totalList">

<s:param value="%{list1}"/>

<s:param value="%{list2}"/>

</s:append>

 

<s:iterator value="%{totalList}">

<s:property/>

</s:iterator>

 

■ generator

⋅ 의미

val 속성 값으로

iterator를 생성

⋅ 속성

separator : 구분자

count : 최대 요소 수

⋅ 사용 예

<s:generator separator=","val="%{'aaa,bbb,cc,dd'} count="3">

<s:iterator>

<s:property/>

</s:iterator>

</s:generator>

cf) 결과 : aaa,bbb,ccc

 

■ merge

⋅ 의미

여러 리스트를 하나의 iterator로 묶음(첫 번째 리스트의 첫 번째 아이템, 두 번째 리스트의 두 번째 아이템, 다시 첫 번째 리스트의 두 번째 아이템 순서로 합쳐짐)

⋅ 사용 예

<s:merge id= "totalList">

<s:param value="%{lsit1}"/>

<s:param value="%{list2}"/>

</s:merage>

 

<s:iterator value="%{totalList}">

<s:property />

</s:iterator>

 

■ sort

⋅ 의미

  태그속성으로 설정되는 comparator를 사용하여 목록을 정렬하는 태그. 예를 들어 list 에 {b,a,c}를 저장하고 comparator를 사용 정열하면 {a,b,c}가 됨

⋅ 사용 예

<s:sort comparator="myComparator" source ="list">

<s:iterator>

<s:property/>

</s:itertator>

</s:sort>

 

■ subset

⋅ 의미

iterator의 서브셋을 취하는 태그

⋅ 속성

count : subset iterater에 담을 요소의 수

start : 시작 인덱스 값(0부터)

decider : 메서드 사용 시 메서드 명

⋅ 사용 예

<s:subset source="list" count="3" start ="3">

<s:iterator>

<s:property/>

</s:iterator>

</s:subset> 

 

[3] 데이터 태그 (일반)

■ a

⋅ 의미

HTML 의 <a href =""/>

⋅ 사용 예

<s:url id="test" action="link">

</s:url> 

<s:a href="${test}">링크</s:a>

 

■ action

⋅ 의미

jsp에서 직접 액션을 호출

⋅ 속성

executeResult : 리절트 실행여부 

⋅ 사용 예

<s:action name="action1" executeResult="true"/>

 

■ bean

⋅ 의미

자바빈 규정에 따라 클래스를 인스턴스화

 ⋅ 사용 예

<s:bean name="com.bean.User" id="user">

<s:param name="first" value="'a'"/>

<s:param name="last" value="'b'"/>

first : <s:property value="first"/>

last : <s:property value="last"/>

</s:bean>

<br/>

first :<s:property value="#user.first"/>

last : <s:property value="#user.last"/>

 

■ date

⋅ 의미

date형식 가져오기

⋅ 사용 예

<s:date name="currDate" format="yyyy-MM-dd hh:mm:ss"/>

 

■ debug

 ⋅ 의미

debug 하이퍼 링크를 출력. 링크를 클릭하면 ValueStack의 내용과 스택 컨텍스트 내용을 출력

⋅ 사용 예

<s:debug/>

 

■ i18n

⋅ 의미

리소스 번들을 얻고 그 내용을 벨류 스택에 저장한다(미리 리소스 번들에 "abc= 가나다" 라고 만들어 둠)- 국제화

⋅ 사용 예

<s:i18n name="example.i18n.myBundle">

리소스 번들예제

<s:text name= "abc"/>

</s:i18n>

 

■ include

⋅ 의미

jsp include 역활

⋅ 사용 예

<s:include value="includeTag1.jsp">

<s:param name="a" value="'abc'"/>

</s:indclude> 

 

■ param

⋅ 의미

파리미터로 사용

⋅ 사용 예

<s:param name="a" value="'a'"/>

<s:param name="a">a</s:param>

 

■ push

⋅ 의미

ValueStack 안에 값을 저장 한다

⋅ 사용 예

<s:push value= "user">

first:<s:property value="first"/>

se<s:property value="se"/>

</s:push>

 

■ set

⋅ 의미

특정 스코프의 변수에 값을 할당

⋅ 사용 예

<s:set name="a" value="user.first" scope="session"/>

<s:porperty value="#a"/>

 

■ ext

⋅ 의미

i18n 텍스트 메시지를 렌더링

 

■ url

⋅ 의미

url 생성. param 태그 사용가능

⋅ 사용 예

<s:url id="a" value="/jsp/a.jsp">

<s:param name="id" value="'a23'"/>

</s:url>

 

■ propery

⋅ 의미

프로퍼티값을 출력. value값을 지정안하면 ValueStack의 맨 위의 값을 취함

  1. default (String) -  값이 널일때 기본값으로 사용할것이 있는지 정함 스트링형
  2. escape (Boolean) - HTML형식으로 보여줄지 정함 기본값은 true
  3. value (Object) - 값을 보여줌 obejct타입

⋅ 사용 예

<s:property value="a"/>

<s:property />

 

[4] 폼 태그 (사용자)

■ checkbox

⋅ 의미

html checkbox로 랜더링

⋅ 사용 예

<s:checkbox name="a" value="%{aa}"/>aa

<s:checkbox name="b" value="%{bb}"/>bb

 

■ checkboxlist

⋅ 의미

list를  체크박스 시리즈로  생성

⋅ 사용 예

<s:checkboxlist name="check1" list="list1"/>

 

■ combobox

⋅ 의미

html  text와 select를 그룹으로 제공

⋅ 사용 예

<s:combobox name="checkedFruit" list="{'apple','grape','orange'}"/>

<s:combobox name="checkedFlower" list="%{#{'1':'rose','2':'cosmos','3':'lily'}}"/>

<s:combobox name="checkedTraffic" list="mapTraffics"/>

 

■ datetimepicker

⋅ 의미

 datetimepicker 요소를 렌더링(달력 출력). 헤드에 ajax 설정

⋅ 사용 예

<head>

<s:head theme="ajax">

</head>

<s:datetimepicker name="birthday"/>

 

■ doubleselect

⋅ 의미

첫 번째 리스트 선택에 따라 두 번째 리스트 내용이 선택 되어 나온다.

⋅ 사용 예

<s:doubleselect name="list1" list="{'1",'2'}" doubleName="list2"

doubleList="%{top=='1'? {'a','b'}:{'가','나'}}"/>

 

■ head

⋅ 의미

head 섹션의 부분을 렌더링한다.

 ⋅ 사용 예

 <s:head theme="ajax"/>

 

■ file

⋅ 의미

html file요소

⋅ 사용 예

<s:file name="upload"/>

 

■ form

⋅ 의미

html form 요소

⋅ 사용 예

<s:form action="admin" theme="simple">

</s:form>

 

■ hidden

⋅ 의미

html hidden

⋅ 사용 예

<s:hidden name="property" value="some"/>

 

■ label

⋅ 의미

html label

⋅ 사용 예

<s:label>예제 </s:lable>

 

■ optontransferselect

⋅ 의미

2개의 select 컴포넌트 사이에 option을 이동할 수 있는 컴포넌트를 생성

⋅ 사용 예

<s:head theme="ajax"/> 

<s:optiontransferselect headerKey="" headerValue="--please select--" emptyOption="true"

leftTitle="Fruit" rightTilte="Car" name="checkedList" list="listFruit" doubleHeaderKey=""

doubleHeaderValue="--please select--" doubleEmptyOption="true"

doubleName="checkedList2" doubleList="listCar"/>

 

■ optgroup

⋅ 의미

select 태그 내에 삽입할 optgroup 컴포넌트를 생성

⋅ 사용 예

<s:head theme="ajax" />

<s:form theme="ajax"><s:select label="my selection" name="myselection"

value="{%{'popeye'}}" list="%{#{'sup':'sub','sp':'sp' }}"><s:optgroup label="'adult"

list="%{#{'sou':'sou'}}"/><s:optgroup label="fruit"

list="%{#{'o':'orange','a':'apple' }}"/></s:select></s:form>

 

■ password

⋅ 의미

 html password

⋅ 사용 예

<s:password name="pass" size="10" maxlength="15"/>

 

■ reset

⋅ 의미

reset 버튼

⋅ 사용 예

<s:reset value="reset"/>

 

■ select

⋅ 의미

html select

⋅ 사용 예

<s:select headerKey="" headerValue="선택" name="check1" list="list1" listKey="id"

listValue="name"/>

 

■ submit

⋅ 의미

submit 버튼

⋅ 사용 예

<s:submit />

⋅ method 접두어

Action class에 execute() 메서드와 cancel() 메서드가 존재 하는 경우 jsp에서,

 

<s:form action="actionname" theme="simple">

<s:textfield name="name"/>

<s:submit value ="전송"/>

<s:submit name="method:cancel" value="취소"/>

</s:form>

 

이런 경우 두 submit 버튼에 각각 execute() 와 cancel() 메서드를 바로 호출해서 쓸 수 있다.

 

⋅ action 접두어

만약 cancel submit에 다른 액션(goaction 이라고 가정)의 메서드를 호출하고자 한다면

 

<s:form action="actionname" theme="simple">

<s:textfield name="name"/>

<s:submit value ="전송"/>

<s:submit name="action:goaction" value="취소"/>

</s:form>

 

이런 경우 goaction 의 execute() 메서드가 호출 된다

 

⋅ redirect 접두어

<s:form action="actionname" theme="simple">

<s:textfield name="name"/>

<s:submit value ="전송"/>

<s:submit name="redirect:www.google.com" value="취소"/>

</s:form>

 

이렇게 하면 내부적으로 ServeltRedirectResult를 사용하여 www.google.com으로 리다이렉트 된다.

 

■ textarea

⋅ 의미

html textarea

⋅ 사용 예

<s:textarea name="test" theme="simple" cols="90"/>

 

■ textfield

⋅ 의미

html text 

⋅ 사용 예

<s:textfield name="test"/>

 

■ token

⋅ 의미

폼의 이중 submit 방지(더블클릭 등)

⋅ 사용 예

<s:token/>

<s:submit/>

 

■ updownselect

⋅ 의미

셀렉트박스의 요소를 위, 아래로 이동할수 있는 버튼을 가진 select 컴포넌트를 생성

⋅ 사용 예

<s:updownselect headerKey="" headerValue="선택" name="check" list="list1" listKey="id"

listValue="name" moveDownLabel="move down" moveUpLabel="move up"

selectAllLabel="select all"/>

 

[5] non 폼 태그 (사용자)

넌폼 태그(Non-Form Tag)는 폼에 종속되지 않고 단독으로 처리할 수 있는 태그들로 구성 되며, 비동기적인 비즈니스 로직을 수행할 수 있는 Ajax 기능을 포함한 태그들이 포함 하고 있다.

 

예 를 들면, <s:div/>, <s:tabbedPanel/>, <s:tree/> 등을 대표로 들 수 있다. 일반적인 웹 애플리케이션에서 Ajax를 구현하기 위하여 XmlHttpRequest를 처리하기 위한 자바스크립트 코드가 필요하고, 서버 측에서 클라이언트로 비즈니스 데이터를 XML로 변환하여 전송해야하며 전송된 XML데이터를 DHTML을 이용하여 동적으로 컴포넌트를 구성해야 한다 하며, XML 데이터를 한다.

 

그 러나 스트럿츠 2 프레임워크에서 제공하는 ajax 테마와 몇 몇 태그들을 이용하면 스트럿츠 2의 다른 개발과 동일한 방식으로 JSP와 Action 클래스, 비즈니스 로직을 구현하면서도 이를 가능하게 해주는 매우 강력한 기능을 제공한다.

 

■ actionerror

⋅ 의미

액션에 오류가 있으면 actionerror를 렌더링. 액션클래스에 『addActionError("에러메시지");』설정

⋅ 사용 예

<s:actionerror />

 

■ actionmessage

⋅ 의미

actionerror와 같이 사용

⋅ 사용 예

<s:actionmessage/>

 

■ component

특정 템플릿을 사용하는 커스텀 ui 위젯을 렌더링 한다.

 

■ div

ajax 테마를 사용할 때 div 태그는 전체 페이지를 갱신하지 않고 해당 내용을 갱신하기 위하여 현재 페이지로부터 원격호출을 제공한다.

 

■ fielderrror

필드에러 렌더링

 

■ table

모델링 테이블을 렌더링하기 위한 태그

 

■ tablePanel

tabbedpanel 위젯은 AJAX 컴포넌트이다. 각 탭은 로컬 또는 리모트 컨텐츠가 될 수 있다 (사용자가 탭을 선택할 때 갱신된다 )

 

■ tree

AJAX를 지원하는 트리 위젯을 렌더링 한다.

 

 

■ treenode

AJAX를 지원하는 트리 위젯 안의 트리 노드를 렌더링 한다




http://cafe.naver.com/getlength/65 에서 퍼왔습니다.