struts2를 하면서 정말 편한점 하나는 개인적으로 폼데이타를 넘길때라고 생각한다.(struts1도 비슷하다)
set, get메소드만 있으면 다 해결되니 말이다.
소개정도는 아니지만 실제로 응용 가능한 간단한 소스를 만들고 테스트를 한 파일을 올린다.
(물론 구글링이나 다른 검색으로도 수많은 소스가 나온다 ㅋㅋ)
1. testRegister.jsp(구찮아서 그냥 하나의 파일에 다 만들엇다..)
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ 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=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<s:form name="form1" action="testRegister.action" method="POST">
id : <s:textfield name="testDto.id"/><br>
name : <s:textfield name="testDto.name"/><br>
age : <s:textfield name="testDto.age"/><br>
sex : <s:textfield name="testDto.sex"/>
<s:submit value="저장"/>
</s:form>
<br>
<br>
id : <s:property value="testDto.id"/><br>
name : <s:property value="testDto.name"/><br>
age : <s:property value="testDto.age"/><br>
sex : <s:property value="testDto.sex"/>
</body>
</html>
2. TestRegisterDTO.java
package test;
public class TestRegisterDTO{
private String id;
private String name;
private int age;
private String sex;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
3-1. TestRegisterAction.java(액션클래스에 직접 set, get메소드를 만드는경우)
package test;
public class TestRegisterAction{
private String id;
private String name;
private String age;
private String sex;
public String execute() throws Exception{
return "success";
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
3-2. TestRegisterAction.java(DTO클래스만 만드는경우)
package test;
public class TestRegisterAction{
private TestRegisterDTO testRegisterDto;
public String execute() throws Exception{
return "success";
}
public TestRegisterDTO getTestRegisterDto() {
return testRegisterDto;
}
public void setTestDto(TestRegisterDTO testRegisterDto) {
this.testRegisterDto = testRegisterDto;
}
}
4.struts.xml
<action name="testRegister" class="test.TestRegisterAction">
<result>/testRegister.jsp</result>
</action>
3-1, 3-2는 각자 쓰기나름이지만 3-1의 방법으로 한다면, 넘겨야할 데이타가 100개라면....ㅎㄷㄷ set, get메소드만 하더라도...그 다음은 알아서 상상을...
모두가 추천하지만 3-2의 방식을 추천한다. 다들 알고있겠지만 데이타가 들어가는 조건은 폼의 필드명과 같은 멤버필드와 set, get메소드만 있으면 된다.
이제 다 만들었으면 실행을 해보자.(따로 언급은 안했지만 환경은 struts2.1.6, 톰캣5.5를 사용했다.)
testRegister.jsp 실행화면
데이타 입력화면
저장클릭 완료화면
잘된다...;;
여기서 중요한것은 액션클래스에서 set, get메소드를 사용할 경우 view페이지에서 폼필드나 데이타가 뿌려지는 부분에
<s:textfield name="id"/>, <s:property value="id"/>
이렇게 쓰면 되지만, DTO클래스를 이용하는경우에는
<s:textfield name="testDto.id"/>, <s:property value="testDto.id"/>
이런식으로 써야된다.
'프레임워크 > Struts2' 카테고리의 다른 글
struts2 ajax테스트(submit) : 한글문제가 있음.. (0) | 2009.11.30 |
---|---|
struts.xml에서의 redirect-action, redirectAction (1) | 2009.11.26 |
[실전]struts2 페이징리스트 처리하기 (0) | 2009.11.13 |
interceptor에 대해 (0) | 2009.10.15 |
Struts2에서의 파일업로드 (0) | 2009.10.14 |