《Java從入門到放棄》入門篇:Struts2的基本數據傳遞方式
把這個和JSP的數據傳遞方式對比一下,你就會發現·······真的可以少寫兩句代碼!!!
struts2中常用的兩種數據傳遞方式如下:
屬性匹配方式
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的基本數據傳遞方式