2014년 11월 26일 수요일

[심심풀이]Struts Logic 커스텀 태그[자바개발자교육/자바교육/자바강좌/자바,Spring교육잘하는곳/자바,spring교육추천/자바실무교육/JAVA/JAVA교육/JAVA스프링학원/JAVA실무교육]

Struts Logic 커스텀 태그 

Logic 태그 라이브러리는 출력 텍스트를 조건을 걸어 생성하는 경우나 객체 컬렉션을 돌면서 출력 텍스트를 반복적으로 생성 하는 경우 그리고 애플리케이션의 흐름을 제어 하는 경우 등에 유용한 태그들을 포함하고 있습니다. 

사용 용도에 따라 값 비교, 부분 문자열 매칭, 리다이렉팅과 포워딩, 컬렉션 유틸리티  4가지 정도로 기능상 분류 할 수 있습니다. 

아래는 Logic 태그 라이브러리내의 커스텀 태그 입니다. 

Custom tags within the Logic tag library 

empty : 요청한 변수가  null 또는 빈 문자열인 경우 이 태그의 BODY를 수행 
equal : 요청한 변수가 지정한 값과 동일한 경우 이 태그의 BODY를 수행 
forward : ActionForward Entry를 통해 지정한 페이지로 포워드를 수행 
greaterEqual : 요청한 변수가 지정한 값보다 크거나 같으면 이 태그의 BODY를 수행 
greaterThan : 요청한 변수가 지정한 값보다 크면 이 태그의 BODY를 수행 
iterate : 지정한 컬렉션으로 이 태그내의 BODY 컨텐츠를 반복 
lessEqual : 요청한 변수가 지정한 값보다 작거나 동일한 경우 이 태그의 BODY를 수행 
lessThan : 요청한 변수가 지정한 값보다 작은 경우 이 태그의 BODY를 수행 
match : 지정한 값이 요청한 변수에 포함되어 일치하는 경우 이 태그의 컨텐츠를 수행 
messageNotPresent : 지정한 메시지가 이 요청에  없는 경우 이 태그의 BODY 컨텐츠를 생성 
messagePresent : 지정한 메시지가 이 요청에  있는 경우 이 태그의 BODY 컨텐츠를 생성 
notEmpty : 요청한 변수가 null도 빈 문자열도 아닌 경우 이 태그의 BODY 컨텐츠를 수행 
notEqual : 요청한 변수가 지정한 값과 동일하지 않은 경우 이 태그의 BODY 컨텐츠를 수행 
notMatch : 지정한 값이 요청한 변수의 문자열의 부분에 없는 경우 이 태그의 BODY 컨텐츠를 수행 

notPresent : 지정한 값이 이 요청에 없는 경우 이 태그의 BODY 컨텐츠를 수행 
present : 지정한 값이 이 요청에 있는 경우 이 태그의 BODY 컨텐츠를 수행 
redirect : HTTP 리다이렉트를 표시 


1.        값 비교 

비교 결과가 “true” 인 경우에만 body 컨텐츠를 출력 합니다. 

값을 취하여 VALUE 속성의 값과 비교, 태그에 주어진 값이 숫자로 변환되는 경우 숫자비교를 수행, 숫자로 변환되지 않는 경우 문자열 지교 

<logic:present parameter="id"> 
<!—요청 파라미터에 “id”가 있으면 이 부분이 출력됨 --> 
</logic:present> 

어떤 컬렉션에서 반복을 수행하기 전에 컬렉션이 비었는지 여부를 체크하기 위해 아래와 같이 notEmpty를 사용 합니다. 

<logic:notEmpty name="userSummary" property="addresses"> 
<!—사용자의 address 컬렉션에서 모든 객체들을 돌며 반복 출력 합니다.--> 
<logic:iterate id="address" name="userSummary" property="addresses"> 
<!-- Print out the address obejct in a table --> 
</logic:iterate> 
</logic:notEmpty> 

아래는 ActionForm내의 property와 숫자 값을 비교하는 예 입니다. 

<logic:lessThan property="age" value="21"> 
<!-- 21세보다 나이가 작은 경우 이 부분이 실행 --> 
</logic:lessThan> 

아래는 bean1.value와 bean2.value가 같을 경우 본문을 수행 합니다. 

<bean:define id=”value2” name=”beans2” property=”value”/> 
<logic:equal value=”<%= (String) value2 %>” name=”bean1” property=”value”> 
Equals~~~ 
</logic:equal> 

<logic:equal name="bean" property="doubleProperty" value="<%= doub1 %>"> 
equal 
</logic:equal> 
<logic:greaterEqual name="bean" property="doubleProperty" value="<%= doub1 %>"> 
greaterEqual 
</logic:greaterEqual> 


이러한 비교를 위한 평가용 태그(equal, notEqual,greaterEqual, lessEqual, greaterThan, leeThan, match, notMatch)는 모두 평가 할 value 프로퍼티를 지정 해야 합니다. 

아래는 empty와 notEmpty예제 입니다. 

<logic:empty name="myBean"> 
The bean is missing 
</logic:empty> 
<logic:notEmpty name="myBean"> 
The bean is not missing 
</logic:notEmpty> 


2.        부분 문자열 매칭 

value속성에 지정한 문자열과  다른 속성을 통해 주어진 값과 비교를 수행 합니다. 이때 주어지는 값은 cookie, header, parametert, property, name 속성들중 하나 입니다. 매칭 태그에는 값 비교 태그에는 없는 location 속성이 있는데 이는 태그가 문자열의 시작에서  또는 끝부분에서 매칭을 시작할 것인가를 알려 줍니다. 

아래는 요청 파라미터 “action”의 값이 문자열 “processLogin”으로 시작하는지 여부를 결정하는 매칭 태그 입니다. 

<logic:matchTag parameter="action" value="processLogin" location="start"> 
Processing Login.... 
</logic:matchTag> 

만약 “location” 속성을 지정하지 않으면 변수와 value 속성값 사이의 매칭은 아무 곳에서나 시작 합니다. Location이 “start”인 경우 value 속성의 값으로 문자열이 시작해야 ”true”임 

[브라우저 타입을 확인 하는 예제] 

<logic:match header="User-Agent" value="Mozilla"> 
Mozilla! 
</logic:match> 
<logic:notMatch header="User-Agent" value="Mozilla"> 
Not Mozilla :( 
</logic:notMatch> 


[아래는 빈 프로퍼티와 문자열을 비교 합니다.] 
<logic:match name="bean" property="stringProperty" value="hello world"> 
Hello World! 
</logic:match> 
<logic:notMatch name="bean" property="stringProperty" value="hello world"> 
I'm so sad and lonely. 
</logic:notMatch> 

3.        리다이렉팅과 포워딩 

redirect 태그는 컨테이너가 지원하는 경우 URL을 완전히 다시 써서 클라이언트에 보냅니다. 

forward 태그는 지정된 전역 ActionForward로 포워딩/리다이렉팅을 수행, redirect와 달리 name 속성을 포함하는데 이것은 ActionForward의 논리적인 이름 입니다. 스트럿츠에서 forward인지 redirext인지는 설정 파일에서 기술 합니다. 

아래는 redirect 예제 입니다. 

<logic:notPresent name="loginForm"> 
<logic:redirect href="/registeruser/index.jsp" /> 
</logic:notPresent> 

아래는 포워드 예젭니다. 

<logic:forward name="login" /> 

설정 파일에서는 …… 

<global-forwards> 
<forward name="login" path="/loginForm.jsp"/> 
</global-forwards> 




4.        컬렉션 유틸리티 

Iterate 태그는 지정된 컬렉션내에 있는 모든 요소에 대해 한번씩 자신의 BODY 컨텐츠를 반복 합니다. id라는 속성을 가지는데 이는 반복에 사용 할 요소 등을 포함하는 페이지 스코프의 JSP 빈 이름 입니다. 

<logic:iterate id="address" name="userSummary" property="addresses"> 
<!-- Print out the address obejct in a table --> 
</logic:iterate> 

위에서 iterate 태그는 userSummary 빈의 getAddress() 메소드를 호출 함으로써 address 컬렉션을 얻어 냅니다.각 반복 동안 address 컬렉션에 포함된 각각의 주소가 “address” 변수에 차례로 할당 됩니다. 

아래의 예제를 참고 하세요~ 

<UL> 
        <logic:iterate id=”item” name=”list”> 
                <LI><bean:write name=”item”/></LI> 
        </logic:iterate> 
</UL> 

다음 예제도 참고 하세요… 

<logic:iterate id="employee" name="department" property="employees" scope= "request"> 
… 
<bean:write name="employee" property="username" /> 
… 
<bean:write name="employee" property="name" /> 
… 
<bean:write name="employee" property="phone" /> 
… 
</logic:iterate> 

[예제] 

        다음과 같은 빈이 있을 때 


import java.io.Serializable; 
public class User implements Serializable { 
private String lastName; 
private String firstName; 
private String email; 
public String getEmail() { 
return email; 

... 
public void setEmail(String string) { 
email = string; 

... 



        Action에서 다음과 같은 처리를 한 경우 


while (rs.next()){ 
String firstName = rs.getString(1); 
String lastName = rs.getString(2); 
String email = rs.getString(3); 

User user = new User(); 
user.setEmail(email); 
user.setFirstName(firstName); 
user.setLastName(lastName); 

list.add(user); 


if (list.size() > 0){ 
request.setAttribute("users", list); 


        JSP 파일에서 처리 예 

<logic:present name="users"> 
<table border="1"> 
<tr> 
<th> 
<bean:message key="userRegistration.firstName"/> 
</th> 
<th> 
<bean:message key="userRegistration.lastName" /> 
</th> 
<th> 
<bean:message key="userRegistration.email" /> 
</th> 
</tr> 
<logic:iterate id="user" name="users"> 
<tr> 
<td> 
<bean:write name="user" property="firstName"/> 
</td> 
<td> 
<bean:write name="user" property="lastName"/> 
</td> 
<td> 
<bean:write name="user" property="email"/> 
</td> 
</tr> 
</logic:iterate> 
</table> 
</logic:present> 





5.        메시지와 에러 

messagePresent와 messageNotPresent 테그는 요청 스코프에 ActionMessage나 ActionErrors 객체가 존재하는지에 따라 BODY 컨텐츠의 수행 여부를 결정 합니다.



 [100%환급,개발자전문]빅데이터/SQL/자바/스프링/안드로이드/닷…오라클자바…12-272624
 [채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육…오라클자바…12-111895
53 [평일100%환급7건]Spring,자바&JSP,안드로이드,웹퍼블리싱,C#닷… 오라클자바…03-151714
52 [주말]C#,ASP.NET마스터 오라클자바…01-311823
51 [기업100%환급,평일주간]SQL기초에서스키마오브젝트,PLSQL,힌트… 오라클자바…01-312674
50 [평일주간야간,주말]C기본&자료구조,알고리즘 오라클자바…01-311428
49 [평일주간,평일야간,주말]Spring,MyBatis,Hibernate개발자과정-… 오라클자바…01-191751
48 [평일야간,주말]안드로이드개발자과정(Android기초실무) 오라클자바…01-111638
47 [평일야간,주말주간야간]JAVA,Network&JSP&Spring,MyBatis,Hiber… 오라클자바…01-032154
46 [100%환급,개발자전문]빅데이터/SQL/자바/스프링/안드로이드/닷… 오라클자바…12-272624
45 [평일주간]NoSQL,MongoDB,빅데이터기초과정 오라클자바…12-191858
44 [평일주간야간, 주말]웹퍼블리싱 마스터(HTML5,CSS3,jQUERY,AJAX… 오라클자바…12-141828
43 [채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… 오라클자바…12-111895
42 [평일주간]빅데이터하둡기초과정(BigData Hadoop) 오라클자바…12-091489
41 [평일야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 오라클자바…12-011718
40 [기업100%환급]오라클&자바웹스프링신입과정3주(SQL,JAVA,JSP,Se… 오라클자바…12-011897
39 [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) 오라클자바…12-011363

댓글 없음:

댓글 쓰기