1. 程式人生 > >《Java從入門到放棄》入門篇:Struts2的基本數據傳遞方式

《Java從入門到放棄》入門篇:Struts2的基本數據傳遞方式

java struts action

把這個和JSP的數據傳遞方式對比一下,你就會發現·······真的可以少寫兩句代碼!!!


struts2中常用的兩種數據傳遞方式如下:

  1. 屬性匹配方式

  2. ModelDriven接口匹配方式(常用於自定義類型)

個人比較喜歡使用第一種,為什麽呢?因為············懶~~~~~。


接下來,有請代碼君登場!!!技術分享

一、屬性匹配方式

屬性匹配又分為兩種情況,一種是Java基本數據類型,一種是自定義類型,請Look下面的Code。

1.1)自定義一個Singer類,包含3個屬性(singerID,singerName,area),代碼如下

public class Singer {
	private int singerID;		//歌手ID
	private String singerName;	//歌手姓名
	private String area;		//所屬地區
	public int getSingerID() {
		return singerID;
	}
	public void setSingerID(int singerID) {
		this.singerID = singerID;
	}
	public String getSingerName() {
		return singerName;
	}
	public void setSingerName(String singerName) {
		this.singerName = singerName;
	}
	public String getArea() {
		return area;
	}
	public void setArea(String area) {
		this.area = area;
	}
}

1.2)在前面定義的Action類中添加兩個屬性(msg和singer),並修改add方法

public class Hello extends ActionSupport {
	private String msg;       //基本類型
	private Singer singer;    //自定義類型
	
	public String getMsg() {
		return msg;
	}
	public void setMsg(String msg) {
		this.msg = msg;
	}
	public Singer getSinger() {
		return singer;
	}
	public void setSinger(Singer singer) {
		this.singer = singer;
	}

	// 默認調用
	@Override
	public String execute() throws Exception {
		System.out.println("默認調用的方法!");
		return SUCCESS;
	}
	// 添加
	public String add() {
		System.out.println("調用了添加的方法!");
		System.out.println("編號:"+singer.getSingerID());
		System.out.println("姓名:"+singer.getSingerName());
		System.out.println("地區:"+singer.getArea());
		System.out.println("留言:"+msg);
		
		return "add";
	}
}

1.3)編寫添加歌手的JSP頁面(前面的singer_add.jsp),註意看代碼中表單元素的name屬性中基本類型和自定義類型的區別(singer就是上面Action中的singer屬性)

    <body>
  	<!-- 提交給前面配置的通配符方式的Action -->
  	<form action="smng_add.action" method="post">
  		編號:<input type="text" name="singer.singerID" value="9527" /><br />
  		姓名:<input type="text" name="singer.singerName" value="小馬哥" /><br />
  		地區:<select name="singer.area">
  			<option>大陸</option>
  			<option selected="selected">香港</option>
  			<option>臺灣</option>
  			</select><br />
  		留言:<input type="text" name="msg" value="好酷啊!" /><br />
  		<input type="submit" value="提交" />
  	</form>
    </body>

1.4)因為該JSP頁面放在WEB-INF下面,不能直接訪問,所以再在struts.xml中配置一個訪問Action

<action name="singeradd" class="">
    <result>/WEB-INF/jsp/singer_add.jsp</result>
</action>

1.5)接下來就可以訪問http://localhost:8080/strDemo/singeradd.action點擊提交看效果了, 是不是很簡單!!!技術分享

技術分享



二、ModelDriven接口方式

這種方式與屬性方式最大的區別就是自定義類型不用封裝,而是通過實現該接口來進行自動賦值,請看下面代碼。(主要是Action類不一樣,另外JSP頁面的name屬性也不需要加對象名了)

2.1)修改Action類

public class Hello extends ActionSupport implements ModelDriven<Singer> {
	
	private String msg;
	
	//不用封裝get和set,但必須實例化,否則報空指針異常
	private Singer singer = new Singer();	
	
	public String getMsg() {
		return msg;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}

	// 默認調用
	@Override
	public String execute() throws Exception {
		System.out.println("默認調用的方法!");
		return SUCCESS;
	}
	// 添加
	public String add() {
		System.out.println("調用了添加的方法!");
		System.out.println("編號:"+singer.getSingerID());
		System.out.println("姓名:"+singer.getSingerName());
		System.out.println("地區:"+singer.getArea());
		System.out.println("留言:"+msg);
		
		return "add";
	}
	//下面是實現接口後的新增代碼
	@Override
	public Singer getModel() {
		// TODO Auto-generated method stub
		return singer;
	}
	public void setModel(Singer singer){
		this.singer = singer;
	}
	
}

2.2)修改JSP頁面(註意與前面的JSP頁面對比表單元素的name值,這兒直接寫singer對象的屬性名)

    <body>
  	<!-- 提交給前面配置的通配符方式的Action -->
  	<form action="smng_add.action" method="post">
  		編號:<input type="text" name="singerID" value="9527" /><br />
  		姓名:<input type="text" name="singerName" value="小馬哥" /><br />
  		地區:<select name="area">
  			<option>大陸</option>
  			<option selected="selected">香港</option>
  			<option>臺灣</option>
  			</select><br />
  		留言:<input type="text" name="msg" value="好酷啊!" /><br />
  		<input type="submit" value="提交" />
  	</form>
    </body>

OK,最終的效果是一模一樣,今天的內容就到這兒,感謝各位看官。

這些入門級的東西,應該還沒有出現要放棄的客官吧,如果還看得過眼,請點個贊技術分享


本文出自 “軟件思維” 博客,請務必保留此出處http://softi.blog.51cto.com/13093971/1951466

《Java從入門到放棄》入門篇:Struts2的基本數據傳遞方式