1. 程式人生 > >Struts2中Action接收引數的方法:屬性,Model,ModelDriver

Struts2中Action接收引數的方法:屬性,Model,ModelDriver

Struts2中Action接收引數的方法主要有以下三種:
1.使用Action的屬性接收引數:
    a.定義:在Action類中定義屬性,建立get和set方法;
    b.接收:通過屬性接收引數,如:userName;
    c.傳送:使用屬性名傳遞引數,如:user1!add?userName=Magci;
2.使用DomainModel接收引數:
    a.定義:定義Model類,在Action中定義Model類的物件(不需要new),建立該物件的get和set方法;
    b.接收:通過物件的屬性接收引數,如:user.getUserName();
    c.傳送:使用物件的屬性傳遞引數,如:user2!add?user.userName=MGC;
3.使用ModelDriven接收引數:
    a.定義:Action實現ModelDriven泛型介面,定義Model類的物件(必須new),通過getModel方法返回該物件;
    b.接收:通過物件的屬性接收引數,如:user.getUserName();
    c.傳送:直接使用屬性名傳遞引數,如:user2!add?userName=MGC

struts2 Action獲取表單傳值
1.通過屬性驅動式
JSP:

 <form action="sys/login.action" method="post">
  <input type="text" name="username">
  <input type="submit" value="submit">
 </form>


Action:直接通過get、set方法獲取。

public class sysAction extends ActionSupport{
 private String username;

 public String login() throws Exception {
  System.out.println(username);
  return SUCCESS;
 }

 public String getUsername() {
  return username;
 }
 public void setUsername(String username) {
  this.username= username;
 }
}


2.模型驅動方式,必須要實現ModelDriven<T>介面。對於要傳入多個model第二種方式不方便
JSP:

 <form action="sys/login.action" method="post">
  <input type="text" name="username">
  <input type="submit" value="submit">
 </form>


 
Action:必須實現getModel() 方法

public class sysAction extends ActionSupport implements ModelDriven<User>{
 private User user;

 public String login() throws Exception {
  System.out.println(getModel().getUsername());
  return SUCCESS;
 }

 public User getModel() {
  if (null == user) {
   return user = new User();
  }
  return user;
 }
}


 
3.第三種方式可以完全不實現ModelDriven<T>,也可使用多個model物件的屬性。
JSP:

 <form action="sys/login.action" method="post">
  <input type="text" name="user.username">
  <input type="text" name="teacher.level">
  <input type="submit" value="submit">
 </form>


 
Action: 必須提供set方法

public class sysAction extends ActionSupport{
 private User user;
 private Teacher teacher;

 public String login() throws Exception {
  System.out.println(user.getUsername());
  System.out.println(teacher.getLevel());
  return SUCCESS;
 }

 public void setUser(User user) {
  this.user = user;
 }
 public void setTeacher(Teacher teacher) {
  this.teacher = teacher;
 }
}

相關推薦

Struts2Action接收引數方法:屬性ModelModelDriver

Struts2中Action接收引數的方法主要有以下三種: 1.使用Action的屬性接收引數:     a.定義:在Action類中定義屬性,建立get和set方法;     b.接收:通過屬性接收引數,如:userName;     c.傳送:使用屬性名傳遞引數,如:u

【ssh】struts2action接收引數方法

Struts2中Action接收引數的方法主要有以下三種: Struts2中Action接收引數的方法主要有以下三種: 1.使用Action的屬性接收引數:     a.定義:在Action類中定義屬性,建立get和set方法;     b.接收:通過屬性接收引數,如

struts2action接收引數的3種方法

Struts2中Action接收引數的方法主要有以下三種: Struts2中Action接收引數的方法主要有以下三種: 1.使用Action的屬性接收引數:     a.定義:在Action類中定

struts2action接收引數方法(get_set方法)

1 struts2的action接收引數可以通過set和get方法。首先將屬性新增set和get方法。然後struts2會通過反射(有set和get方法)自動對屬性進行例項化。達到java中的new一個物件的目的。 2 有兩種情況下,struts2會自動反射進行例項化。第一

關於struts2action獲取引數的三種方法

    public String add() throws Exception {         // ------------------------------方法一:通過設定get與set方法來獲取引數         System.out.println(thi

Struts2action接收中文參數為亂碼解決方法

tin rate 過濾 apache nrv win @override name dci 老實說,中文亂碼問題是每個程序員會經常遇到的問題,而且也是一個很頭疼的問題。網上很多關於解決中文亂碼的帖子,看幾個之後你會發現大都是一樣的。但是我們照著做,卻還是無法解決亂碼問題。我

Action接收引數的3種方式(屬性域模型模型驅動struts2.1.8)

常用第一種跟第二種 1.Action屬性傳引數: 建議:屬性應該與引數名相同。 在一個繼承ActionSupport類中新增接收引數的屬性,並生成其get() set()方法,在請求中附帶引數和對應的值,在struts2幫我們new這個類的時候,會自動呼叫get,set方法

struts2 action獲取jsp頁面的引數方法

例項:現在jsp頁面傳遞一個名為username的引數到action中 一、通過get set方法獲取 在對應的action類中定義同名變數,並生成set get方法,那麼引數將會自動獲取值 String username;  public String getUsern

關於struts2 action 屬性沒有 set 方法 依然會注入值的問題(解決)

以前經常看到網上和書上說,struts2 action中的屬性中要寫相對應的setXXx,getXXx方法才能接收到網頁中傳來的引數! 無意中發現,屬性沒有寫set get 方法,依然會注入值和取到值. 甚是不解,求助於網上依然沒有得到解決! 花了點時間看了下原始碼! 發現

Struts2action接收請求引數

1. 採用基本型別接受請求引數(get/post) action: public class GetparamAction extends ActionSupport {private int age;private String name;public String ge

Struts2 後臺action接收 jsp頁面checkbox的值

如前端頁面jsp中的標籤為: <form action="myurl"> <input type="checkbox" name="User.name" value="zhangsan">張三 <input type="checkbo

Struts2 學習筆記 —— 10 —— Action接收引數時的中文亂碼問題

在Struts接收引數時,如果輸入中文,那麼可能就會出現亂碼問題 首先寫一個index.jsp <%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding=

struts2Action資料繫結幾種方法

struts2中的Action接收表單傳遞過來的引數有3種方法: 1>  在Action類中定義表單屬性 如,登陸表單login.jsp:  <form action="login" method="post" name="form">  Us

Struts2Action屬性的值的賦值時機

在struts2中Action的屬性用來封裝請求引數,可以是普通屬性也可以是物件模型,不管何種方式,問題是:屬性的值是怎麼賦值的?考察方式可以在Action中新增一個簡單屬性,生成getter setter方法,在setter方法中新增斷點可以跟蹤。Action

Struts2Action訪問Servlet API的三種方法

Struts2的Action並未直接與任何Servlet API耦合,這是Struts2的一個改良之處,因為Action類不再與Servlet API耦合,從而能更輕鬆的測試該Action。但對於Web應用的控制器而言,不訪問Servlet API幾乎是不可能的,例如跟蹤HT

關於struts2action如何接收前端多個name相同input標籤

關於struts2中action如何接收前端多個name相同input標籤的值 例如我在web前端寫有如下程式碼: <form action="save"> <input type = "text" name = "age"/>

自己定義struts2action類型轉換器

ansi work row 接受 4.0 open 技術 oos lang DateAction.java中代碼例如以下: package com.itheima.action; import java.util.Date; public class Da

ajax前臺與struts2action交互詳見

gin def print ces 返回 collect jdk char int 第一種方法:   利用Servlet API,用response的.getWriter()方法獲得PrintWriter Action代碼: public Object ajax(){  

5.struts2Action獲取ServletAPI的三種方式

靜態方法 ttr intercept println action 需求 對象實例 ext.get ctype **Servlet的API的訪問(開發中偶爾會使用到)** 1.在Action類中也可以獲取到Servlet一些常用的API,有如下三種方式獲取 *

MyBatisforeach傳入引數為Poji裝飾類list、陣列的不同寫法

foreach 屬性介紹 foreach 用於迭代傳入過來的引數。 它的屬性介紹分別是 collection:表示傳入過來的引數的資料型別。該引數為必選。要做 foreach 的物件,作為入參時,List 物件預設用 list 代替作為鍵,陣列物件有 array 代替作為鍵,Map 物