最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Struts2學習筆記(5)-參數(shù)傳遞方法

 更新時間:2016年06月12日 11:53:57   作者:meaijojo  
本文主要介紹Struts2中參數(shù)傳遞方法,希望能給大家做一個參考。

參數(shù)傳遞即將參數(shù)傳輸?shù)匠绦蚝笈_中,后臺可能做一些處理,然后再將內容存入數(shù)據(jù)庫之類嗒!

參數(shù)傳遞的方法較多,一一說明如下。

1、Action中直接參數(shù)法

有如下的index.jsp文件

復制代碼 代碼如下:
<?xml version="1.0" encoding="GB18030" ?> 
<%@ page language="java" contentType="text/html; charset=GB18030" 
    pageEncoding="GB18030"%> 
 
<%  
String path = request.getContextPath(); 
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
%> 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " <html xmlns=" <head> 
<meta http-equiv="Content-Type" content="text/html; charset=GB18030" /> 
<base href="<%=basePath %>"/> 
<title>Insert title here</title> 
</head> 
<body> 
使用action屬性接收參數(shù)<a href="user/user!add?name=a&age=8">添加用戶</a> 
     
</body> 
</html>

對于其中的<a></a>來說,傳遞兩個參數(shù)至程序,一個是name,一個是age,在struts.xml中的配置如下:

復制代碼 代碼如下:

這時我們的UserAction該如何寫呢?范例如下:

復制代碼 代碼如下:
package com.bjsxt.struts2.user.action; 
 
import com.opensymphony.xwork2.ActionSupport; 
 
public class UserAction extends ActionSupport { 
     
    private String name; 
    private int age; 
     
    public String add() { 
        System.out.println("name=" + name); 
        System.out.println("age=" + age); 
        return SUCCESS; 
    } 
 
    public String getName() { 
        return name; 
    } 
 
    public void setName(String name) { 
        this.name = name; 
    } 
 
    public int getAge() { 
        return age; 
    } 
 
    public void setAge(int age) { 
        this.age = age; 
    } 
     
     
}

很簡單,就是定義了兩個屬性,注:這兩個屬性的set和get方法必須要寫,可以使用eclipse的快速生成方式,非常簡單。這樣上述程序在運行時就會打印出所要的結果

name=a和age=8。

有說明如下:第一,struts2會自動進行參數(shù)傳遞,這個過程無需我們參與;第二,struts傳遞參數(shù)時針對的是set和get方法,而不是name和age屬性,也就是說,假如我們修改其中的name為其他名稱,如username,但是方法仍然是setName和getName的話,對于整個功能的實現(xiàn)來說沒有任何區(qū)別,只是有點別扭而已;第三,也是最重要的一點,就是假如有很多的屬性,這樣的話我們就需要非常多的set和get方法,這是非常不方便的,因此引伸出了下面這種方式。

2、Action添加類對象法

這個時候我們1中的屬性都歸于一個類中,如User

復制代碼 代碼如下:
package com.bjsxt.struts2.user.model; 
 
public class User { 
    private String name; 
    private int age; 
    public String getName() { 
        return name; 
    } 
    public void setName(String name) { 
        this.name = name; 
    } 
    public int getAge() { 
        return age; 
    } 
    public void setAge(int age) { 
        this.age = age; 
    } 
}

這樣在Action類中的寫法就變得簡單了很多

復制代碼 代碼如下:
package com.bjsxt.struts2.user.action; 
 
import com.bjsxt.struts2.user.model.User; 
import com.opensymphony.xwork2.ActionSupport; 
 
public class UserAction extends ActionSupport { 
     
    private User user; 
 
    public String add() { 
        System.out.println("name=" + user.getName()); 
        System.out.println("age=" + user.getAge()); 
        return SUCCESS; 
    } 
 
    public User getUser() { 
        return user; 
    } 
 
    public void setUser(User user) { 
        this.user = user; 
    } 
     
}

注:此時我們不需要自己手動生成一個User對象,這個過程是由Struts2自動完成的。

并且此時的url也需要作下修改,即index中的<a></a>標簽作下修改:

復制代碼 代碼如下:
<?xml version="1.0" encoding="GB18030" ?> 
<%@ page language="java" contentType="text/html; charset=GB18030" 
    pageEncoding="GB18030"%> 
 
<%  
String path = request.getContextPath(); 
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
%> 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " <html xmlns=" <head> 
<meta http-equiv="Content-Type" content="text/html; charset=GB18030" /> 
<base href="<%=basePath %>"/> 
<title>Insert title here</title> 
</head> 
<body>  
使用Domain Model接收參數(shù)<a href="user/user!add?user.name=a&user.age=8">添加用戶</a> 
     
</body> 
</html>

修改成上述18行部分。

上面說明了下Struts2參數(shù)傳遞的兩種方法,其中第二種方法被稱為:DomainModel,域模型。即新建一個類,用于存放屬性。

下面說明另外一種方法,被稱為:ModelDriven,模型驅動。

它與第二種方法非常類似,其他都是一樣的,僅僅就是Action和訪問有區(qū)別,它的Action如下:

復制代碼 代碼如下:
package com.bjsxt.struts2.user.action; 
 
import com.bjsxt.struts2.user.model.User; 
import com.opensymphony.xwork2.ActionSupport; 
import com.opensymphony.xwork2.ModelDriven; 
 
public class UserAction extends ActionSupport implements ModelDriven<User>{ 
     
    private User user = new User(); 
     
    public String add() { 
        System.out.println("name=" + user.getName()); 
        System.out.println("age=" + user.getAge()); 
        return SUCCESS; 
    } 
 
    @Override 
    public User getModel() { 
        return user; 
    } 
     

我們可以從中看到,它實現(xiàn)了ModelDriven接口,并采用了泛型技術。采用這種方式Struts2不會自動的實例化一個對象,因此只能我們手動生成。它覆寫了ModelDriven接口的getModel()方法,它的作用就是返回一個類對象。

它的訪問是和第二種有區(qū)別的(與第一種方法一樣):

復制代碼 代碼如下:
使用ModelDriven接收參數(shù)<a href="user/user!add?name=a&age=8">添加用戶</a>

它并沒有采用user.name的方式,這也是為什么必須要new一個對象的原因。

這種方式的基本思想過程為:首先Action解析url,獲得其中的參數(shù),然后進入Action中,發(fā)現(xiàn)此Action實現(xiàn)了一個ModelDriven接口,此時就調用ModelDriven接口的getModel方法,獲得類的對象,然后調用此類的set和get方法,將參數(shù)傳入。

此種方式體現(xiàn)了Struts2的MVC思想,M----Model,V----View,C----Controller,但是這種方式很少使用,我們使用最多的還是上面的第二種方式。

以上就是Struts2中參數(shù)傳遞方法的全部內容,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Java?9中List.of()的使用示例及注意事項

    Java?9中List.of()的使用示例及注意事項

    Java 9引入了一個新的靜態(tài)工廠方法List.of(),用于創(chuàng)建不可變的列表對象,這篇文章主要介紹了Java?9中List.of()的使用示例及注意事項的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-03-03
  • java實現(xiàn)圖形化界面計算器

    java實現(xiàn)圖形化界面計算器

    這篇文章主要為大家詳細介紹了java實現(xiàn)圖形化界面計算器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Java數(shù)據(jù)結構中七種排序算法實現(xiàn)詳解

    Java數(shù)據(jù)結構中七種排序算法實現(xiàn)詳解

    這篇文章主要介紹了Java數(shù)據(jù)結構中七種排序算法的實現(xiàn)方法,排序算法可分為兩大類,比較類排序和非比較類排序,顧名思義可知它們是通過比較來決定元素間的相對次序,需要詳細了解排序算法的朋友可以參考下
    2024-02-02
  • Java中synchronized關鍵字的使用和原理詳解

    Java中synchronized關鍵字的使用和原理詳解

    這篇文章主要介紹了Java中synchronized關鍵字的使用和原理詳解,JVM 是通過進入、退出 對象監(jiān)視器(Monitor)來實現(xiàn)對方法、同步塊的同步的,而對象監(jiān)視器的本質依賴于底層操作系統(tǒng)的互斥鎖實現(xiàn),需要的朋友可以參考下
    2023-09-09
  • 解決IDEA開發(fā)工具右側沒有Maven工具欄的問題

    解決IDEA開發(fā)工具右側沒有Maven工具欄的問題

    這篇文章主要給大家解決了IDEA開發(fā)工具右側沒有Maven工具欄的問題,文中有詳細的解決步驟,如果有遇到一樣問題的小伙伴,可以參考閱讀本文
    2023-09-09
  • Java實現(xiàn)Linux下雙守護進程

    Java實現(xiàn)Linux下雙守護進程

    這篇文章主要介紹了Java實現(xiàn)Linux下雙守護進程的思路、原理以及具體實現(xiàn)方式,非常的詳細,希望對大家有所幫助
    2014-10-10
  • Java中實現(xiàn)接口限流的方案詳解

    Java中實現(xiàn)接口限流的方案詳解

    常用的接口限流方案就是計數(shù)器限流方案、時間窗口限流方案和令牌桶限流方案等,這些方案的概念大致也知道,但是實際上也沒有實現(xiàn)過,所以本文就來自動動手實踐一下吧
    2023-05-05
  • 理解Java注解及Spring的@Autowired是如何實現(xiàn)的

    理解Java注解及Spring的@Autowired是如何實現(xiàn)的

    今天通過本文帶領大家學習注解的基礎知識,學習Spring的@Autowired是怎么實現(xiàn)的,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-07-07
  • maven加載依賴報錯的原因分析及解決方法

    maven加載依賴報錯的原因分析及解決方法

    通常我們在項目中引入第三方依賴包時,為了避免其版本迭代問題,經常會使用本地的包,這篇文章主要給大家介紹了關于maven加載依賴報錯的原因分析及解決方法的相關資料,需要的朋友可以參考下
    2023-10-10
  • flink?RichFunction之坑及解決

    flink?RichFunction之坑及解決

    這篇文章主要介紹了flink?RichFunction之坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評論

尼玛县| 舞钢市| 许昌县| 开平市| 惠州市| 南华县| 耒阳市| 玉田县| 仁寿县| 法库县| 工布江达县| 酒泉市| 四川省| 榕江县| 黄石市| 长阳| 闻喜县| 托里县| 出国| 日喀则市| 五大连池市| 绥宁县| 安顺市| 类乌齐县| 东台市| 雷波县| 镇远县| 新绛县| 吉林市| 巴林左旗| 治县。| 萨迦县| 锦州市| 广饶县| 喀喇沁旗| 石嘴山市| 灵台县| 兴业县| 新蔡县| 抚宁县| 延津县|