在juqery的ajax和struts2整合開發時,物件資料的從頁面到Action的傳遞問題
1.首先是最基本的通過表單的提交傳值:在struct2 開發時,頁面上表單的中輸入框的名字,對應與表單要提交的action中的屬性名字,當表單提交後,為了更好的說明問題,在此,我將struts中的一個action映射覆制過來,<action name="message" class="com.hwadee.action.EchoAction" method="echo"> <result name="success">/view.jsp</result> </action>,stucts2自動呼叫action對映的類,然後呼叫類預設的構造方法,新建一個該類物件,然後呼叫物件的echo()方法(入夥上面的method=“echo” 沒寫,則物件預設呼叫物件的excute()方法。)。此時該物件的屬性中的值就為頁面表單提交過來的值對應一樣的了。
2.然後是通過jquery ajax傳值到action中:
<form id="myForm">
名稱:<input type="text" id="username" name="username"/><br/>
密碼:<input type="password" id="password" name="password"/><br/>
<input id="Button1" type="button" class="btn" value="登入"/>
<input id="Button2" type="reset" class="btn" value="取消"/>
</form>
這是表單的程式碼。
<script type="text/javascript">
$(function()
{
$("#Button1").click(function(){
var mName=encodeURI($("#username").val());
var mPass=encodeURI($("#password").val());
$.ajax(
{
url:"loginUser.action",
dataType:"html",
data
username:mName,//前面的username必須跟action中的私有屬性username一致。
password:mPass,//前面的password必須跟action中私有屬性password一致。
}
success:function(strValue)//strValue是action返回的資料,是文字格式的。
{
alert(strValue);
if(strValue=="yes"){
$("#divTip").html("操作提示,登入成功!");
}else
{
$("#divTip").html("使用者名稱或密碼錯誤!");
}
}
})
})
})
以上的js程式碼。
package struts2.action;
import org.apache.struts2.ServletActionContext;
import com.hwadee.entity.UserInfo;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction 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() throws Exception {
String message="";
if("wll".equals(username)&& "123".equals(password))
{
message="yes";
}else{
message="no";
}
//向客戶端傳遞資料
ServletActionContext.getResponse().getWriter().print(message);
return null;
}
}
以上是action中的程式碼。
此時當點選button1按鈕時,表單裡的資料,就會通過jquery ajax 非同步傳送到action中。然後呼叫excute()方法,返回一個message。然後頁面判斷message是yes還是no。並給出對應的相應。
3.以上只是傳遞一個屬性,該屬性是String型別的。但是,strut2 中,一般用實體類物件來暫時儲存資料,也是用實體類物件來當引數來傳遞資料的。所以在action中就會有很多屬性 是實體類的物件。此時,我們用上面方法2的措施是行不通的。就需要下面的方式。
程式碼基本差不多。
實體類UserInfo
package com.hwadee.entity;
public class UserInfo {
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 toString(){
return username+" "+password;
}
}
程式碼很簡單,不用解釋。
以下是action類
package struts2.action;
import org.apache.struts2.ServletActionContext;
import com.hwadee.entity.UserInfo;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
private UserInfo userinfo;//實體物件。
public UserInfo getUserinfo() {
return userinfo;
}
public void setUserinfo(UserInfo userinfo) {
this.userinfo = userinfo;
}
public String execute() throws Exception {
String message="";
System.out.print(userinfo);
if("wll".equals(userinfo.getUsername())&& "123".equals(userinfo.getPassword()))
{
message="yes";
}else{
message="no";
}
//向客戶端傳遞資料
ServletActionContext.getResponse().getWriter().print(message);
return null;
}
}
以下是html程式碼:
<form id="myForm">
名稱:<input type="text" id="userinfo.username" name="userinfo.username"/><br/> //表單文字框名字對應action實體物件的屬性名字。
密碼:<input type="password" id="userinfo.password" name="userinfo.password"/><br/>
<input id="Button1" type="button" class="btn" value="登入"/>
<input id="Button2" type="reset" class="btn" value="取消"/>
</form>
以下死js程式碼:
<script type="text/javascript">
$(function()
{
$("#Button1").click(function(){
// var mName=encodeURI($("#userinfo.username").val());
// var mPass=encodeURI($("#userinfo.password").val());
$.ajax(
{
url:"loginUser.action",
dataType:"html",
data:$("#myForm").serialize(),//序列化,將表單中的所有資料傳送到伺服器
success:function(strValue)
{
alert(strValue);
if(strValue=="yes"){
$("#divTip").html("操作提示,登入成功!");
}else
{
$("#divTip").html("使用者名稱或密碼錯誤!");
}
}
})
})
})
</script>
此時action中的userinfo物件的username和password屬性就和頁面文字框中的對應的userinfo.username和userinfo.password的值一樣了。
附:struts2.xml
<package name="struts2.action" extends="struts-default">
<action name="loginUser" class="struts2.action.LoginAction">
</action>
相關推薦
在juqery的ajax和struts2整合開發時,物件資料的從頁面到Action的傳遞問題
1.首先是最基本的通過表單的提交傳值:在struct2 開發時,頁面上表單的中輸入框的名字,對應與表單要提交的action中的屬性名字,當表單提交後,為了更好的說明問題,在此,我將struts中的一個action映射覆制過來,<action name="message
Spring整合mybatis時,資料庫配置com.mysql.jdbc.Driver和com.mysql.cj.jdbc.Driver區別
1、#mysql-connector-java 5 用法 spring.datasource.driver-calss-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnico
微信公眾號開發時,前端向後端傳送請求獲取signature和openID時出現跨域錯誤的解決辦法。
微信公眾平臺開發用了前端和後端兩個人,前期開發階段前端就很容易遇到跨域問題,今天在前端向後端傳送請求獲取signature,但是前段老是報錯跨域,接受後端的返回資料失敗怎麼辦呢? 其實很簡單,後端最後返回簽名的程式碼本來是這樣的: System.out.println("
Ionic開發時,預設樣式android和ios的一些不同
ionic預設樣式android和ios的一些不同 ionicframework中android和ios在預設樣式上有一些不同的地方,官方文件中都有說明,但是經常會想不起。 1.tab位置,$ionicConfigProvider, tabs.position(val
Zepto和Jquery的區別,以及在做移動端開發時,我們為什麼選擇使用zepto
【今晚實在不想寫別的,所以決定把近兩天的收穫整理整理,那我們就簡單的來談談Zepto.js和Jquery的區別,以及在做移動端開發時,我們為什麼選擇使用zepto.js】 一、先來看看我們熟悉的jQuery的定義: jQuery它是一個JavaScript函式庫,執行快
在使用DelphiXE3和SQLite3進行程式開發時,解決最後一個字元亂碼的問題
在使用DelphiXE3和SQLite3進行程式開發時,如果使用原版的SQLiteTable3,當使用UTF8Decode函式之後,可能依然存在亂碼問題,一個表現就是,最後一個漢字顯示為框,後面跟一個問號,其他的漢字解碼正常。後來跟蹤了一下SQLiteTable3的原始碼,從
SSH中spring和struts2整合遇到的問題,Action class not found
我們在對sturts.xml配置檔案中的action進行配置時,action指向的class往往是spring配置檔案applicationContext.xml中的been名,這時候出現了action class not found的問題。檢查action定義
【轉】Spark Streaming和Kafka整合開發指南
thread ada 關系 方法 拷貝 理解 1.2 reduce arr 基於Receivers的方法 這個方法使用了Receivers來接收數據。Receivers的實現使用到Kafka高層次的消費者API。對於所有的Receivers,接收到的數據將會保存在Spark
Spring Boot + JPA(hibernate 5) 開發時,數據庫表名大小寫問題
hibernate mysql spring boot 大小寫 這幾天在用spring boot開發項目, 在開發的過程中遇到一個問題hibernate在執行sql時,總會提示表不存在。尋找之後發現, 建表時,表統一采用了大寫。hibernate會把大寫統一轉換成小寫。且 mysql在 lin
JAX-RS 和 和 Spring 整合開發
進行 div 位置 ans 發包 http out app startup JAX-RS 和 和 Spring 整合開發 1、建立maven項目 2、導入maven坐標 <dependencies> <!-- cxf 進行rs開發
再整合ssh時,關於Spring IOC注入問題
No matching editors or conversion strategy found IOC問題: EmpService bean 實現了 Iemp介面,就不能直接作為引數傳入Action裡面; 要將Iemp介面作為物件引數傳入Action,然後在Action引用介面物件裡面的方法。 Spri
android開發時,xml檔案中總是提示某一個錯誤,修改後仍然提示。
哎,剛開始學android開發,開發環境好不容易搭建好,自己寫程式碼的時候難免犯錯,特別是xml編寫時如果出現了程式碼錯誤,錯誤提示會一直存在,即使修改了也存在,關掉專案重新開啟也存在,關掉Eclipse 重新啟動還存在。。。。糾結了 有沒有
使用spring整合mybatis時,通過spring載入的mapper操作怎麼回滾
1 錯誤程式碼: try{ ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
Spring Boot 整合Mybatis時,mapper一直無法注入
今天在使用spring boot整合mybatis時一直無法注入mapper,不管怎麼配置註解掃描包等,都不行,移動了Application這個類也不行。後來發現了應該不是Spring Boot掃描包的問題,因為我不管怎麼配置,改程式碼除錯都會報那個錯,於是去pom.xml檔
關於Keil uVision V4.73開發時,如何將C語言的全域性變數高亮顯示
當前在公司開發一個微控制器程式,原程式是其他同事寫的,我只是負責維護和後期開發。所以需要先看懂別人的程式碼,工程裡面聲明瞭很多全域性變數,懂C語言程式碼的都知道,全域性變數將多個函式模組串聯起來,如果不顯式標註(參考匈牙利命名法,變數名首字元為“g”),看起來
Python和matlab混編時,遇到問題:ImportError: No module named matlab.engine"的解決方法
前言:在做模型訓練的時候,import matlab.engine時,會出現bug:“ImportError: No module named matlab.engine”。針對這個問題,我將解決方法總結如下,便於學習交流~ 注意事項:目前瞭解到,matlab支援的版本為2
NX二次開發-UFUN和NXOpen結合開發中Tag_t物件與TaggedObject物件轉換方法
本文通過舉四個例子來告訴大家在NX二次開發過程中會經常用到UFUN和NXOpen結合去開發,在UFUN中我們得到的是Tag_t物件,在NXOpen中得到的是TaggedObject物件,這兩個是需要進行轉換的。本文主要知識點為:TaggedObject->
M和S整合的時錯誤Property 'driverClassName' threw exception;和Error creating bean with name 'sqlSes。。。
Mybatis和Spring整合的時. applicationcontext.xml如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframew
在當java有多個jar包和多個檔案時,如何在控制檯編譯執行
編譯 javac -cp .:/root/java/hash2/lib/mysql-connector-java-5.1.35-bin.jar:/root/java/hash2/lib/c3p0-0.9.1.1.jar *.java 執行 java -cp .:
laravel 本地整合開發環境,路由訪問The requested URL /welcome was not found on this server.
問題描述:新增根目錄以外的其他路徑無法訪問,提示: The requested URL /welcome was not found on this server. 經過搜尋找到問題根源,和使用的本地整合開發環境有關,在一下網址找到解決辦法,但具體原理不太清楚。 按照下