异步交互,在不用重新提交整个页面的情况下可以实现页面局部信息与服务器的交互。在编写异步交互时需要用到一个架包:dom4j,下载地址为:https://dom4j.github.io/

下面通过例子说明struts异步交互的实现过程.

1、首先看一下文件目录

2、代码实现:

1) 首先创建一个Person类,该类用来映射个人信息

 1 package com.action;
 2
 3 public class Person {
 4
 5     private int id;
 6     private String name;
 7     private int age;
 8     private String address;
 9     public int getId() {
10         return id;
11     }
12     public void setId(int id) {
13         this.id = id;
14     }
15     public String getName() {
16         return name;
17     }
18     public void setName(String name) {
19         this.name = name;
20     }
21     public int getAge() {
22         return age;
23     }
24     public void setAge(int age) {
25         this.age = age;
26     }
27     public String getAddress() {
28         return address;
29     }
30     public void setAddress(String address) {
31         this.address = address;
32     }
33
34 }

2)GetXMLAction类

 1 package com.action;
 2
 3 import java.io.PrintWriter;
 4
 5 import javax.servlet.http.HttpServletResponse;
 6
 7 import org.apache.struts2.ServletActionContext;
 8 import org.dom4j.*;
 9 import org.dom4j.io.OutputFormat;
10 import org.dom4j.io.XMLWriter;
11
12 import com.opensymphony.xwork2.ActionSupport;
13
14 @SuppressWarnings("serial")
15 public class GetXMLAction extends ActionSupport {
16
17     private String name;
18
19     public String getName() {
20         return name;
21     }
22
23     public void setName(String name) {
24         this.name = name;
25     }
26
27     @Override
28     public String execute() throws Exception {
29         //zhangsan
30         Person person = new Person();
31
32         person.setId(1);
33         person.setName("zhangsan");
34         person.setAge(30);
35         person.setAddress("beijing");
36
37         //lisi
38         Person person2 = new Person();
39
40         person2.setId(2);
41         person2.setName("lisi");
42         person2.setAge(50);
43         person2.setAddress("tianjin");
44         //创建一个Document对象
45         Document document = DocumentHelper.createDocument();
46         //创建根元素
47         Element rootElement = document.addElement("persons");
48         //增加注释
49         rootElement.addComment("This is comment");
50         //向根元素中添加子元素
51         Element e = rootElement.addElement("person");
52
53         Element idElement = e.addElement("id");
54         Element nameElement = e.addElement("name");
55         Element ageElement = e.addElement("age");
56         Element addressElement = e.addElement("address");
57
58         if("zhangsan".equals(name)){
59             idElement.setText(person.getId() + "");
60             nameElement.setText(person.getName()+"");
61             ageElement.setText(person.getAge()+"");
62             addressElement.setText(person.getAddress()+"");
63         }else{
64
65             idElement.setText(person2.getId() + "");
66             nameElement.setText(person2.getName()+"");
67             ageElement.setText(person2.getAge()+"");
68             addressElement.setText(person2.getAddress()+"");
69         }
70         //获取HttpServletResponse对象
71         HttpServletResponse response = ServletActionContext.getResponse();
72         //设置文档内容类型
73         response.setContentType("text/xml;charset=GB18030");
74         //设置http响应头禁用浏览器的缓冲
75         response.setHeader("cache-control", "no-cache");
76
77         PrintWriter out = response.getWriter();
78         //格式化xml
79         OutputFormat format = OutputFormat.createPrettyPrint();
80         //指定编码方式编码
81         format.setEncoding("GB18030");
82
83         XMLWriter writer = new XMLWriter(out,format);
84
85         writer.write(document);
86
87         out.flush();
88         out.close();
89         return null;
90     }
91 }

3) getXML.jsp

 1 <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="<%=basePath%>">
11
12     <title>My JSP 'getXML.jsp' starting page</title>
13     <script type="text/javascript" src="scripts/jquery-1.4.4.js"></script>
14     <meta http-equiv="pragma" content="no-cache">
15     <meta http-equiv="cache-control" content="no-cache">
16     <meta http-equiv="expires" content="0">
17     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
18     <meta http-equiv="description" content="This is my page">
19     <!--
20     <link rel="stylesheet" type="text/css" href="styles.css">
21     -->
22
23     <script type="text/javascript">
24
25         function getInfo(){
26
27             $.post("getXMLAction.action",
28             {
29                 name:$("#name").val()
30             },function(returnedData,status)
31             {
32                 var id= $(returnedData).find("id").text();
33                 var name = $(returnedData).find("name").text();
34                 var age = $(returnedData).find("age").text();
35                 var address = $(returnedData).find("address").text();
36
37                 var html = "<table width='60%' border='1' align='center'><tr><th>id</th><th>name</th><th>age</th><th>address</th><tr align='center'><td>"+id+"</td><td>"+name+"</td><td>"+age+"</td><td>"+address+"</td></tr></tr></table>";
38
39                 $("#theBody table:eq(0)").remove();//找到id为theBody的body中的第0个table(即第一个table表)将其的内容删除掉,防止出现累加
40                 $("#theBody").append(html);//将构建的HTML加入到id为theBody的body中
41
42
43             });
44
45         }
46
47     </script>
48   </head>
49
50   <body id="theBody">
51
52     <select id="name">
53
54         <option value="zhangsan">zhangsan</option>
55         <option value="lisi">lisi</option>
56
57     </select>
58
59     <input type="button" value="get information" onclick="getInfo();">
60
61   </body>
62 </html>

4) struts.xml中的配置信息

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 <struts>
 6     <!-- 设置Struts运行模式为开发者模式,如果value为false则关闭开发者模式 -->
 7     <constant name="struts2.devMode" value="true"></constant>
 8
 9     <package name="struts2_ajax" namespace="/" extends="struts-default">
10
11         <action name="getXMLAction" class="com.action.GetXMLAction">
12
13         </action>
14
15
16     </package>
17 </struts>

web.xml总的配置

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
 3   <display-name>struts2_ajax</display-name>
 4   <welcome-file-list>
 5     <welcome-file>index.jsp</welcome-file>
 6   </welcome-file-list>
 7   <filter>
 8       <filter-name>testStruts2</filter-name>
 9       <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
10   </filter>
11   <filter-mapping>
12       <filter-name>testStruts2</filter-name>
13       <url-pattern>/*</url-pattern>
14   </filter-mapping>
15 </web-app>

运行结果:

转载于:https://www.cnblogs.com/lihuibin/p/8044113.html

struts2实现XML异步交互相关推荐

  1. ajax如何做到异步交互,1.ajax简单实现异步交互

    效果:点击获取信息 testAjax.jsp: pageEncoding="UTF-8"%> Insert title here function getName(){ va ...

  2. 使用原生Ajax技术实现异步交互

    实现原理 使用原生原生Ajax技术实现异步交互,就是使用Ajax的原生异步对象XMLHttpRequest,来进行创建对象.绑定事件.初始化数据.发送数据的操作过程. 实现步骤 第一步,利用XMLHt ...

  3. struts2+Jquery+Json异步提交(传递复杂JSON对象)

    ​    最近,在使用Struts2+Jquery实现异步提交传递复杂JSON对象时候,遇到了各种问题,经过各方的不懈努力,最终找到了解决方案,记录下以备忘.     基础知识       JSON建 ...

  4. Ajax异步交互与跨域访问(三)JQuery中的Ajax

    jQuery中的Ajax 一.jQuery提供的六个Ajax操作方法 1.load()方法 $element.load(url,[data],[callback]) 参数: url:异步请求的HTML ...

  5. 网页同步交互和异步交互的区别?

    同步:发一个请求,就要等待服务器的响应 结束,然后才能发第二请求!中间这段时间就是一个字"卡":刷新的刷新的是整个页面. 异步:发一个请求后,无需等待服务器的响应,然后就可以发第二 ...

  6. Java程序员从笨鸟到菜鸟之(七十五)细谈struts2(十四)struts2+ajax实现异步验证...

    由于老师布置作业的需要,在添加管理员的时候,要实现验证添加的管理员的用户名是否在数据库中已经存在,然后再客户端给用户一个提示.我首先想到的就是利用ajax实现异步验证技术,由于利用的ssh框架,所以在 ...

  7. ajax_异步交互-get/post方式

    Ajax的异步交互: 客户端向服务器端发送请求,直到服务器端进行响应,这个过程中,用户可以做任何其他事情(不等). 实现Ajax的异步交互步骤(举例说明): get方式: 1.创建XMLHttpReq ...

  8. ASP.NET2.0中用ICallbackEventHandler实现客户端与服务器端异步交互

    页面代码: <script type="text/javascript">       function ReceiveServerData(rValue)       ...

  9. 阿里妈妈应用系统大规模异步交互治理方案

    阿里妈妈广告应用团队在平台化支撑业务发展的思路下,启动了对应用系统架构.研发模式.组织阵型各个维度的改革和升级,以期通过打造全新的"广告业务平台"来提升应用系统的工程建设能力.沉淀 ...

最新文章

  1. 《R语言实战》读书笔记--第一章 R语言介绍
  2. Docker架构:安装与基本命令
  3. JavaScript URL参数读取
  4. 面试官:如果要存ip地址,用什么数据类型比较好?
  5. NachOS简述和源文件
  6. SDK Manager配置
  7. 如何找到稳定的网站空间
  8. 乌班图服务器系统网卡驱动,Linux_Ubuntu系统无法衔接网络 该怎样安装无线网卡驱动?,ubuntu已经很好的兼容了主流的 - phpStudy...
  9. 【钉钉-场景化能力包】阿里商旅助力费控报销
  10. 怎么彻底卸载cad2017_cad2017没卸载干净怎么办?
  11. vmsysjack-tupian
  12. vue 全局刷新与局部刷新
  13. jQuery播放音乐
  14. 可视化大屏幕的适配方法-vw/vh
  15. Qt处理Excel的一些库
  16. JSON数据格式(键值对)(一)
  17. [x98 air 3g平板]安装任意版本32位win10的方法
  18. 开源数据库 SQLite 发布 3.37.0 版本
  19. Python进行克里金插值可视化
  20. Python学习,枚举类定义和使用

热门文章

  1. mysql 存储过程代码_mysql存储过程语法与实例
  2. python模块time_python模块之time和datetime
  3. 存储过程可重用的代码块_如何使您的代码可重用
  4. paypal如何支付欧元_国际在线支付巨头——PayPal
  5. IIS 301重定向跳转
  6. win11没有hyper-v
  7. mysql 列 随机数_MYSQL中生产随机数或随机字符串
  8. Kaggle 比赛分类与学习资源整理
  9. 【编辑器】VScode+code runner+python3编译
  10. 天气预测频繁2项集_官宣!今冬冷空气偏强 北方或现大范围低温雨雪天气