struts2中使用json插件实现ajax交互

时间:2021-11-05 22:14:51

json插件可以简单的实现ajax交互,避免了使用struts2-dojo-plugin.jar包时带来的struts2.x版本冲突问题。并且减少了使用ajax标签时需要的繁琐的配置包括web.xml中对dwr的servlet配置以及weib-inf下的dwr.xml文件的配置和多包的导入问题。最重要的是可以使用json这种数据交互格式可以将action中的状态信息格式化成json数据格式。然后返回到当前页面中,在当前页面中访问json对象中的属性,从而获得action中的所有状态信息。在是json时一定要注意按钮的单击事件触发的是js函数,通过js函数来将form提交到指定的action。此时并没有出现页面的跳转只是仍保留在当前页面。通过ajax内置的回调函数获得action执行数据。当数据从服务器响应完成返回到客户端时,客户端仍保留在当前请求页面。如果将提交按钮设置成submit 而不是普通的button那么在执行完所有的操作后,form会再次执行一次跳转到当前页面的空操作即刷新页面。这样就出现了执行结果在页面上瞬间闪过的bug。一定要避免这样的错误。

jsp页面代码如下:

<body>
   <s:form id="form1" name="testForm" method="post">
    <s:textfield name="field1" label="field1"></s:textfield><br/>
    <s:textfield name="field2" label="field2"></s:textfield><br/>
    <s:textfield name="field3" label="field3"></s:textfield><br/>
    <input type="button" value="submit" onclick="getClick();"/>
   </s:form>
    <s:div id="show">test</s:div>
    <script type="text/javascript" src="<%=basePath %>js/prototype-1.7.js"></script>
    <script type="text/javascript">
     function getClick(){
      var url='jsonAction.action';
      var params=Form.serialize('form1');
      var myAjax=new Ajax.Request(url,{
       method:'post',
       parameters:params,
       onComplete:processResponse,
       asynchronous:true
      
      });
      
     }
     function processResponse(request){
      document.getElementById("show").innerHTML=request.responseText;
     }
    </script>
  </body>

action类代码如下:

public class JsonAction extends ActionSupport {
 private String field1;
 private String field2;
 private String field3;
 private String costumName="custom";
 private Map map=new HashMap();
 private int ints[]={10,20};
 public String getField1() {
  return field1;
 }
 public void setField1(String field1) {
  this.field1 = field1;
 }
 public String getField2() {
  return field2;
 }
 public void setField2(String field2) {
  this.field2 = field2;
 }
 public String getField3() {
  return field3;
 }
 public void setField3(String field3) {
  this.field3 = field3;
 }
 public String getCostumName() {
  return costumName;
 }
 public void setCostumName(String costumName) {
  this.costumName = costumName;
 }
 public Map getMap() {
  return map;
 }
 public void setMap(Map map) {
  this.map = map;
 }
 public int[] getInts() {
  return ints;
 }
 public void setInts(int[] ints) {
  this.ints = ints;
 }
 @Override
 public String execute() throws Exception {
  
  map.put("name", "****");
  return SUCCESS;
 }

}

struts.xml配置文件如下:

<struts>
 <constant name="struts.i18n.encoding" value="UTF-8"></constant>
 <package name="json" extends="json-default" namespace="/">
  <action name="jsonAction" class="com.inspur.action.JsonAction">
   <result name="success" type="json"></result>
  </action>
 </package>

</struts>

注意三点:ajax请求 发送时的数据编码必须是UTF-8

extends继承的不在是struts-default包而是json-default包

type=“json”并且在result标签中间没有跳转的视图资源

web.xml配置文件中注意如下就可以了:

<filter-mapping>
   <filter-name>struts2</filter-name>
   <url-pattern>*.jsp</url-pattern>
  </filter-mapping>

struts2中使用json插件实现ajax交互的更多相关文章

  1. Struts2之—集成Json插件实现Ajax

       上篇博客介绍了Struts2中自己定义结果集实现Ajax,也分析了它的缺点:这样自己定义的结果集,写死了,不能做到client须要什么数据就传什么数据:Struts2之-自己定义结果集实现aja ...

  2. JSON&lpar;五)——同步请求中使用JSON格式字符串进行交互(不太常见的用法)

    在同步请求中使用JSON格式进行数据交互的场景并不多,同步请求是浏览器直接与服务器进行数据交互的大多是用jsp的标签jstl和el表达式对请求中的数据进行数据的渲染.我也是在一次开发中要从其它服务器提 ...

  3. Struts2中的JSON问题——后台返回JSON字符串到前台

    最近做一个项目遇到一个比较棘手的问题,项目后台采用struts2+Hibernate3+Spring3,前台采用ExtJs4.笔者目前仍是一名大二学生吗,后台框架完全是毫无任何基础,从零学,现学现用. ...

  4. struts2中的json

    这里放一个转载的struts2中json的详细应用和范例, http://yshjava.iteye.com/blog/1333104,这是个人在网上看到的很用心也很详细的一份关于struts2中js ...

  5. 在JavaScript中使用json&period;js:Ajax项目之POST请求(异步)

    经常在百度搜索框输入一部分关键词后,弹出候选关键热词.现在我们就用Ajax技术来实现这一功能. 一.下载json.js文件 百度搜一下,最好到json官网下载,安全起见. 并与新建的两个文件部署如图 ...

  6. 在JavaScript中使用json&period;js:Ajax项目之GET请求(同步)

    1.用php编写一个提供数据的响应程序(phpdata.php) <?php $arr=array(1,2,3,4); //将数组编码为JSON格式的数据 $jsonarr=json_encod ...

  7. struts2中各个jar包作用

    Struts2.3.4 所需的Jar包及介绍 Jar包的分类 jar包名称 jar包版本 jar包 文件名 jar包 的作用 jar包内包含的主要包路径及主要类 依赖的自有jar包名称 依赖的第三方j ...

  8. struts2中的jar包

    核心包: (后面数字是版本号,不同struts2版本,数字可能不一样.) struts2-core-2.1.8.1 struts2的核心jar包,不可缺少的 xwork-core-2.1.6 xwor ...

  9. struts2中各个jar包作用 (转)

    Struts2.3.4 所需的Jar包及介绍 Jar包的分类 jar包名称 jar包版本 jar包 文件名 jar包 的作用 jar包内包含的主要包路径及主要类 依赖的自有jar包名称 依赖的第三方j ...

随机推荐

  1. jQuery基础--样式篇(1)

    1.jQuery简介:JQuery是继prototype之后又一个优秀的Javascript库.它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari ...

  2. 【Demo】HTML5 拍照上传

    本文主要讲解 手机浏览器 如何拍照 为什么会有这个需求 最近做一个项目要用到拍照然后上传照片,但是网页拍照一般都是用Flash做的,而我们主要是H5页面,如果在微信里面有权限就可以通过JSSDK调起摄 ...

  3. 如何在XAMPP中设置多个网站

    xampp 是一个非常方便的本地 apache + php + mysql 的调试环境,在本地安装测试 WordPress 等各种博客.论坛程序非常方便.今天我们来给大家介绍一下,如何使用 XAMPP ...

  4. &lbrack;terry笔记&rsqb;Flashback

    flashback 闪回,主要功能有两个:闪回查询(flashback query).闪回恢复(flashback table/database) 开启闪回flashback功能(归档下才可开启数据库 ...

  5. Python内置方法的时间复杂度(转)

    原文:http://www.orangecube.net/python-time-complexity 本文翻译自Python Wiki本文基于GPL v2协议,转载请保留此协议. 本页面涵盖了Pyt ...

  6. JS代码中加上alert才能正常显示效果

    模拟一个生成验证码的效果,发现JS代码中加上alert可以正常刷新,没有alert时图片就会丢失,找到解决方法,但是还不是很明白,先记录下来. 生成验证码的servlet代码如下: package s ...

  7. webgoat——XSS

    Stage 1: Stored XSS(存储XSS攻击 黑别人) 实验内容:主要是用户"Tom"(攻击者)在自己的个人资料中添加了恶意代码(比如最简单的<script> ...

  8. Python之高级特性

    一.切片 L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']取出前三个元素 , 笨方法就是通过下标一个一个获取 [L[0], L[1], L[2]]Pyt ...

  9. VS2012 C&num; 连接MySQL数据库

    原则:不安装 1.下载: https://dev.mysql.com/downloads/connector/net/6.8.html#downloads 2.解压 → 3.添加引用(一个MySql. ...

  10. &lbrack;Codefroces401D&rsqb;Roman and Numbers(状压&plus;数位DP)

    题意:给定一个数,求将该数重新排列后mod m==0的方案数 重新排列就考虑到用到哪些数,以及此时mod m的值 于是dp[i][j]表示状态i中mod m==j的方案数 注意:转移的时候只要找到一种 ...