【5】Struts2的資料的封裝
1、Struts2的多例
多例的話就可以使用成員變數,建立Service的時候,就可以放成全域性。
2、屬性驅動
(1) 提供屬性的set方法完成封裝資料
/**
* Struts2中提供的資料封裝的方式一:屬性驅動-提供set方法的方式
*
*/
public class User1Action extends ActionSupport{
private String username;
private String password;
private String nickname;
private Integer age;
public
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public void setAge(Integer age) {
this
}
@Override
public String execute() throws Exception {
System.out.println("使用者名稱:"+username);
System.out.println("密碼:"+password);
System.out.println("暱稱:"+nickname);
System.out.println("年齡:"+age);
// 手動封裝資料
User user = new User();
user.setUsername(username);
user.setPassword(password);
user.setNickname(nickname);
user.setAge(age);
return NONE;
}
}
(2) 在頁面中提供表示式的方式完成資料封裝
頁面:
<h3>屬性驅動:頁面中提供表示式(OGNL)的方式實現</h3>
<form action="${ pageContext.request.contextPath }/user2Action.action" method="post">
使用者名稱:<input type="text" name="user.username"/><br/>
密碼:<input type="password" name="user.password"/><br/>
暱稱:<input type="text" name="user.nickname"/><br/>
年齡:<input type="text" name="user.age"/><br/>
<input type="submit"value="提交">
</form>
Action:
/**
* Struts2的資料封裝的方式二:頁面提供表示式的方式封裝
* @author jt
*
*/
public class User2Actionextends ActionSupport{
private User user;
// 需要提供get和set方法:
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String execute() throws Exception {
System.out.println(user);
return NONE;
}
}
3、模型驅動
採用模型驅動的方式完成資料封裝
頁面:
<h3>模型驅動:採用模型驅動的方式實現</h3>
<form action="${ pageContext.request.contextPath }/user3Action.action" method="post">
使用者名稱:<inputtype="text"name="username"/><br/>
密碼:<inputtype="password"name="password"/><br/>
暱稱:<inputtype="text"name="nickname"/><br/>
年齡:<inputtype="text"name="age"/><br/>
<input type="submit"value="提交">
</form>
Action:
/**
* Struts2的資料封裝的方式三:模型驅動的方式封裝資料
* @author jt
*
*/
public class User3Action extends ActionSupport implements ModelDriven<User>{
// 模型驅動必須手動構建物件
private User user = new User();
@Override
// 模型驅動使用的方法:
public User getModel() {
return user;
}
@Override
public String execute() throws Exception {
System.out.println(user);
return NONE;
}
}
***** OGNL表示式的方式和模型驅動都有使用的。
模型驅動通常會使用的方式,有一個缺點,就是隻能封裝到一個物件中,如果需要封裝到多個物件中,就只能使用屬性驅動OGNL表示式那種方式。
相關推薦
【5】Struts2的資料的封裝
1、Struts2的多例 多例的話就可以使用成員變數,建立Service的時候,就可以放成全域性。 2、屬性驅動 (1) 提供屬性的set方法完成封裝資料 /** * Struts2中提供的資料封裝的方式一:屬性驅動-提供set方法的方式 * *
【Struts2(二)】Struts2的封裝方法&其他介紹&注入方式詳解
1.2 相關知識點 1.2.1 Struts2的Servlet的API的訪問 在Struts2中,Action並沒有直接和Servlet API進行耦合,也就是說在Struts2的Action中不能直接訪問Servlet API。雖然Struts2中的Action訪問Servl
【Java】 大話資料結構(18) 排序演算法(5) (直接插入排序) 資料結構與演算法合集 資料結構與演算法合集
本文根據《大話資料結構》一書,實現了Java版的直接插入排序。 更多:資料結構與演算法合集 基本概念 直接插入排序思路:類似撲克牌的排序過程,從左到右依次遍歷,如果遇到一個數小於前一個數,則將該數插入到左邊所有比自己大的數之前,也就是說,將該數前面的所有更大的數字都後移一位,空出來的位置放入該數。
【5】資料結構與演算法--- 演算法 進階
第 4 章 演算法 進階 4.1 排序 4.1.1 排序演算法簡介 排序:把無序的佇列變成有序的佇列 排序演算法:排序演算法是一種將一串無規律資料依照特定順序進行排列的一種方法或思路。 排序演算法的穩定性:佇列中有相同的元素,排序前後,這兩個相同元素的順序有沒
【原創】大資料基礎之Spark(5)Shuffle實現原理及程式碼解析
一 簡介 Shuffle,簡而言之,就是對資料進行重新分割槽,其中會涉及大量的網路io和磁碟io,為什麼需要shuffle,以詞頻統計reduceByKey過程為例, serverA:partition1: (hello, 1), (word, 1)serverB:partition2: (hell
【Java】基本資料型別與封裝類、字串的相互轉換
一、基本資料型別與其對應的封裝類之間的相互轉換 基本資料型別轉換為封裝類 1·直接賦值 (自動打包) Integer i=3; 2·使用封裝類的含參建構函式(例項化) Integer i=new Integer(3); 3·使用封裝類提供的valueOf
【5】JVM-垃圾收集器
garbage 垃圾收集器 發展 access 表示 新生代 動態 導致 ren 通過學習了解到現在商用的JVM中的垃圾收集采用的是分代收集算法,即針對不同年代采用不同的收集算法。在JVM中,GC主要作用於堆內存中,堆內存又被劃分為新生代和老年代,由於新生代對象絕大多數是朝
Android自己定義組件系列【5】——進階實踐(2)
col fonts tle 適配 pack tom ica void log 上一篇《Android自己定義組件系列【5】——進階實踐(1)》中對任老師的《可下拉的PinnedHeaderExpandableListView的實現》前一部分進行了實現,這一篇我們來看看Ex
【5】基本字符串壓縮
stringbu 字符串 n) nbsp ret map ++ clas ipp 【題目】 利用字符重復出現的次數,編寫一個方法,實現基本的字符串壓縮功能。比如,字符串“aabcccccaaa”經壓縮會變成“a2b1c5a3”。若壓縮後的字符串沒有變短,則返回原先的字符串
感悟【5】
基本上 項目組 人在 機會 朋友圈 都是 那不 nbsp 說了 開微博呢,一方面是記錄自己的學習歷程,另一方面呢 是可以說自己想說的話,自己的感受,這些話很想發在朋友圈,但是怕給別人帶去負面影響 所以在朋友圈一般都不會發一些傷感的話,一個人在這個行業沒有人帶,都靠自己學習,
【5】標題上的小logo
-- span pan shortcut color font nbsp 圖片 logo <link rel="shortcut icon" href="logo圖片的路徑"> shortcut --- 捷徑,近路 icon --- 圖標【5】標題上的小lo
線性代數-矩陣-【5】矩陣化簡 C和C++實現
tar tput c++ spec 但是 exc c++語言 emp opened 點擊這裏可以跳轉至 【1】矩陣匯總:http://www.cnblogs.com/HongYi-Liang/p/7287369.html 【2】矩陣生成:http://www.cnblog
【5】GDI+ 生成驗證碼
splay 小應用 eric gen 前景 num 微軟 param graphic 這裏我們做一個小應用,就是繪制一個如下圖所示的驗證碼圖片。並且點擊驗證碼的時候會自動切換。 實現思路如下: 通過Random生成隨機數或字符及驗證碼 通過驗證碼內容長度生成指定大小的圖
Fiddler抓包【5】_Fiddler過濾
cts type request 抓包 .cn font show all ces nds 1、User Fiters啟用 2、Action Action:Run Filterset now是否運行,Load Filterset加載,Save Filterset保存;
爬蟲入門【5】PyQuery簡介
其他 attr before lxml 移除 位置 方式 fin .org PyQuery 目前最新的版本是1.3,基於最新版本進行介紹。 主要根據PyQuery的官方文檔進行了更新。 from pyquery import PyQuery as pq from lxml
【helloworld】-微信小程序開發教程-入門篇【5】
總結 mta top eight page ota 技術分享 小程序 attach 1. 開篇導言 本節目標:通過之前的講解,相信大家對於微信小程序本身有了一定的認識。本篇將專註於講解IDE的調試功能。 目標用戶:無編程經驗,但對微信小程序感興趣的同學。 學習目標
unigui導出TMS.Flexcel【5】
eve sig exceptio dst time 創建 hid pro session procedure TUniFrmeWebEmbedBase.ExportData; //導出到excel var FlexCelImport1: TExce
LeetCode:最長回文子串【5】
msu 產生 嘗試 ++ 不必要 code 分享 規劃 color LeetCode:最長回文子串【5】 題目描述 給定一個字符串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為1000。 示例 1: 輸入: "babad" 輸出: "bab" 註意: "ab
linux基礎學習【5】
http ive conf 解壓 gunzip ble src enable id_rsa sshd服務,服務管理及文件傳輸 一.控制服務 1.什麽是服務 2.用什麽控制服務 系統初始化進程可以進行相應的控制 3.當前系統初始化進程是什麽 systemd 系統
【坑】時效性資料傳參的後果
前幾天在測試的時候發現一個bug,剛開始還很莫名奇妙,反覆找原因都找不到,後來分析請求和返回報文的時候,才發現這個問題產生原因。為了讓大家可以少走彎路、少掉坑,這邊和大家一起分享一下。 應用場景: app可以用手機號來兌換別的系統金幣,運營平臺擁有修改繫結手機號的功能。正確的流程應該是運