struts2中的參數傳遞的詳細介紹
這個問題其實一直很困惑我的,在寫平常的jsp程式時,傳遞參數很容易,透過表單,request,連結等都可以傳遞,但是到了struts2中,在寫的各個地方,都看不到任何的request或是response,不知道該怎麼傳遞參數了,到了今天學習了struts2中的參數傳遞這一節,終於解開了疑惑,但是還不是很清楚,有待以後探索。
在這裡說一下,struts2中,Action之間如何傳遞參數。 Action間的參數傳遞是在struts.xml檔中進行設定的,在result元素中,用param標籤指定傳遞參數的名字和值,但這個參數名,不是隨便寫的,要和將會傳遞給的Action中的屬性名相對應。下面舉例來說明一下。
範例:有一個Login.jsp頁面,有使用者名稱和密碼兩個元素,要將資料提交到Action1中,Action1再要求轉送或重定向到Action2中,在Action1請求轉送或重定向到Action2的過程中,要將使用者名稱和密碼兩個參數,外加一個自訂的不變參數,傳遞到Action2中。 Action2接收到參數,將參數顯示到一個結果頁面:result.jsp
程式碼:
Login.jsp: <form action="/struts2/test/action1" method="post"> 姓名:<input type="text" name="username"/><br/> 密码:<input type="password" name="password"/><br/> <input type="submit" value="提交"/> <input type="hidden" name="type" value="something"/> </form>
struts.xml: <action name="action1" class="com.suo.actions.Action1"> <result name="success" type="redictAction"><!--type指定是请求转发还是重定向--> <param name="actionName">action2</param><!--在这里指定要请求转发或是重定向到的Action--> <param name="username">${username}</param> <param name="password">${password}</param><!--action1中的属性值--> <param name="myparam">piao</param><!-- 自定义的不变参数 --> <!--在这里定义的参数,在传到的Action中,都要有相应的set/get方法,才能够得到该参数 , 并且在传递到的Action中的属性名,要和参数的name保持一致--> </result> </action> <action name="action2" class="com.suo.actions.Action2"> <span> </span><result name="success">/WEB-INF/result/action.jsp</result> </action>
Action1.java: package com.suo.actions; import com.opensymphony.xwork2.ActionSupport; public class Action1 extends ActionSupport { private String username; private String password; 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; } public String execute() { System.out.println(type); return SUCCESS; } }
Action2.java: package com.suo.actions; import com.opensymphony.xwork2.ActionSupport; public class Action2 extends ActionSupport { private String username; private String password; private String myparam; 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; } public String getMyparam() { return myparam; } public void setMyparam(String myparam) { this.myparam = myparam; } public String execute() { System.out.println(username); System.out.println(password); System.out.println(myparam); return SUCCESS; } }
result.jsp: <body> username:<s:property value="username"/><br> password:<s:property value="password"/><br> myparam:<s:property value="myparam"/><br> <!-- 这里可以用标签得到的属性值,必须是在Action中有对应的set/get方法才可以 --> </body>
以上就是struts2中的參數傳遞的詳細介紹的內容,更多相關內容請關注PHP中文網(www.php.cn)!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

一、前言Struts2漏洞是一個經典的漏洞系列,根源在於Struts2引入了OGNL表達式使得框架具有靈活的動態性。隨著整體框架的修補程式完善,現在想挖掘新的Struts2漏洞會比以前困難很多,從實際了解的情況來看,大部分用戶早就修復了歷史的高風險漏洞。目前在做滲透測試時,Struts2漏洞主要也是碰運氣,或是打到內網之後用來攻擊沒修補的系統會比較有效。網路上的分析文章主要從攻擊利用的角度來分析這些Struts2漏洞。作為新華三攻防團隊,我們的部分工作是維護ips產品的規則庫,今天回顧這個系

为了优化Go函数参数传递性能,最佳实践包括:使用值类型避免复制小型值类型;使用指针传递大型值类型(结构体);使用值类型传递切片;使用接口传递多态类型。在实践中,传递大型JSON字符串时,传递data参数指针可以显著提高反序列化性能。

Struts2框架的原理:1、攔截器解析請求路徑;2、找出Action的完整類別名稱;3、建立Action物件;4、執行Action方法;5、返回結果;6、視圖解析。它原理基於攔截器的機制,使得業務邏輯控制器與Servlet API完全脫離開,提高了程式碼的可重複使用性和可維護性。透過使用反射機制,Struts2框架可以靈活地建立和管理Action對象,實現請求與回應的處理。

PHP參數傳遞有兩種方式:傳值呼叫(參數作為值的副本傳遞,函數內修改不影響原變數)和引用傳遞(參數的位址傳遞,函數內修改會影響原變數),在需要修改原變量的情況下使用引用傳遞,如購物車總價計算時需要引用傳遞才能正確計算。

PHP函數可以透過參數傳遞值,分為按值傳遞和按引用傳遞:按值傳遞:函數內部對參數修改不會影響原始值;按引用傳遞:函數內部對參數修改會影響原始值。此外,還可以傳遞數組作為參數,用於計算資料總和等操作。

0x00簡介Struts2是Apache軟體組織推出的一個相當強大的JavaWeb開源框架,本質上相當於一個servlet。 Struts2基於MVC架構,框架結構清晰。通常作為控制器(Controller)來建立模型與視圖的資料交互,用於創建企業級Javaweb應用程序,它利用並延伸了JavaServletAPI,鼓勵開發者採用MVC架構。 Struts2以WebWork優秀的設計思想為核心,吸收了Struts框架的部分優點,提供了一個更整潔的MVC設計模式實現的Web應用程式框架。 0x01漏洞

Vulhub漏洞系列:struts2漏洞S2-0011.漏洞描述:struts2漏洞S2-001是當使用者提交表單資料且驗證失敗時,伺服器使用OGNL表達式解析使用者先前提交的參數值,%{value}並重新填入對應的表單資料。例如,在註冊或登入頁面中。如果提交失敗,則伺服器通常預設會傳回先前提交的資料。由於伺服器用於%{value}對提交的資料執行OGNL表達式解析,因此伺服器可以直接發送有效載荷來執行命令。 2.vulhub漏洞利用:用vulhub復現漏洞可以省去環境的搭建過程,相當方便。 vu

在Go語言中,函數參數的傳遞方式主要有兩種:值傳遞:傳遞變數的副本,不會影響呼叫程式碼中的原始變數。指標傳遞:傳遞變數的位址,允許函數直接修改呼叫程式碼中的原始變數。
