編輯:關於Android編程
在我們的生活中,有很多的網頁都存在用戶登陸界面,當我們在登陸界面上輸入自己的用戶名和密碼後,這些數據都會傳入後台,供後台來驗證我們所輸入的數據是否正確。那麼問題來了,後台是怎麼接到到我們在用戶登陸界面上所輸入的用戶名和密碼的呢??
今天剛好學習到了struts2接收參數的部分,因此就有了這篇博文。
struts2接收輸入參數有3種方式,如下:
1、使用Action的屬性接收參數
2、使用Domain Model接收參數
3、使用ModelDriven接收參數
下面就這接收參數的三種方式一一進行介紹。
在相應的Action類中設置與將要傳進來的參數名一樣的變量,並設置這些變量的getter/setter方法。那麼在訪問action的過程中,struts2會自動的為action中的屬性變量設置為前台傳來的值。
我們以一個登陸界面為例,登陸界面中有用戶名和密碼。
前台界面的文件login.jsp的代碼內容如下:
主要是一個表單,表單格式如下:
表單格式如下:
<form action="loginAction.action" method="post"> 用戶:<input type="text" name="username"> 密碼:<input type="password" name="password"> <input type="submit" value="提交" >
Action類中的代碼如下:
從下圖的代碼可以看到,Action類中有兩個屬性:username和passwZ喎?/kf/ware/vc/" target="_blank" class="keylink">vcmQs1eLBvbj2yvTQ1MrH0+u1x8K9vefD5rXEss7K/c/gttTTprXEoaPSssno1sPBy2dldKGic2V0t723qKGjPC9wPg0KPHA+PGltZyBhbHQ9"" src="/uploadfile/Collfiles/20160423/20160423090352210.png" title="\" />
struts.xml文件中的內容如下:
帶上面完成後,我們就可以打開浏覽器,並輸入:http://localhost:8080/HelloWorld/login.jsp,出現如下的登陸界面:
當我們在登陸界面上填上數據並點擊提交後,數據就自動傳入後台中了,並自動跳轉並執行http://localhost:8080/HelloWorld/loginAction.action
這就是利用Action類的屬性來接收外部參數。
Domain Model 就是采用域模型來接收參數。即將我們要接收的數據封裝到一個對象中去,采用這種方式進行傳遞。
我們還是以上面的登陸例子來進行介紹。
由於登陸界面中的數據為:username和password;
因此,我們可以建立一個User類。內容如下:
User類中有username /password兩個屬性,並有這些屬性的get、set方法。
Action類的內容如下:裡面包括User 的一個引用。
並且一定要有User引用的get、set方法。
前台界面的代碼也要有相應的改變,改變為畫紅色線所示
struts.xml文件的內容與第一種方式的一樣,為方便看,這裡再貼一次。
待這些完成之後,
我們就可以打開浏覽器,並輸入:http://localhost:8080/HelloWorld/login.jsp,出現如下的登陸界面:
當我們在登陸界面上填上數據並點擊提交後,數據就自動傳入後台中了,並自動跳轉並執行http://localhost:8080/HelloWorld/loginAction.action
以上就是struts2接收參數的第二種方式。
這種方式是我們比較推薦的一種方式,使用方法如下。
1、首先,Action類要實現ModelDriven.並重寫getModel方法,
其中要注意的是,User對象必須實例化。
代碼如下:
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class LoginAction extends ActionSupport implements ModelDriven{
private User user=new User();//必須要求實例化
public String login(){
System.out.println(user.getUsername()+", "+user.getPassword());
return SUCCESS;
}
public User getModel() {
return user;
}
}
2、login.jsp中的表單代碼如下:
用戶名:
密碼:
提交:
User類和struts.xml文件、web.xml文件與之前的一樣。
這就是第三種方法:使用ModelDriven接受參數。
上面的User類中只封裝了String類型的username/password,如何User類中有一個List tels ;那麼應該怎麼來從前台傳遞參數給這個List呢?
現在我們為User類添加一個List,代碼如下
public class User {
private String username;
private String password;
private List tels;
public List getTels() {
return tels;
}
public void setTels(List tels) {
this.tels = tels;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
login.jsp中的表單信息如下:
注意:個人電話:
就是將個人電話的表單中的數據傳入到後台並保存在List tels的第一個位置。
如果我們的User類中,有一個List userList;屬性呢,那麼這種情況該怎麼樣從前台獲取到參數呢??
例如:User類的代碼如下
public class User {
private String username;
private String password;
private List tels;//一個復雜的屬性
public List getTels() {
return tels;
}
public void setTels(List tels) {
this.tels = tels;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
而login.jsp中表單的內容如下:
根據上面的兩個復雜屬性的例子,相信就了解了,如果我們想將前台的數據傳給一個List,按照上面的步驟即可完成。
先上圖 LEDView效果如圖所示。 之前看到一篇博客使用兩個TextView實現了該效果,於是我想用自定義控件的方式實現一個LEDView,使用時即可直接使用該控件。
應用程序都會涉及到數據的輸入、輸出,android應用也不例外。Android中應用程序存儲數據通常有兩種模式:1,數據量少,格式簡單(例如,字符串、標量)
最近在開發中遇到了這樣一個問題,在下拉刷新組件中包含了一個輪播圖組件,當左右滑動的圖片時很容易觸發下拉刷新,如下圖所示:如圖中紅色箭頭所示方向切換輪播圖,很容易觸發下拉刷
二維碼其實有很多種,但是我們常見的微信使用的是一種叫做QRCode的二維碼,像下面這樣的,可以放心的掃,這只是我的博客主頁鏈接啦: 關於QR碼編碼的二維碼,我們
今天調試一個bug的時候,情景如下:一個Activity A,需要用st