Action接收頁面傳來的參數方法

接收頁面傳來的參數方法java

一、第一種:在action中設置相應的變量  session

  在相應的action中設置與將要傳進來的參數名相同的變量 dom

  eg: 頁面傳給後臺兩個參數 name=chance & age = 1,ide

     那麼後臺的action中 要設定這樣的變量:private String name; private int age;同時,必須設置setXXX()和 getXXX()方法this

     那麼在訪問action過程當中,struts會自動的爲action中的這兩個變量設置前臺傳來的值 orm

二、第二種:DomainModule對象

  domainmodule 中文解釋:域模型接口

  domainmodule接收參數的方式就是:在action中設一個module對象(即實體對象)rem

  eg: 一個bbs系統,實現用戶註冊模塊,咱們會相應的創建一個 User類get

  分析下爲何要用DomainModule來接收參數,咱們從頁面向後臺的action中傳遞參數,action作的處理無非是緊接着再把這個參數傳遞給對應的module,那麼假如咱們的module有100個變量,那麼咱們用第一種方法接收參數時就要在action中設置100個變量,但若是咱們用domainmodule的話就簡單的多

  eg:有一個用戶登陸系統,前臺須要向後臺傳遞一個user的name 和 password 兩個屬性,

    咱們能夠這麼處理,首先在相應的action中設一個實體對象private User user;(假如咱們已經有了User這個實體類了),

    那麼前臺傳遞參數的時候能夠這麼來寫 action?user.name=chance&user.password=123

  注意:須要給user設置 set,get方法

 

  下面咱們在來考慮一個問題,一般用戶登陸的時候 除了用戶名,密碼,還會填寫一個 確認密碼(其實這個工做徹底能夠交給客戶端的js來處理,這裏只是爲了說明問題),可是在 User Module抽象封裝的過程它是不會有 confimPassword這一項的,這樣咱們就不能用domainModule來解決這個問題,怎麼辦?

  解決方法就是引入 DTO(又叫 do,或vo)data transform object,它的工做就兩點:接收一下,傳遞一下;

  接收一下:前臺傳過來的user對象,咱們不直接傳遞給usermodule 而是傳遞給 dto對象,例如userDto(它裏面會有一個confimPassword變量)

  傳遞一下:dto接收來參數後 進過一番數據處理,確認密碼輸入正確那麼就會 把 必要的參數變量傳遞給 usermodule 

  搞定!

第三種: ModuleDriven

  這個不是很經常使用,可是這個思想很重要,直接貼上代碼

較特殊,它是Struts2種獨有的一種接收用戶輸入的機制,想在項目中使用模型驅動

(ModelDriven)須要讓Action實現com.opensymphony.xwork2.ModelDriven 接口,使用它

的getModel()方法來通知Struts2要注入的屬性類型,而且聲明屬性時必定要實例化,但不需get,

set方法(這是與第二種方式的區別)。

 

public class UsersAction extends SuperAction implements ModelDriven<Users> {

/**
*
*/
private static final long serialVersionUID = 1L;
private Users user = new Users();

public String login() {
UsersDAO udao = new UsersDAOImpl();
if (udao.usersLogin(user)) {
// 在session中保存登陸成功的用戶名
session.setAttribute("loginUserName", user.getUsername());
return "login_success";
} else {
return "login_failure";
}
}

// 用戶註銷方法
public String logout() {
if (session.getAttribute("loginUserName") != null) {
session.removeAttribute("loginUserName");
}
return "logout_success";
}

@Override
public Users getModel() {
// TODO Auto-generated method stub
return this.user;
}

}

相關文章
相關標籤/搜索