<?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="ch4-4" namespace="/ch4" extends="struts-default"> <!-- 데이터 전송 --> <action name="helloWorld3" class="com.ch4.action.HelloWorld3"> <interceptor-ref name="params" /> <result name="success">hello.jsp</result> </action> <!-- Action 인터페이스 사용 및 유효성 검사 --> <action name="helloWorld4" class="com.ch4.action.HelloWorld4"> <interceptor-ref name="params" /> <result name="input">name4.jsp</result> <result name="success">hello.jsp</result> </action> <!-- ActionSupport 사용 및 유효성 검사 --> <action name="helloWorld5" class="com.ch4.action.HelloWorld5"> <interceptor-ref name="params" /> <interceptor-ref name="workflow" /> <result name="input">name5.jsp</result> <result name="success">hello.jsp</result> </action> <!-- 도메인 오브젝트 사용1 --> <action name="createUser" class="com.ch4.action.CreateUser"> <interceptor-ref name="params" /> <result name="success">createSuccess.jsp</result> </action> </package> </struts>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>도메인 오브젝트 테스트</title> </head> <body> <form action="createUser.action" method="post"> 이름 : <input type="text" name="name"><br/> 나이 : <input type="text" name="age"><br/> 이메일 : <input type="text" name="email"><br/> <input type="submit" value="전송"> </form> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>도메인 오브젝트 테스트</title> </head> <body> 사용자를 추가했습니다.<br/> ${user} </body> </html>
CreateUser.java
package com.ch4.action; import com.ch4.dao.UserDao; import com.ch4.domain.User; import com.opensymphony.xwork2.Action; public class CreateUser implements Action{ //멤버변수 private String name; private String age; private String email; @Override public String execute() throws Exception { //User 오브젝트 생성 User user = new User(); user.setName(name); user.setAge(age); user.setEmail(email); //Dao 생성 UserDao userDao = new UserDao(); userDao.createUser(user); return SUCCESS; } //setter public void setName(String name) { this.name = name; } public void setAge(String age) { this.age = age; } public void setEmail(String email) { this.email = email; } }
nterceptor가 낚아 챈다
CreateUser의 setter를 실행시켜서
execute() 에 User 오브젝트를 생성한다
위에 방식은 java의 방식
이번 방식은 Struts2 만의 방식
<?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="ch4-4" namespace="/ch4" extends="struts-default"> <!-- 데이터 전송 --> <action name="helloWorld3" class="com.ch4.action.HelloWorld3"> <interceptor-ref name="params" /> <result name="success">hello.jsp</result> </action> <!-- Action 인터페이스 사용 및 유효성 검사 --> <action name="helloWorld4" class="com.ch4.action.HelloWorld4"> <interceptor-ref name="params" /> <result name="input">name4.jsp</result> <result name="success">hello.jsp</result> </action> <!-- ActionSupport 사용 및 유효성 검사 --> <action name="helloWorld5" class="com.ch4.action.HelloWorld5"> <interceptor-ref name="params" /> <interceptor-ref name="workflow" /> <result name="input">name5.jsp</result> <result name="success">hello.jsp</result> </action> <!-- 도메인 오브젝트 사용1 --> <action name="createUser" class="com.ch4.action.CreateUser"> <interceptor-ref name="params" /> <result name="success">createSuccess.jsp</result> </action> <!-- 도메인 오브젝트 사용2 --> <action name="createUser2" class="com.ch4.action.CreateUser2"> <interceptor-ref name="params" /> <result name="success">createSuccess.jsp</result> </action> </package> </struts>userForm2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>도메인 오브젝트 테스트</title> </head> <body> <form action="createUser2.action" method="post"> 이름 : <input type="text" name="user.name"><br/> 나이 : <input type="text" name="user.age"><br/> 이메일 : <input type="text" name="user.email"><br/> <input type="submit" value="전송"> </form> </body> </html>
스트럿츠2의 방법
user.name
user.age
user.email
라고 쓰면 user를 자바빈으로 인식
코딩이 줄어들면서
위에와 동일한 일을 한다
하지만 이 방식은 권장 방식이 아니다
-> 자바빈의 명칭이 바뀔 경우 다 뜯어 고쳐야된다(의존성이 높은 코드)
이러한 방식이 있다는것만 알아두자
권장 방식
<?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="ch4-4" namespace="/ch4" extends="struts-default"> <!-- 데이터 전송 --> <action name="helloWorld3" class="com.ch4.action.HelloWorld3"> <interceptor-ref name="params" /> <result name="success">hello.jsp</result> </action> <!-- Action 인터페이스 사용 및 유효성 검사 --> <action name="helloWorld4" class="com.ch4.action.HelloWorld4"> <interceptor-ref name="params" /> <result name="input">name4.jsp</result> <result name="success">hello.jsp</result> </action> <!-- ActionSupport 사용 및 유효성 검사 --> <action name="helloWorld5" class="com.ch4.action.HelloWorld5"> <interceptor-ref name="params" /> <interceptor-ref name="workflow" /> <result name="input">name5.jsp</result> <result name="success">hello.jsp</result> </action> <!-- 도메인 오브젝트 사용1 --> <action name="createUser" class="com.ch4.action.CreateUser"> <interceptor-ref name="params" /> <result name="success">createSuccess.jsp</result> </action> <!-- 도메인 오브젝트 사용2 --> <action name="createUser2" class="com.ch4.action.CreateUser2"> <interceptor-ref name="params" /> <result name="success">createSuccess.jsp</result> </action> <!-- 도메인 오브젝트 사용3 --> <!-- interceptor 순서를 반드시 지킬것 --> <action name="createUser3" class="com.ch4.action.CreateUser3"> <interceptor-ref name="prepare" /> <interceptor-ref name="modelDriven" /> <interceptor-ref name="params" /> <result name="success">createSuccess.jsp</result> </action> </package> </struts>CreateUser3.java
package com.ch4.action; import com.ch4.dao.UserDao; import com.ch4.domain.User; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ModelDriven; import com.opensymphony.xwork2.Preparable; public class CreateUser3 implements Action,Preparable,ModelDriven{ private User user; @Override public String execute() throws Exception { UserDao userDao = new UserDao(); userDao.createUser(user); return SUCCESS; } //생성된 자바빈 객체에 params 인터셉터가 데이터를 저장할 수 있도록 //value stack 상단에 자바빈 객체를 올려주는 역할 수행 @Override public Object getModel() { return user; } //자바빈 객체 생성 @Override public void prepare() throws Exception { user = new User(); } }userForm3.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>도메인 오브젝트 테스트</title> </head> <body> <form action="createUser3.action" method="post"> 이름 : <input type="text" name="name"><br/> 나이 : <input type="text" name="age"><br/> 이메일 : <input type="text" name="email"><br/> <input type="submit" value="전송"> </form> </body> </html>
interceptor가 2개가 늘어남
prepare -> CreateUser3.java prepare()를 동작 시킴
modelDriven -> getModel()를 동작시킴
params -> 셋팅
xml에 명시할경우
위에 있는 순서를 지켜야된다
이 게시물 공통 사용 코드는
createSuccess.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>도메인 오브젝트 테스트</title> </head> <body> 사용자를 추가했습니다.<br/> ${user} </body> </html>
User.java
package com.ch4.domain; public class User { private String name; private String age; private String email; public User() { System.out.println("User 인터페이스가 생성되었습니다."); } 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 getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Override public String toString() { return "User [name=" + name + ", age=" + age + ", email=" + email + "]"; } }
'Struts2 > 기본(Oracle)' 카테고리의 다른 글
struts2 커스텀 인터셉터 (0) | 2012.06.21 |
---|---|
struts2 인터셉터란? (0) | 2012.06.21 |
struts2 ActionSupport를 사용하여 유효성 검사(Interceptor) (0) | 2012.06.21 |
struts2 유효성 검사 (0) | 2012.06.21 |
struts2 include 사용 (0) | 2012.06.21 |