Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 《struts2接受輸入參數的三種方式》

《struts2接受輸入參數的三種方式》

編輯:關於Android編程

struts2 接收輸入參數的3種方式

在我們的生活中,有很多的網頁都存在用戶登陸界面,當我們在登陸界面上輸入自己的用戶名和密碼後,這些數據都會傳入後台,供後台來驗證我們所輸入的數據是否正確。那麼問題來了,後台是怎麼接到到我們在用戶登陸界面上所輸入的用戶名和密碼的呢??

今天剛好學習到了struts2接收參數的部分,因此就有了這篇博文。

struts2接收輸入參數有3種方式,如下:

1、使用Action的屬性接收參數

2、使用Domain Model接收參數

3、使用ModelDriven接收參數

下面就這接收參數的三種方式一一進行介紹。

第一種:使用Action的屬性接收參數

在相應的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接收參數

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接收參數的第二種方式。

第三種:使用ModelDriven接收參數

這種方式是我們比較推薦的一種方式,使用方法如下。

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中表單的內容如下:


用戶名: 密碼: 學生1: //就是將此表單的內容給User類中屬性Listtels中第一個元素的username. 學生2: 提交:

根據上面的兩個復雜屬性的例子,相信就了解了,如果我們想將前台的數據傳給一個List,按照上面的步驟即可完成。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved