'Java/Struts2'에 해당하는 글 3건

일반 프로퍼티 또는 List 타입의 프로퍼티를 출력하는 방법은 이미 살펴 보았다.
프로퍼티가 아닌 객체 자체를 출력하는 경우는 다음과 같이 할 수 있다.

struts.xml

<action name="printObject" class="example.chapter2.PrintObjectAction">
    <result>/chapter2/printObject.jsp</result>
</action>

example.model.Product.java

package example.model;

public class Product {
    private String name;
    private String modelNo;
   
    public Product() {}
    public Product(String name, String modelNo) {
        this.name = name;
        this.modelNo = modelNo;
    }
   
    public String getName() {
        return name;
    }
   
    public void setName(String name) {
        this.name = name;
    }
   
    public String getModelNo() {
        return modelNo;
    }
   
    public void setModelNo(String modelNo) {
        this.modelNo = modelNo;
    }
}

example.chapter2.PrintObjectAction.java

package example.chapter2;

import example.model.Product;

public class PrintObjectAction {
    private Product product;
   
    public String execute() throws Exception {
        product = new Product("MP3 플레이어", "MP3-070701");
        return "success";
    }

    public Product getProduct() {
        return product;
    }

    public void setProduct(Product product) {
        this.product = product;
    }
}

/chapter2/printObject.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

<s:label>제품 이름 : </s:label>
<s:property value="product.name"/>
<br>
<s:label>제품 모델번호 : </s:label>
<s:property value="product.modelNo"/>

</body>
</html>

Product라는 모델에 빈 프로퍼티를 만들고, PrintObjectAction.java 파일의 execute 메소드에서 해당 프로퍼티에 값을 셋팅한다.
셋팅 된 값을 printObject.jsp에서 <s:property> 태그에서 product.name, product.modelNo로 불러와 사용한다.
해당 값은 OGNL 형식으로 getter, setter 형식의 빈 메소드를 사용하여 값을 불러 온다.
label 태그는 html 형식의 label 태그를 생성해 주는 역할을 한다.

객체를 List형태로 보여주는 경우라면 아래와 같이 사용할 수 있다.

<action name="printObjectList" class="example.chapter2.PrintObjectListAction">
   <result>/chapter2/printObjectList.jsp</result>
</action>

example.chapter2.PrintObjectListAction.java

package example.chapter2;

import java.util.ArrayList;
import java.util.List;

import example.model.Product;

public class PrintObjectListAction {
    private List<Product> listProduct;
   
    public String execute() throws Exception {
        listProduct = new ArrayList<Product>();
        listProduct.add(new Product("MP3 플레이어", "MP3-070701"));
        listProduct.add(new Product("노트북 PC", "NB-070613"));
        listProduct.add(new Product("PDA", "PDA-070507"));
        listProduct.add(new Product("휴대폰", "MOB-070615"));
       
        return "success";
    }

    public List<Product> getListProduct() {
        return listProduct;
    }

    public void setListProduct(List<Product> listProduct) {
        this.listProduct = listProduct;
    }
   
}

/chapter2/printObjectList.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<p>제품목록 : </p>
<table border="1" width="400">
<tr align="center" style="color:white;background-color:black;">
    <td>제품이름</td>
    <td>제품 모델번호</td>
</tr>

<s:iterator value="listProduct" status="status">
<tr bgcolor="<s:if test="#status.odd">lightgrey</s:if>">
    <td><s:property value="name"/></td>
    <td><s:property value="modelNo"/></td>
</tr>
</s:iterator>


</table>
</body>
</html>

action 파일의 execute 메소드에서 List 타입의 listProduct 프로퍼티에 값을 설정한다.
설정된 값을 printObjectList.jsp에서 불러와서 사용한다.
앞에서 product.name, product.modelNo 와 같이 사용했지만, iterator 안에서는 name, modelNo 와 같은 식으로 사용한다.
status는 Iteration 상태 값을 가리키는 값이다.
if 태그를 통해서 해당 값이 홀수인지 체크(#status.odd)한다.
status에서 지원하는 다른 속성은 다음과 같다.

first : 처음 행
last : 마지막 행
index : 행의 인덱스

추가로 날짜 출력과 관련된 예제 하나를 더 살펴보면 아래와 같다.

struts.xml

<action name="printDate" class="example.chapter2.PrintDateAction">
   <result>/chapter2/printDate.jsp</result>
</action>

PrintDateAction.java

package example.chapter2;

import java.util.Date;

public class PrintDateAction {
    private Date currDate;
   
    public String execute() {
        currDate = new Date();
       
        return "success";
    }

    public Date getCurrDate() {
        return currDate;
    }

    public void setCurrDate(Date currDate) {
        this.currDate = currDate;
    }
}

printDate.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<ul>
    <li><s:property value="currDate"/></li>
    <li><s:date name="currDate"/></li>
    <li><s:date name="currDate" format="yyyy-MM-dd HH:mm:ss"/></li>
</ul>
</body>
</html>

sdate 태그에서 format 을 설정하지 않으면 "2009. 5. 11 오후 3:06:36"와 같이 출력되며, format을 주게 되면 format 형식으로 출력된다.





신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'Java > Struts2' 카테고리의 다른 글

스트럿츠를 사용하여 객체 출력하기  (0) 2009.05.11
스트럿츠를 사용하여 List 출력하기  (1) 2009.05.06
스트럿츠2 설정하기  (2) 2009.04.28

WRITTEN BY
체리필터
프로그램 그리고 인생...

받은 트랙백이 없고 , 댓글이 없습니다.
secret
이번에는 스트럿츠를 사용하여 List를 출력해 보자. 일단 Action 파일과 result 파일 정의를 struts.xml에 정의하면 다음과 같다.

<action name="printStringList" class="example.chapter2.PrintStringListAction">
   <result>/chapter2/printStringList.jsp</result>
</action>

위에서 정의한 대로 PrintStringListAction.java 파일을 example.chapter2 패키지에 만든다.

package example.chapter2;

import java.util.ArrayList;
import java.util.List;

public class PrintStringListAction {
    private List<String> listString;
   
    public String execute() throws Exception {
        listString = new ArrayList<String>();
        listString.add("MP3 플레이어");
        listString.add("노트북 PC");
        listString.add("PDA");
        listString.add("휴대폰");
       
        return "success";
    }
   
    public List<String> getListString() { return listString; }
    public void setListString(List<String> listString) {
        this.listString = listString;
    }
}


listString이란 List 타입 변수에 값들을 담고, 나중에 result page(printStringList.jsp)에서 사용할 getListString 메소드도 만들어 준다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<s:iterator value="listString">
    <li><s:property/></li>
</s:iterator>
</body>
</html>

struts에서 사용하는 taglib를 선언 후 iterator를 통해 listString에 들어간 원소들을 하나씩 보여주고 있다.
위 소스의 결과는 아래와 같다.






신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'Java > Struts2' 카테고리의 다른 글

스트럿츠를 사용하여 객체 출력하기  (0) 2009.05.11
스트럿츠를 사용하여 List 출력하기  (1) 2009.05.06
스트럿츠2 설정하기  (2) 2009.04.28

WRITTEN BY
체리필터
프로그램 그리고 인생...

받은 트랙백이 없고 , 댓글 하나 달렸습니다.
  1. 여기까지 따라해봤는데..
    printString, printStringList 예제 둘다 실행하면 HTML 결과물에 아무것도 나타나지 않습니다..
    이럴때 생각할 수 있는 문제들로 무엇이 있을까요..? 답변 부탁드립니다.
secret
스트럿츠를 사용하기 위해 스트럿츠 환경을 구축할 필요가 있다.
우선은 이클립스에서 다음과 같이 'Dynamic Web Project'를 하나 생성한다.


그런 다음 위에서 볼 수 있는 것처럼 몇가지 내용을 추가해야 한다.
우선은 필요한 라이브러리를 추가해 보자.
http://struts.apache.org/에서 해당 버전을 다운받는다. 현재 시점에서 가장 최신 버젼은 2.1.6이다.(http://struts.apache.org/download.cgi#struts216)
다운 받은 파일의 압축을 풀면 lib 디렉토리에 jar 파일들이 있는데, 그 중에서 필요한 jar 파일들을 추가한다.
추가해야 할 파일 목록은 다음과 같다.

antlr-2.7.2.jar
commons-beanutils-1.7.0.jar
commons-chain-1.2.jar
commons-fileupload-1.2.1.jar
commons-logging-1.0.4.jar
commons-logging-api-1.1.jar
commons-validator-1.3.1.jar
freemarker-2.3.13.jar
jstl.jar
ognl-2.6.11.jar
oro-2.0.8.jar
standard.jar
struts-core-1.3.10.jar
struts2-core-2.1.6.jar
xwork-2.1.2.jar

jstl.jar 파일과 standard.jar 파일은 JSTL을 사용하기 위해 이미 앞에서 추가한 파일이며, 그외 다른 파일들도 추가한다.
에이콘에서 나온 '스트럿츠2 프로그래밍' 책을 기초로 셋팅을 따라 한 것인데 해당 책에는 특히 commons-fileupload-1.2.1.jar 라이브러리에 대한 업급이 없다.
commons-fileupload-1.2.1.jar 파일 없이 server를 구동 시킬 경우 에러가 발생 했었다.

라이브러리 추가 후에는 설정 파일을 수정해야 한다.

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>struts2</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
 
  <filter>
      <filter-name>struts</filter-name>
      <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  </filter>
  <filter-mapping>
      <filter-name>struts</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>
 
</web-app>

struts.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <package name="default" extends="struts-default" namespace="">
    </package>
</struts>

struts.properties

struts.i18n.reload=true
struts.devMode=false
struts.configuration.xml.reload=true
struts.continuations.package=org.apache.struts2.showcase
struts.custon.i18n.resources=globalMessages
#struts.action.extension=jspa
struts.url.http.port=8080
#struts.freemarker.manager.classname=customFreemarkerManager
struts.serve.static=true
struts.serve.static.browserCache=false
struts.multipart.maxSize=2097252

web.xml은 WebContent/WEB-INF/ 아래에 만들면 되며, struts.xml, struts.properties 파일은 src 밑에 둔다.(이클립스에서 자동으로 classes 밑으로 배포해 준다.)
위와 같이 설정 한 후 이클립스에서 서버를 추가해 준다.

Tomcat 6.0으로 선택

Tomcat 6.0으로 선택



추가 된 서버를 더블 클릭하면 아래와 같은 창이 뜬다.

Server name을 struts2로 바꾼다.(이름은 아무렇게나 해도 된다.)

Server name을 struts2로 바꾼다.(이름은 아무렇게나 해도 된다.)


아래 Modules 탭으로 이동 후 아래 그림과 같이 나오면 다음 내용을 진행한다.

Add External Web Module... 클릭

Add External Web Module... 클릭



Browser를 눌러 Document Root를 지정해 준다

Browser를 눌러 Document Root를 지정해 준다



Document Root는 프로젝트 생성할 때 자동으로 생성된 Directory 중 WebContent 디렉토리를 지정해 준다.
이와 같이 지정 후 저장한 다음 서버 에디팅 창을 닫는다.
그런 다음 생성된 struts2 서버를 start 한다.
이상 없이 start 가 된다면 다음과 같이 간단한 struts예제를 만들어 시험해 본다.

struts.xml

<struts>
    <package name="default" extends="struts-default" namespace="">
        <action name="printString" class="example.chapter2.PrintStringAction">
            <result>/chapter2/printString.jsp</result>
        </action>
    </package>
</struts>

package example.chapter2;

public class PrintStringAction {
    private String greetings;
   
    public String execute() throws Exception {
        greetings = "반갑다! 스트럿츠2.";
        return "success";
    }
   
    public String getGreetings() { return greetings; }
    public void setGreetings(String greetings) {
        this.greetings = greetings;
    }
}


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <s:property value="greetings" />
</body>
</html>

struts.xml에서 정의한 것처럼, example.chapter2 패키지 않에 PrintStringAction.java 파일을 만들고, jsp 파일은 /WebContent/chapter2/printString.jsp로 만든다.
jsp에서는 "<%@ taglib prefix="s" uri="/struts-tags" %>"와 같이 strus에서 사용할 tag lib를 선언한 다음, PrintStringAction에서 정의한 greetings 변수를 "<s:property value="greetings" />"와 같이 출력해 준다.
<s:property/>에서 사용한 value부분은 Action 파일에서 정의한 getter를 사용해서 값을 가져 온다.(OGNL 사용)
만일 getter가 없다면 오류가 나지는 않으며, 단지 화면에 내용이 출력되지 않는다.

신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'Java > Struts2' 카테고리의 다른 글

스트럿츠를 사용하여 객체 출력하기  (0) 2009.05.11
스트럿츠를 사용하여 List 출력하기  (1) 2009.05.06
스트럿츠2 설정하기  (2) 2009.04.28

WRITTEN BY
체리필터
프로그램 그리고 인생...

받은 트랙백이 없고 , 댓글  2개가 달렸습니다.
  1. 좋은 정보 감사합니다.. 퍼갈께요 ^_^
  2. 감사합니다 !!! 퍼가겠습니다~
secret