婷婷综合国产,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
    欧美日韩国产高清一区二区 | 亚洲午夜久久久久| 精品一区二区免费| 91.xcao| 免费久久99精品国产| 在线成人小视频| 裸体在线国模精品偷拍| 久久网站最新地址| 国产成人在线视频网站| 国产精品成人一区二区艾草| 一本色道综合亚洲| 三级欧美韩日大片在线看| 日韩视频一区二区在线观看| 麻豆freexxxx性91精品| 国产无人区一区二区三区| 99精品国产视频| 亚洲乱码国产乱码精品精小说 | 岛国av在线一区| 亚洲欧洲成人av每日更新| 精品视频色一区| 国产精品自在在线| 亚洲影视在线播放| 欧美白人最猛性xxxxx69交| 92国产精品观看| 免费亚洲电影在线| 日本高清免费不卡视频| 一区二区久久久| 精品99999| 欧美日韩在线三区| 国产成人一区在线| 偷窥少妇高潮呻吟av久久免费| 欧美大肚乱孕交hd孕妇| 色婷婷综合视频在线观看| 蜜桃视频免费观看一区| 亚洲欧美在线aaa| 欧美一区二区在线播放| 91片在线免费观看| 国产寡妇亲子伦一区二区| 亚洲国产视频网站| 成人免费小视频| 欧美电影免费提供在线观看| 91免费在线视频观看| 国产91丝袜在线播放| 久久精品国产色蜜蜜麻豆| 亚洲影院免费观看| 亚洲另类春色校园小说| 国产精品女人毛片| 精品国产乱码久久久久久1区2区| 欧美视频在线不卡| 色狠狠一区二区| 97久久超碰精品国产| 国产成人三级在线观看| 精品一区二区影视| 另类的小说在线视频另类成人小视频在线| 亚洲日本乱码在线观看| 久久综合色一综合色88| 欧美一级搡bbbb搡bbbb| 欧美精品久久天天躁| 欧美人与性动xxxx| 欧美丝袜丝nylons| 欧美军同video69gay| 欧美美女直播网站| 欧美年轻男男videosbes| 欧美性猛交xxxx黑人交| 91成人免费在线| 在线亚洲一区观看| 91激情在线视频| 99在线热播精品免费| 99精品黄色片免费大全| 一本久久综合亚洲鲁鲁五月天| av午夜一区麻豆| 色婷婷国产精品久久包臀| 色哟哟精品一区| 欧美日韩国产精品自在自线| 欧美疯狂性受xxxxx喷水图片| 在线不卡免费av| 日韩午夜激情免费电影| 久久精品网站免费观看| 亚洲欧洲国产日本综合| 图片区日韩欧美亚洲| 韩国视频一区二区| 99久久综合狠狠综合久久| 日本大香伊一区二区三区| 欧美色成人综合| 精品捆绑美女sm三区| 1区2区3区国产精品| 午夜久久久久久久久久一区二区| 麻豆精品视频在线观看视频| 日韩欧美视频在线| 国产伦精一区二区三区| 99久久精品国产麻豆演员表| 欧美日韩aaa| 国产欧美视频一区二区| 亚洲一区免费在线观看| 极品瑜伽女神91| 99在线热播精品免费| 欧美美女激情18p| 国产欧美日韩久久| 亚洲成av人片观看| 国产精品一区久久久久| 欧美影视一区在线| 国产亚洲欧美日韩在线一区| 亚洲国产精品一区二区久久 | 国内精品伊人久久久久av一坑| 国产精品一区在线观看乱码| 在线免费一区三区| 久久久国产精华| 婷婷一区二区三区| 99久久婷婷国产综合精品| 91精品国产手机| 一区二区三区在线不卡| 激情成人午夜视频| 91精品国产综合久久精品 | 欧美国产日本韩| 美女视频黄免费的久久 | 色综合久久六月婷婷中文字幕| 欧美成人猛片aaaaaaa| 亚洲精品国久久99热| 国产精品亚洲成人| 精品国产伦一区二区三区观看体验| 亚洲色图在线看| 成人午夜免费电影| 久久免费视频色| 免费高清不卡av| 777奇米成人网| 午夜久久久久久久久久一区二区| 91免费视频网址| 自拍偷自拍亚洲精品播放| 经典三级一区二区| 欧美电影免费观看高清完整版在 | 丁香一区二区三区| 26uuu欧美| 久久国产人妖系列| 日韩欧美一级片| 日韩黄色免费电影| 欧美精品日韩一本| 日本vs亚洲vs韩国一区三区二区| 欧美最新大片在线看| 天天做天天摸天天爽国产一区| 欧美色图第一页| 天天色综合成人网| 日韩精品一区二区三区视频| 国产在线精品一区在线观看麻豆| 欧美一区二区国产| 婷婷丁香久久五月婷婷| 日韩情涩欧美日韩视频| 国精产品一区一区三区mba视频| 久久色在线观看| 成人av免费在线播放| 亚洲精品日韩综合观看成人91| 国产aⅴ精品一区二区三区色成熟| 久久精品一区四区| 成人免费观看av| 樱花影视一区二区| 欧美精品久久天天躁| 久久av资源网| 一区在线观看视频| 91麻豆精品国产91久久久 | 欧美三级电影一区| 久久国产精品露脸对白| 国产免费成人在线视频| 成人v精品蜜桃久久一区| 亚洲自拍偷拍九九九| 精品蜜桃在线看| 91丝袜国产在线播放| 日本在线观看不卡视频| 国产网站一区二区| 在线观看视频91| 精品女同一区二区| jizzjizzjizz欧美| 亚洲成在线观看| 国产亚洲婷婷免费| 欧美图区在线视频| 国产精品一品视频| 亚洲一区二区精品久久av| 久久蜜桃av一区二区天堂| 欧美综合天天夜夜久久| 激情综合色播激情啊| 亚洲视频资源在线| 久久久综合九色合综国产精品| 91国在线观看| 国产精品影视天天线| 亚洲1区2区3区4区| 综合婷婷亚洲小说| 久久精品亚洲精品国产欧美kt∨ | 日本大胆欧美人术艺术动态| 亚洲国产成人一区二区三区| 欧美日韩精品福利| 99视频精品在线| 国产麻豆视频一区二区| 日本vs亚洲vs韩国一区三区| 亚洲男帅同性gay1069| www国产成人| 欧美精品丝袜久久久中文字幕| 99视频一区二区| hitomi一区二区三区精品| 国产高清精品久久久久| 狠狠色丁香婷婷综合| 强制捆绑调教一区二区| 亚洲成av人**亚洲成av**|