婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Struts2和Ajax數據交互示例詳解

Struts2和Ajax數據交互示例詳解

熱門標簽:立陶宛地圖標注 河間市地圖標注app 東平縣地圖標注app 中國地圖標注不明確情況介紹表 地圖標注推銷坑人 怎樣在地圖標注文字 大眾點評400電話怎么申請 上海企業外呼系統價錢 電銷機器人 長春

前言

我們從Web 2.0的隨波逐流,Ajax的大放異彩說起,Struts2框架自己整合了對Ajax的原生支持(struts 2.1.7+,之前的版本可以通過插件實現),框架的整合只是使得JSON的創建變得異常簡單,并且可以簡單的融入到Struts2框架中,當然這只是在我們需要JSON的時候才會顯得流光溢彩。

ajax請求在項目中常常使用,今天就平時掌握的總結一下,關于使用ajax請求到Struts2中的action時,前臺頁面與后臺action之間的數據傳遞交互問題。

這里我主要記錄下自己所掌握的幾種方式。可以根據自己平時項目的需求來進行選擇。

 1.使用stream類型的result

此種類型可以直接讓Struts2中的action向客戶端瀏覽器生成文本響應。

示例:

jsp頁面:

%@ taglib prefix="s" uri="/struts-tags" %>
%@ page contentType="text/html;charset=UTF-8" language="java" %>
html>
head>
 title>ajax提交登錄信息/title>
 %--導入js插件--%>
 script src="${PageContext.request.contextPath}/demo/js/jquery-1.4.4.min.js" type="text/javascript">/script>
/head>
body>
h3>異步登錄/h3>
s:form id="loginForm" method="POST">
 s:textfield name="username"/>
 s:textfield name="psw"/>
 input id="loginBtn" type="button" value="提交">
/s:form>
div id="show" style="display:none;">/div>
/body>
script type="text/javascript">
 $("#loginBtn").click(function(){
 $("#show").hide();
 //發送請求login 以各表單里歌空間作為請求參數
 $.get("login",$("#loginForm").serializeArray(),
  function(data,statusText){

  $("#show").height(80)
   .width(240)
   .css("border","1px solid black")
   .css("border-radius","15px")
   .css("backgroud-color","#efef99")
   .css("color","#ff0000")
   .css("padding","20px")
   .empty();
  $("#show").append("登錄結果:"+data+"br/>");
  $("#show").show(600);

 },"html");//指定服務器響應為html
 });
/script>
/html>

處理邏輯的action:

/**
 * Description:eleven.action
 * Author: Eleven
 * Date: 2018/1/26 18:09
 */
public class LoginAction extends ActionSupport{
 private String username;
 private String psw;
 //輸出結果的二進制流
 private InputStream inputStream;

 public String login() throws Exception{
 if(username.equals("tom") psw.equals("123")){
  inputStream = new ByteArrayInputStream("恭喜您,登錄成功".getBytes("UTF-8"));
 }else{
  inputStream = new ByteArrayInputStream("對不起,登錄失敗".getBytes("UTF-8"));
 }
 return SUCCESS;
 }

 //提供get方法
 public InputStream getInputStream() {

 return inputStream;
 }

 public String getUsername() {
 return username;
 }

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

 public String getPsw() {
 return psw;
 }

 public void setPsw(String psw) {
 this.psw = psw;
 }
}

action中除了接收頁面傳遞的用戶名、密碼外,還有一個InputStream類型的成員變量,并為它提供了對應的get方法。get方法中返回的二進制流將會直接輸出給客戶端瀏覽器。

struts.xml配置:

?xml version="1.0" encoding="UTF-8" ?>
!DOCTYPE struts PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 "http://struts.apache.org/dtds/struts-2.3.dtd">
struts>
 constant name="struts.enable.DynamicMethodInvocation" value="false" />
 constant name="struts.devMode" value="true" />
 package name="default" namespace="/" extends="struts-default">
 action name="login" class="eleven.action.LoginAction" method="login">
  result type="stream">
  !--指定stream流生成響應的數據類型-->
  param name="contentType">text/html/param>
  !--指定action中由哪個方法去輸出InputStream類型的變量-->
  param name="inputName">inputStream/param>
  /result>
 /action>
 /package>
/struts>

在瀏覽器中瀏覽該頁面,并輸入相關信息,然后提交,可以看到后臺action直接將消息數據返回給頁面,而同時頁面也不需要進行刷新,而是直接在局部進行顯示,這是利用了ajax的異步發送請求。注意,此種方式需要在struts.xml文件中要配置類型為stream的流,并設置inputName屬性,并在action中提供InputStream對應的get方法。

運行截圖:

2.使用json類型的result

有個jar包struts2-json-plugin-2.3.16.3.jar,可以為Struts2增加JSON插件,即當action中的result的類型設為json時,也可以在客戶端js中異步調用action,并且action中返回的數據,可以直接被JSON插件序列化成json格式的字符串,并將該字符串返回給客戶端瀏覽器。

示例:

jsp頁面:

%@ taglib prefix="s" uri="/struts-tags" %>
%@ page contentType="text/html;charset=UTF-8" language="java" %>
html>
head>
 title>ajax提交登錄信息/title>
 %--導入js插件--%>
 script src="${PageContext.request.contextPath}/demo/js/jquery-1.4.4.min.js" type="text/javascript">/script>
/head>
body>
h3>異步登錄/h3>
s:form id="loginForm" method="POST">
 s:textfield name="username"/>
 s:textfield name="psw"/>
 input id="loginBtn" type="button" value="提交">
/s:form>
div id="show" style="display:none;">/div>
/body>
script type="text/javascript">
 $("#loginBtn").click(function(){
 $("#show").hide();
 //發送請求login 以各表單里歌空間作為請求參數
 $.get("login",$("#loginForm").serializeArray(),
  function(data,statusText){
  //此時的data中包含username,psw,age
  $("#show").height(80)
   .width(300)
   .css("border","1px solid black")
   .css("border-radius","15px")
   .css("backgroud-color","#efef99")
   .css("color","#ff0000")
   .css("padding","20px")
   .empty();  
  alert(data);
  $("#show").append(data+"br/>");
  $("#show").show(600);
 },"html");
 });
/script>
/html>

action代碼:

public class LoginAction extends ActionSupport{
 private String username;
 private String psw;
 private int age;
 public String login() throws Exception{
  age = 18;
  return SUCCESS;
 }

 public String getUsername() {
  return username;
 }

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

 public String getPsw() {
  return psw;
 }

 public void setPsw(String psw) {
  this.psw = psw;
 }

 public int getAge() {
  return age;
 }

 public void setAge(int age) {
  this.age = age;
 }
}

struts.xml中配置:

?xml version="1.0" encoding="UTF-8" ?>
!DOCTYPE struts PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 "http://struts.apache.org/dtds/struts-2.3.dtd">
struts>
 constant name="struts.enable.DynamicMethodInvocation" value="false" />
 constant name="struts.devMode" value="true" />
 package name="default" namespace="/" extends="struts-default,json-default">
  action name="login" class="eleven.action.LoginAction" method="login">
   result type="json">
    param name="noCache">true/param>
    param name="contentType">text/html/param>
   /result>
  /action>
 /package>
/struts>

在瀏覽器中瀏覽該頁面,并輸入相關信息,然后提交,可以看到后臺action直接將消息數據返回給頁面,而同時頁面也不需要進行刷新,而是直接在局部進行顯示,這是利用了ajax的異步發送請求。注意,此種方式需要在struts.xml文件中要配置package繼承json-default,且配置result類型為json,并在action中提供需要傳遞數據的對應的get方法。當然了前提是添加了struts2-json-plugin-2.3.16.3.jar,不然struts2是不會自動將數據轉為json格式的數據的。

效果截圖:

故我們可以總結一下result類型為json的步驟:

  1.導入jar包:struts2-json-plugin-2.3.7.jar  

  2.配置struts返回的結果集視圖 設置type=json

  3.設置對應action所在的package繼承自json-default

  4.將要返回的數據提供get方法

  5.在struts.xml中設置返回數據的格式

對于第5步設置返回數據的格式,可以根據自己項目的需要,去具體設置,這里只是簡單舉例,并沒有拿復雜的數據,如果是返回一個List集合,那么對于數據的格式可以進行如下設置:

result name="test" type="json">
  !-- 設置數據的來源從某個數據得到 -->
   !-- 過濾數據從gtmList集合中得到,且只獲取集合中對象的name,跟uuid屬性 -->      param name="root">gtmList/param>
  param name="includeProperties">
    \[\d+\]\.name,
    \[\d+\]\.uuid
  /param> 
/result>

上面這種方式外,還有下面這種方式

result name="ajaxGetBySm" type="json">
   !-- 一般使用這種方式 先用來源過濾action默認從整個action中獲取所有的(前提是此action中沒有getAction()方法)
    但是為了方便 一般不寫root:action這個
    然后再用包含設置進行過濾設置
   -->    
   param name="root">action/param>
   param name="includeProperties">
     gtmList\[\d+\]\.name,
     gtmList\[\d+\]\.uuid
   /param>
 /result>

上面兩種方式都是設置數據從gtmList集合中獲取且,只獲取對象的屬性為name與uuid的。這里只做簡單的舉例,具體可自己下去深入研究。

附上json類型的Result允許指定的常用參數:

另外,除了以上兩種是struts2支持的ajax外,其實如果單純的只是可以讓服務器端可以跟客戶端瀏覽器進行數據交互,可以使用response.getWrite()這種方式。

PrintWriter printWriter =response.getWriter();
printWriter.print("success");

選擇哪種方式?

對于我,如果只是對增刪改功能是否成功的一個flag判斷的數據,則可優先選擇response.getWriter().print("xxx")與設置result類型為stream的方式,但是如果是需要返回大量對象數據,在頁面接收然后進行數據展示,例如頁面通過ajax請求,需要后臺action返回一個list集合,則就要選擇配置result類型為json的方式了。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • ajax+json+Struts2實現list傳遞實例講解
  • struts2+jquery實現ajax登陸實例詳解
  • 通過Ajax兩種方式講解Struts2接收數組表單的方法
  • ajax struts2 下拉框賦值(適合所有)
  • ajax交互Struts2的action(客戶端/服務器端)
  • 使用struts2+Ajax+jquery驗證用戶名是否已被注冊
  • Ajax+Struts2實現驗證碼驗證功能實例代碼

標簽:內江 四川 銅川 遼寧 營口 益陽 玉樹 本溪

巨人網絡通訊聲明:本文標題《Struts2和Ajax數據交互示例詳解》,本文關鍵詞  Struts2,和,Ajax,數據,交互,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Struts2和Ajax數據交互示例詳解》相關的同類信息!
  • 本頁收集關于Struts2和Ajax數據交互示例詳解的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产精品久久久久久福利一牛影视 | 日韩免费观看高清完整版 | 免费成人你懂的| 夜夜嗨av一区二区三区| 亚洲欧洲在线观看av| 久久久不卡影院| 国产拍欧美日韩视频二区| 久久久久九九视频| 国产欧美日韩麻豆91| 中文字幕欧美国产| 国产精品短视频| 亚洲精品v日韩精品| 一区二区三区蜜桃网| 亚洲综合成人在线| 亚洲第一在线综合网站| 天堂va蜜桃一区二区三区漫画版| 午夜欧美2019年伦理| 日韩精品欧美精品| 激情伊人五月天久久综合| 国产一区二区三区最好精华液| 国产乱码字幕精品高清av| 成人黄色片在线观看| 欧美亚洲高清一区二区三区不卡| 欧美亚洲自拍偷拍| 欧美mv和日韩mv的网站| 中文字幕精品一区二区精品绿巨人 | 亚洲午夜精品在线| 日本伊人色综合网| 国产成人av电影在线| 色综合久久久久网| 欧美一区二区三区免费在线看 | 日韩avvvv在线播放| 国产乱码一区二区三区| 99精品在线免费| 欧美人伦禁忌dvd放荡欲情| 精品成a人在线观看| 亚洲欧美另类综合偷拍| 日产国产欧美视频一区精品 | 激情综合亚洲精品| 99九九99九九九视频精品| 在线综合视频播放| 最新高清无码专区| 日本91福利区| 色偷偷成人一区二区三区91| 精品国产三级电影在线观看| 亚洲在线中文字幕| 东方aⅴ免费观看久久av| 欧美久久免费观看| 亚洲欧美激情插 | 国产精品网曝门| 午夜成人在线视频| 99精品视频一区二区| 欧美性猛交xxxx黑人交 | www.成人网.com| 欧美大度的电影原声| 亚洲制服欧美中文字幕中文字幕| 国产福利一区在线| 精品国产精品网麻豆系列| 亚洲一区中文在线| 成人av网在线| 国产女人18水真多18精品一级做 | 91成人看片片| 欧美国产日本韩| 韩国成人在线视频| 日韩免费性生活视频播放| 肉色丝袜一区二区| 欧美日韩亚洲综合一区二区三区| 中文字幕在线一区二区三区| 国产美女精品在线| 久久亚洲精品小早川怜子| 久久精品国产精品亚洲红杏| 91精品综合久久久久久| 亚洲国产综合视频在线观看| 91在线视频18| 亚洲乱码国产乱码精品精可以看| 成人av在线播放网站| 国产精品丝袜一区| 成人伦理片在线| 国产精品看片你懂得| 成人免费福利片| 亚洲欧美日韩国产手机在线 | 欧美老人xxxx18| 日韩av一区二区三区四区| 6080yy午夜一二三区久久| 亚洲综合在线免费观看| 欧美色图一区二区三区| 性欧美大战久久久久久久久| 欧美三级三级三级爽爽爽| 日韩福利电影在线| 精品国产露脸精彩对白| 成人禁用看黄a在线| 国产精品毛片大码女人| 色综合久久中文综合久久牛| 亚洲精品国产成人久久av盗摄| 欧美日韩一区二区三区在线 | 中文字幕一区三区| 99re在线精品| 爽好久久久欧美精品| 日韩欧美中文一区二区| 国产成人av一区| 亚洲伦理在线精品| 欧美一卡二卡三卡| 高清成人在线观看| 亚洲第一久久影院| 久久久久久99久久久精品网站| 色婷婷综合五月| 久久精品99久久久| 亚洲视频中文字幕| 日韩一区二区在线免费观看| 高清不卡一二三区| 三级欧美在线一区| 国产精品国产三级国产普通话99| 在线视频亚洲一区| 国产精品综合二区| 日韩在线一二三区| 亚洲欧美日韩系列| 精品成人在线观看| 欧美三级午夜理伦三级中视频| 国产suv一区二区三区88区| 亚洲一区二区三区视频在线| 久久蜜桃av一区精品变态类天堂 | 欧美日本乱大交xxxxx| 国产精品亚洲专一区二区三区 | 国产一区三区三区| 五月天激情综合网| 中文字幕日韩精品一区| 欧美va天堂va视频va在线| 在线亚洲精品福利网址导航| 国产成人av一区二区三区在线| 91在线观看下载| 日韩专区欧美专区| 亚洲影视资源网| 国产日韩一级二级三级| 欧美午夜片在线看| 一本一本大道香蕉久在线精品| 国产精品18久久久久久久久| 久久超碰97中文字幕| 天天操天天色综合| 亚洲成在线观看| 亚洲专区一二三| 亚洲丝袜自拍清纯另类| 国产精品久久久爽爽爽麻豆色哟哟 | 五月天欧美精品| 亚洲一区二区视频在线观看| 亚洲视频一区在线| 亚洲欧洲另类国产综合| 国产清纯白嫩初高生在线观看91 | 午夜欧美在线一二页| 亚洲综合在线视频| 依依成人精品视频| 亚洲嫩草精品久久| 亚洲乱码国产乱码精品精小说| 亚洲欧洲无码一区二区三区| 国产精品久久久久7777按摩| 欧美高清在线一区二区| 国产精品私房写真福利视频| 国产欧美精品区一区二区三区| 欧美经典一区二区| 综合在线观看色| 亚洲午夜免费电影| 青青草原综合久久大伊人精品| 天堂va蜜桃一区二区三区| 日本美女视频一区二区| 精品一区二区三区在线观看| 激情深爱一区二区| 成人国产一区二区三区精品| 91蜜桃网址入口| 欧美久久久久免费| 精品伦理精品一区| 国产精品国产三级国产aⅴ入口| 亚洲精品视频免费观看| 肉丝袜脚交视频一区二区| 久久精品国产澳门| 97aⅴ精品视频一二三区| 欧美专区在线观看一区| 欧美电视剧免费观看| 国产精品国产馆在线真实露脸 | 国产精品99久久久久| 91麻豆swag| 日韩精品中文字幕在线一区| 欧美激情一区二区三区在线| 亚洲猫色日本管| 看电视剧不卡顿的网站| 成人黄色国产精品网站大全在线免费观看 | 欧美日韩二区三区| 欧美成人乱码一区二区三区| 国产精品久久99| 青青草一区二区三区| 成人精品一区二区三区四区| 欧美在线不卡一区| 国产午夜精品一区二区| 亚洲一级二级在线| 国产伦精一区二区三区| 欧美日韩在线一区二区| 日本v片在线高清不卡在线观看| 粉嫩av一区二区三区在线播放| 欧美午夜片在线观看| 中文字幕一区二区三区不卡| 视频在线观看国产精品| 91美女蜜桃在线|