1.논리:비어 있음
logic:empty 태그는 비어 있는지 확인하는 데 사용됩니다. 비어 있으면 태그 본문에 포함된 콘텐츠가 처리됩니다. 이 태그는 다음과 같은 상황에서 사용됩니다.
Java 객체가 null인 경우 String 객체가 ""인 경우 java.util.Collection 객체의 isEmpty()가 true를 반환하는 경우 java.util.Map 객체의 isEmpty()가 true를 반환하는 경우 다음 코드 예제는 논리를 보여줍니다. 빈 태그는 사람 컬렉션이 비어 있는지 여부를 결정합니다.
<logic:empty name="listForm" 속성 = "사람">
<div>사람 컬렉션이 비어 있습니다!</div>
</logic:비어 있음>
2.논리:비어있지 않음
이 태그의 적용은 logic:empty 태그와 정반대입니다.
3.논리:같음
이 태그는 같음 비교 연산자입니다.
예1. 사용자의 상태 속성을 비교하여 1인지 확인합니다. 1이면 "enabled"를 출력합니다.
예2. 위 예제의 값을 동적으로 얻은 경우(예: bean:write를 통해 출력해야 함) struts는 레이블 중첩을 지원하지 않으므로 EL을 사용하여 이 문제를 해결할 수 있습니다.
논리:같음
여기서 소개하려는 것은 logic:equal(=) 태그뿐만 아니라 다음을 포함하여 비교 작업을 완료하는 태그 유형입니다.
논리:같음(=)
논리:같지 않음(!=)
논리:greaterEqual(>=)
논리:lessEqual(<=)
논리:graterThan(>)
논리:lessThan(<)
이 유형의 태그 사용법은 유사합니다. logic:equal 태그만 소개하고 나머지는 사용자에게 맡깁니다.
logic:equal은 동일한지 여부를 확인하는 데 사용됩니다. 동일하면 태그 본문에 포함된 콘텐츠가 처리됩니다. 이 태그는 다음과 같은 상황에서 사용됩니다.
이 태그의 쿠키 속성에 의해 지정된 쿠키 값이 이 태그의 값 속성 값과 동일한지 여부를 비교합니다.
태그의 header 속성에 지정된 헤더 값이 태그의 value 속성 값과 같은지 비교합니다.
태그의 name 속성으로 지정된 JSP Bean이 태그의 value 속성과 같은지(property 속성은 나타나지 않음) 비교하거나, 태그의 name 속성으로 지정된 JSP Bean의 property 속성값이 일치하는지 비교합니다. 태그의 value 속성과 동일합니다. 값이 동일합니다.
요청에 있는 태그의 매개변수 속성에 의해 지정된 매개변수 값이 태그의 값 속성과 동일한지 여부를 비교합니다.
4. 논리:같지 않음
이 태그의 의미는 logic:equal과 반대이며 사용법도 유사하므로 생략합니다.
5. 논리:앞으로
이 태그는 페이지 지침을 구현하고 구성 파일의 전역 전달을 찾는 데 사용됩니다. struts-config.xml 파일의 전역 리디렉션
예: <logic:forward name="redirect"/>
6. 논리:greaterEqual
크거나 같음 비교 연산자입니다.
예: 학생의 점수가 60점 이상인 경우 "pass"를 출력합니다.
<logic:greaterEqual name="student" property="scores" value="60">
통과하다
</logic:greaterEqual>
7. 논리:보다 큼
이는 보다 큼 비교 연산자이며 사용법은 logic:greaterEqual과 동일합니다.
8. 논리:lessEqual
작거나 같음 비교 연산자이며 사용법은 logic:greaterEqual과 동일합니다.
9. 논리:더 적음
이는 미만 비교 연산자이며 사용법은 logic:greaterEqual과 동일합니다.
10. 논리:일치
이 태그는 객체가 동일한지 비교합니다.
logic:match 태그는 하위 문자열 일치 문제를 처리하는 데 사용됩니다.
지정된 값이 태그와 일치하면 해당 태그 본문의 내용이 생성됩니다. 이 태그는 다음과 같은 상황에서 사용됩니다.
지정된 이름의 쿠키가 이 태그의 값과 일치하는지 확인합니다.
지정된 이름의 헤더가 이 태그의 값과 일치하는지 확인합니다.
지정된 이름을 가진 JSP Bean이 태그 값과 일치하는지 확인하거나, 지정된 이름을 가진 JSP Bean의 속성 속성 값이 태그 값과 일치하는지 확인합니다.
요청에 지정된 이름의 매개변수 값이 태그 값과 일치하는지 확인합니다.
다음 코드는 logic:match 태그의 일반적인 사용법을 보여줍니다.
예0.
다음과 같이 코드 코드를 복사합니다 .
<logic:present header="User-Agent">
<logic:match header="User-Agent" value="MSIE 6.0">
MSIE 6.0
</logic:일치>
</logic:현재>
예1. 요청 범위의 이름 속성에 "hello" 문자열이 포함되어 있는지 확인하세요.
다음과 같이 코드 코드를 복사합니다 .
<logic:match name="name" range="request" value="hello">
<bean:write name="name"/>에 "hello" 문자열이 있습니다.
</logic:일치>
예2. 요청 범위의 이름 속성에 시작 문자열이 "hello"인지 확인합니다.
다음과 같이 코드 코드를 복사합니다 .
<logic:match name="name" range="request" value="hello" location="start">
<bean:write name="name"/>은 "hello"를 시작 문자열로 사용합니다.
</logic:일치>
예3.
다음과 같이 코드 코드를 복사합니다 .
<logic:match header="user-agent" value="Windows">
Windows 시스템을 실행 중입니다.
</logic:일치>
11. 논리: 일치하지 않음
logic:notMatch 태그의 적용은 logic:match 태그와 정반대입니다.
이 태그는 객체가 다른지 비교하는 데 사용됩니다. logic:match와 반대 의미를 가지며 사용법은 비슷합니다.
12. 논리:messagePresent
이 태그는 ActionMessages/ActionErrors 개체가 존재하는지 확인하는 데 사용됩니다.
logic:messagesPresent 태그는 다음 상황에서 사용됩니다.
요청 범위에는 ActionMessages 개체가 있으며 레이블의 속성 속성은 ActionMessages의 속성에 해당합니다.
요청 범위에 ActionErrors 개체가 있고 레이블의 속성 속성은 ActionErrors의 속성에 해당합니다.
String 개체가 있는데 이를 ActionMessage로 변환(구성)한 다음 ActionMessages에 추가합니다.
String Array 객체가 있는데, 배열의 각 문자열을 ActionMessage로 변환한 다음 ActionMessages에 추가합니다.
태그의 메시지 속성 값이 true인 경우 Globals.MESSAGE_KEY가 요청 범위에서 메시지를 검색하는 키로 사용됩니다. 다른 경우에는 name의 값이 검색할 키로 사용됩니다. 나타나지 않는 경우 기본값은 Globals.ERROR_KEY입니다.
다음 코드는 logic:messagesPresent 태그의 일반적인 사용법을 보여줍니다.
예1.
다음과 같이 코드 코드를 복사합니다 .
<논리:메시지현재>
<ul>
<html:messages id="메시지">
<li><bean:write name="message"/></li>
</html:메시지>
</ul>
</logic:messagesPresent>
예2.
오류 정보가 있으면 모두 출력합니다.
다음과 같이 코드 코드를 복사합니다 .
<logic:messagePresent 속성="오류">
<html:messages property="error" id="err" >
<bean:이름 쓰기="err"/>
</html:메시지>
</logic:messagePresent>
13. 논리:messagesNotPresent
logic:messagesNotPresent 라벨 적용은 logic:messagesPresent 적용과 정반대입니다.
이 태그는 ActionMessages/ActionErrors 개체가 존재하지 않는지 확인하는 데 사용됩니다. 사용 방법은 logic:messagePresent와 유사합니다.
14. 논리: 현재
이 태그는 요청 객체가 전달한 매개변수가 존재하는지 확인하는 데 사용됩니다.
지정된 값이 나타나면 태그는 태그 본문의 내용을 생성합니다. 이 태그는 다음과 같은 상황에서 사용됩니다.
지정된 이름의 쿠키가 있는지 확인합니다.
지정된 이름의 헤더가 나타나는지 확인합니다.
지정된 이름의 JSP Bean이 나타나는지 확인하거나, 지정된 이름의 JSP Bean에 속성 속성이 나타나는지 확인합니다.
요청에 지정된 이름의 매개변수가 나타나는지 확인하세요.
현재 인증된 사용자가 지정된 보안 역할과 연결되어 있는지 확인합니다.
현재 인증된 주체가 지정된 이름을 가지고 있는지 확인합니다.
예1. 사용자 개체와 해당 이름 속성이 모두 요청에 있으면 해당 문자열이 출력됩니다.
다음과 같이 코드 코드를 복사합니다 .
<logic:현재 이름="사용자" 속성="이름">
사용자 개체와 개체의 이름 속성이 모두 존재합니다.
</logic:현재>
eg2. "hello"라는 JavaBean이 있으면 해당 문자열을 출력합니다.
<논리:현재 이름="안녕하세요" >
"hello"라는 JavaBean이 있습니다.
</logic:현재>
예3.
<논리:현재 헤더="사용자-에이전트">
사용자 에이전트 헤더가 있습니다.
</logic:현재>
예4.
다음 코드 예제는 지정된 이름이 User-Agent인 헤더가 있는지 확인하는 logic:present 태그를 보여줍니다.
<logic:present header="User-Agent">
귀하의 브라우저는 <bean:header id="userAgent" name="User-Agent"/>입니다.
<bean:write name="userAgent"/>. <br/>
</logic:현재>
15. 논리: 존재하지 않음
요청 객체가 전달한 매개 변수가 존재하지 않는지 여부를 확인하는 데 사용되는 태그입니다. 논리:현재의 의미는 반대이며 사용 방법은 유사합니다.
logic:notPresent 태그의 적용은 logic:present 태그와 정반대입니다.
16. 논리: 반복자
목록 값을 컬렉션(List, ArrayList, HashMap 등)으로 표시하는 데 사용됩니다.
logic:iterate 태그는 컬렉션을 반복하는 데 사용됩니다. 다음 메서드를 사용하여 이 태그에 대해 반복할 컬렉션을 지정할 수 있습니다.
값이 집합인 런타임 표현식을 사용하세요.
자체가 컬렉션인 JSP Bean을 참조하려면 name 속성을 사용하세요.
JSP Bean을 참조하려면 name 속성을 사용하십시오. 이 JSP Bean의 속성 중 하나는 컬렉션을 지정하기 위해 속성을 조합하여 사용할 수 있습니다.
위에서 언급한 컬렉션은 다음과 같습니다.
객체 유형 또는 원자 유형의 배열입니다.
ArrayList, Vector를 포함한 java.util.Collection 구현.
java.util.Enumeration 구현.
java.util.Iterator 구현.
HashMap, Hashtable 및 TreeMap을 포함한 java.util.Map 구현.
반복하는 컬렉션에 null 값이 포함된 경우 logic:iterate가 페이지 범위에 개체를 생성하지 않으므로 특정 조치를 취해야 합니다. 일반적으로 <logic:present> 태그나 <logic:notPresent> 태그를 사용하여 판단합니다.
다음은 논리:반복 ArrayList 반복의 예에 대한 객체 참조 관계 및 코드의 일부입니다.
그림 3. 논리:반복의 개체에 대한 참조 다이어그램의 사람 목록은 ListAction에 채워집니다. 여기서는 실제 애플리케이션에서 이러한 데이터를 데이터베이스에서 가져와야 합니다. 구체적인 코드는 다음과 같습니다.
다음과 같이 코드 코드를 복사합니다 .
공개 ActionForward 실행(ActionMapping 매핑,ActionForm.form,
HttpServletRequest 요청, HttpServletResponse 응답) {
ListForm.listForm.= (ListForm) 형식;
List<Person> 명 = new ArrayList<Person>();
사람 person1 = 새로운 사람();
person1.setId("00001");
person1.setName("조첸");
사람 person2 = 새로운 사람();
person2.setId("00002");
person2.setName("리웨이팡");
사람 person3 = 새로운 사람();
person3.setId("00003");
person3.setName("왕웨이");
명.추가(사람1);
명.추가(사람2);
명.추가(사람3);
listForm.setPersons(persons);
return mapping.findForward("성공");
}
라벨 출력 결과는 다음과 같습니다.
00001-->자오 첸
00002-->리 웨이팡
00003-->왕웨이
eg1. 사용자 목록(empList)에 있는 사용자 이름을 하나씩 출력합니다.
<logic:iterate id="emp" name="empList">
<bean:write name="emp" property="name"/><br>
</logic:반복>
eg2. 사용자 목록에서 1부터 시작하는 두 명의 사용자 이름을 출력합니다.
<logic:iterate id="emp" name="empList" indexId="index" offset="1" length="2">
<bean:write name="index"/>.<bean:write name="emp" property="name"/><br>
</logic:반복>
eg3. logic:iterator 태그의 중첩된 예
<logic:iterate id="emp" indexId="index" name="empList">
<bean:write name="index"/>. <bean:write name="emp" 속성="이름"/><br>
<logic:iterate id="address" name="emp" property="addressList" length="3" offset="1">
<bean:write name="주소"/><br>
</logic:반복>
</logic:반복>
17. 논리:리디렉션
이 태그는 페이지 리디렉션을 구현하는 데 사용되며 매개변수를 전달할 수 있습니다.
예: <logic:redirect href="http://www.javaeye.com"/>
18. 로직:포워드와 로직:리디렉션 비교
------------------------------------- ------------------------------------- ----------
두 가지 작업을 전달하고 리디렉션하는 것이 이해에 더 도움이 됩니다. 이러한 이유로 logic:forward 및 logic:redirect 두 태그도 여기에 소개됩니다.
이 두 가지 작업의 차이점을 살펴보겠습니다.
Forward는 서블릿 내에서 실행됩니다. 브라우저는 이 작업을 전혀 인식하지 못하며 원래 URL은 변경되지 않습니다. 브라우저가 다시 로드되면 원래 요청이 반복됩니다.
리디렉션은 두 단계로 나누어집니다. 첫 번째 단계는 웹 애플리케이션이 브라우저에 두 번째 URL을 알려주고, 그런 다음 브라우저가 두 번째 URL에 요청을 보내는 것입니다.
리디렉션은 브라우저가 두 번째 요청을 해야 하기 때문에 전달보다 느립니다. 또한 첫 번째 요청 범위(요청 범위)의 Bean은 두 번째 요청에 표시되지 않습니다.
위에서 설명한 차이점을 이해한 후에는 logic:forward 태그를 사용해야 하는 경우와 logic:redirect 태그를 사용해야 하는 경우를 알게 됩니다.
logic:forward 태그는 PageContext.forward() 또는 HttpServletResponse.sendRedirect()를 완료합니다. 선택은 컨트롤러에 의해 결정됩니다. logic:redirect 태그는 HttpServletResponse.sendRedirect()를 완료합니다.
logic:redirect 태그를 사용하면 html:link를 사용하는 것처럼 baseurl 및 쿼리 매개변수를 구성할 수 있습니다. 관심 있으신 분들은 html:link 태그를 참고하시면 됩니다.