스트럿츠 logic 테그 설명

2013. 8. 22. 16:5299. 정리전 - IT/11. Java

 

 

logic 태그 라이브러

logic 태그 라이브러리에는 반복 처리, 조건 분기, 리디렉트 처리등을 실시하는 태그가 정의되고 있습니다.

 

 

 

 

struts-config.xml

 

스트럿츠 프로그램의

정의 파일

 exLogic.jsp

 값을 입력하는 Form 화면을

 html 태그 라이브러리에서 작성합니다. 

 LogicRegistrationAction.java 

 액션·클래스입니다. 천이처의 파일로서

 exLogic2.jsp를 지정합니다.

 LogicRegistrationForm.java

 입력된 값을 보관 유지하는 액션·폼 Bean

 exLogic2.jsp

 전페이지로 입력된 값의 조건 분기, 반복 처리를

 logic 태그 라이브러리에서 실시

 

 

struts-config.xml

 

 <? xml version="1.0" encoding="Shift_JIS"? >
<!DOCTYPE struts-config PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
 "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>

 

  <!-- (1) ActionClass의 행동을 지정 -->
  <action-mappings>
    <action path="/LogicRegistration"
     type="struts.LogicRegistrationAction"
     name="LogicRegistrationForm"
     scope="request">

 

      <!-- (2) ActionClass 실행 후의 천이처를 지정 -->
      <forward name="success" path="/exLogic2.jsp"/>
    </action>
  </action-mappings>

 

  <!-- (3) ActionForm Bean의 지정 -->
  <form-beans>
    <form-bean
     name="LogicRegistrationForm"
     type="struts.LogicRegistrationForm"/>
  </form-beans>

</struts-config>

 

 (1).  <action-mappings>태그로 액션·클래스, 관련하는 액션·폼 Bean를 지정합니다.  
 (2).  <forward>태그로 액션·클래스 실행 후에 돌려주어진 값"success"에 합치하는

         천이처(exLogic2.jsp)를 지정합니다.

 (3).  <form-beans>태그로 액션·폼 Bean를 지정합니다.  

 

 

 

exLogic.jsp

  html 태그 라이브러리를 사용해, Form 화면을 작성

 

 <%@ page contentType="text/html; charset=Shift_JIS" %>
<%-- (1) 태그 라이브러리의 지정 --%>
<%@ taglib uri="/tags/struts-html" prefix="html" %>

<html:html>
<head><title>logic 태그 라이브러리</title></head>
<body>
logic 태그 라이브러리 샘플 1
<html:form action="/LogicRegistration">
  ID코드
  <br>
  <%-- (2)<html:text>태그의 사용 --%>
  <html:text property="idCode" />
  <br><br>
  스포츠
  <br>
  <%-- (3)<html:multibox>태그의 사용 --%>
  <html:multibox property="hobby" value="baseball"/>야구
  <html:multibox property="hobby" value="soccer"/>축구
  <html:multibox property="hobby" value="tennis"/>테니스
  <html:multibox property="hobby" value="golf"/>골프
  <br>
  <html:multibox property="hobby" value="pingpong"/>탁구
  <html:multibox property="hobby" value="basket"/>바스켓
  <html:multibox property="hobby" value="volley"/>발레
  <html:multibox property="hobby" value="rugby"/>럭비
  <br><br>
  <html:submit property="submit" value="송신"/>
</html:form>

</body>
</html:html>

 

 (1).  taglib 지시문으로 사용하는 태그 라이브러리를 지정합니다.  
 (2).  <html:text>태그를 사용합니다.

        HTML의 것<input type="text">과 거의 같은 동작을 해, 프롭퍼티 idCode의 값을 입력합니다.  
 (3).  <html:multibox>태그를 사용합니다. HTML의 것<input type="checkbox">과 거의 같은 동작을 합니다.

 

 

 

LogicRegistrationAction.java

  이번 액션·클래스에서는 특히 어떤 처리도 실시하지 않고, exLogic2.jsp를 호출

 

 package struts;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.ServletContext;
import org.apache.struts.action. *;

//(1) LogicRegistrationAction 클래스의 선언
public final class LogicRegistrationAction extends Action {
  public ActionForward execute(ActionMapping mapping,
         ActionForm form,
         HttpServletRequest req,
         HttpServletResponse res) {

    //(2) exLogic2.jsp의 호출
    return (mapping.findForward("success"));
  }
}

 

 (1).  Action 클래스를 슈퍼 클래스로서 LogicRegistrationAction 클래스를 선언합니다.  
 (2).  findForward 메소드를 사용해, exLogic2.jsp를 호출합니다.

       "success"와 exLogic2.jsp의 매핑은 struts-config.xml에 정의합니다.

 

 

 

LogicRegistrationForm.java

  exLogic.jsp로 입력한 값을 보존, 취득하는 메소드를 제공하는 액션·폼 Bean를 작성

 

 package struts;

import org.apache.struts.action. *;

//(1) LogicRegistrationForm 클래스의 선언
public final class LogicRegistrationForm extends ActionForm {

  //(2) 프롭퍼티치를 보관 유지하는 변수의 선언
  private String idCode;
  private String[] hobby;

  //(3) 프롭퍼티치의 액세스 메소드의 선언
  public void setIdCode(String idCode) {this.idCode = idCode;}
  public String getIdCode() {return idCode;}
  public void setHobby(String[] hobby) {this.hobby = hobby;}
  public String[] getHobby() {return hobby;}

}

 

 (1).  ActionForm 클래스를 슈퍼 클래스로서 LogicRegistrationForm 클래스를 선언합니다.  
 (2).  exLogic.jsp로 입력한 값을 보존하는 변수를 선언합니다.  
 (3).  프롭퍼티치의 액세스 메소드를 선언합니다. setXxx 메소드로 프롭퍼티치를 보존합니다.

        getXxx 메소드로 메소드가 불렸을 때, 프롭퍼티치를 돌려줍니다.

 

 

 

exLogic2.jsp

  logic 태그 라이브러리를 사용해, 전페이지로 입력된 값의 조건 분기, 반복 처리를 실시

 

 <%@ page contentType="text/html; charset=Shift_JIS" %>
<%-- (1) 태그 라이브러리의 지정 --%>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>

<html:html>
<head><title>logic 태그 라이브러리</title></head>
<body>

logic 태그 라이브러리 샘플 1
<br><br>
실행 결과
<br><br>


<%-- (2) <logic:present>태그의 사용 --%>
<logic:present name="LogicRegistrationForm" property="idCode" scope="request">
  ·프롭퍼티 idCode는 존재하고 있습니다. <br>
</logic:present>

 

<%-- (3) <logic:notEmpty>태그의 사용 --%>
<logic:notEmpty name="LogicRegistrationForm" property="idCode" scope="request">
  ·프롭퍼티 idCode는 입력이 끝난 상태입니다. <br>
</logic:notEmpty>

 

<%-- (4) <logic:equal>태그의 사용 --%>
<logic:equal name="LogicRegistrationForm" property="idCode" scope="request" value="Java">
  ·idCode는 Java입니다. <br>
</logic:equal>
<br>스포츠<br>


<%-- (5) <logic:iterate>태그의 사용 --%>
<logic:iterate id="element" name="LogicRegistrationForm" property="hobby" scope="request">
  ·<bean:write name="element"/><br>
</logic:iterate>

 

</body>
</html:html>

 

 (1).  taglib 지시문으로 사용하는 태그 라이브러리를 지정합니다.  
 (2).  <logic:present>태그를 사용합니다.

        속성으로 지정한 프롭퍼티명, Cookie명, 헤더명, 변수명이 존재하는 경우, 태그내의 처리를 실행합니다.

        name 속성에 액션 폼·Bean를 지정합니다.

        property 속성에 액션 폼·Bean내의 해당하는 프롭퍼티명을 지정합니다.

        scope 속성에 프롭퍼티치의 스코프를 지정합니다.  
 (3).  <logic:notEmpty>태그를 사용합니다.

        속성으로 지정한 프롭퍼티명, 변수명의 값이 Null가 아닌 경우, 태그내의 처리를 실행합니다.

        name 속성에 액션 폼·Bean를 지정합니다.

        property 속성에 액션 폼·Bean내의 해당하는 프롭퍼티명을 지정합니다.

        scope 속성에 프롭퍼티치의 스코프를 지정합니다.  
 (4).  <logic:equal>태그를 사용합니다.

        속성으로 지정한 프롭퍼티명, Cookie명, 헤더명, 변수명의 값이 특정의 키워드와 같은 경우,

        태그내의 처리를 실행합니다.

        name 속성에 액션 폼·Bean를 지정합니다.

        property 속성에 액션 폼·Bean내의 해당하는 프롭퍼티명을 지정합니다.

        scope 속성에 프롭퍼티치의 스코프를 지정합니다.

        value 속성과 비교하는 특정의 키워드를 지정합니다.  
 (5).  <logic:iterate>태그를 사용합니다.

        배열, 콜렉션의 요소를 순서에 반복 처리를 실시합니다.

        id속성에, 각 요소가 대입되는 변수를 지정합니다.

        name 속성에 액션 폼·Bean를 지정합니다.

        property 속성에 액션 폼·Bean내의 해당하는 프롭퍼티명을 지정합니다.

        scope 속성에 프롭퍼티치의 스코프를 지정합니다. 

        <bean:write>(을)를 사용해 id속성으로 지정된 변수의 값을 표시하고 있습니다.

 

 

 

 

logic 태그 라이브러리 일람

logic 태그 라이브러리에서 정의되고 있는 태그의 일람입니다.

 

 Struts 문서

(logic 태그라이브러리)

 http://struts.apache.org/userGuide/struts-logic.html

 empty

 지정한 Bean의 프롭퍼티, 변수가 Null인가 어떤가를 판별

 notEmpty

 지정한 Bean의 프롭퍼티, 변수가 Null가 아닌가를 판별

 equal

 지정한 Bean의 프롭퍼티, 변수, 헤더, Cookie의 값이 지정한 특정의 값과 동일한가를 판별

 notEqual

 지정한 Bean의 프롭퍼티, 변수, 헤더, Cookie의 값이 지정한 특정의 값과 다르고 있는지 판별

 forward

 struts-config.xml의<global-forwards>엘리먼트로 지정한 페이지로 포워드를 실시

 redirect

 지정한 페이지에 리디렉트를 실시

 greaterEqual

 지정한 Bean의 프롭퍼티, 변수, 헤더, Cookie의 값이 지정한 특정의 값이상인가 판별

 greaterThan

 지정한 Bean의 프롭퍼티, 변수, 헤더, Cookie의 값이 지정한 특정의 값보다 큰지 판별

 lessEqual

 지정한 Bean의 프롭퍼티, 변수, 헤더, Cookie의 값이 지정한 특정의 값이하인가 판별

 lessThan

 지정한 Bean의 프롭퍼티, 변수, 헤더, Cookie의 값이 지정한 특정의 값보다 작은지 판별

 iterate  배열, 콜렉션의 각 요소의 반복 처리를 실시
 match

 지정한 Bean의 프롭퍼티, 변수, 헤더, Cookie의 값으로 지정한 특정의 값이 포함여부 판별

 notMatch

 지정한 Bean의 프롭퍼티, 변수, 헤더, Cookie의 값으로 지정한 특정의 값이 포함되지 않은지 판별

 messagesPresent

 request 스코프내로 지정한 ActionErrors 오브젝트, ActionMessages 오브젝트, String 오브젝트, String 배열이 존재할지 판별

 messagesNotPresent  request 스코프내로 지정한 ActionErrors 오브젝트, ActionMessages 오브젝트, String 오브젝트, String 배열이 존재하지 않는가를 판별
 present

 지정한 Bean의 프롭퍼티명, 변수명, 헤더명, Cookie명이 존재할지 판별

 notPresent  지정한 Bean의 프롭퍼티명, 변수명, 헤더명, Cookie명이 존재하지 않는가를 판별