1. 程式人生 > >SSH學習一 STRUTS2 DTO

SSH學習一 STRUTS2 DTO

dto cti out ont system cep ide round support

DTO在STRUTS2的應用是從頁面直接傳遞一個對象(比方自己寫的類)到Action

JSP僅僅能傳遞基本類型,STRUTS的DTO更方便


兩種用法:

一、假設表單中,各個屬性都聲明了實例的名字

    <form action="w.action" method = "post">
    	姓名:<input name="w.name" type="text"  value="admin"/><br/>
   		ID:<input name="w.id" type="password" value="hellow" ><br/>
   		<input type="submit" value="add"/>
    </form>

按下面步驟:

Action的java文件裏須要實例化。如果實例名字為w。那麽相應的struts.xml中的Action名字也必須是w。當然也要與表單的w一樣

struts.xml

		<action name="w" class="com.m2dto.action.WorkerAction" >
			<result name="success">
				/ok.jsp
			</result>
		</action>
		


Action.java

public class WorkerAction extends ActionSupport {
	Worker w = new Worker();
	
	public Worker getW() {
		return w;
	}

	public void setW(Worker w) {
		this.w = w;
	}

	@Override
	public String execute() throws Exception {
		System.out.println(w.getName());
		System.out.println(w.getId());
		return SUCCESS;
	}
}


二、假設表單中。各個屬性沒有聲明實例的名字 。例如以下

<form action="u.action" method = "post">
    	User姓名:<input name="name" type="text"  value="admin"/><br/>
   		UserID:<input name="id" type="password" value="hellow" ><br/>
   		<input type="submit" value="add"/>
     </form>

那麽action的java類除了須要extends actionsupport還須要implements ModelDriven<T>

T就是action須要接受的類的類型


除此之外,還須要:
(1)定義實例,並加上get set方法

(2)加上override getModel方法

例如以下樣例:

public class AddUser extends ActionSupport implements ModelDriven<Worker> {
	private Worker u = new Worker();
	@Override
	public Worker getModel() {
		if(u == null){
			u = new Worker();
		}
		return u;
	}
	public Worker getU() {
		return u;
	}
	public void setU(Worker u) {
		this.u = u;
	}
	@Override
	public String execute() throws Exception {
		System.out.println("user" + u.getName());
		System.out.println("user" + u.getId());
		return SUCCESS;
	}

}




SSH學習一 STRUTS2 DTO