lib中加入包

struts2-json-plugin-2.3.20.jar

json插件有自己的过滤器、返回类型

WebRoot下新建js文件夹

放入json2.js

  1. json2.js是一个著名开源js库,提供了json的序列化和反序列化方法
  2. JSON.stringifyL353:把Json对象转换成字符串
  3. JSON.parse L400:把字符串转成Json对象
  4. http://www.json.org/
  5. JavaScript:
  6. JSON.
  7. json2.js.
  8. clarinet.
  9. Oboe.js.

ajaxUtil.js 自己封装的一个Ajax工具类

  1. // 参考:XMLHttpRequest 对象
  2. // http://www.w3school.com.cn/xml/xml_http.asp
  3. xmlhttp = null;
  4. if (window.XMLHttpRequest) {// code for all new browsers
  5. xmlhttp = new XMLHttpRequest();
  6. } else if (window.ActiveXObject) {// code for IE5 and IE6
  7. xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  8. }
  9. function ajaxRequest(url, param, callBackFunction) {
  10. try {
  11.  
  12. if (xmlhttp != null) {
  13. var sUrl = url + '?date=' + new Date();
  14. var oRequest = new XMLHttpRequest();
  15. oRequest.onreadystatechange = function() {
  16. if (oRequest.readyState == 4) {
  17. callBackFunction(oRequest);
  18. }
  19. };
  20.  
  21. oRequest.open('POST', sUrl);
  22. oRequest.setRequestHeader("Content-Type", "application/json");
  23. oRequest.send(param);
  24. }
  25. } catch (e) {
  26.  
  27. }
  28. }

index.jsp核心代码:

  1. <script type="text/javascript" src="js/ajaxUtil.js"></script>
  2. <script type="text/javascript" src="js/json2.js"></script>
  3. <script type="text/javascript">
  4. function checkuser(o) {
  5.  
  6. var url = "testjson"
  7. var obj = {
  8. "uname" : o.value
  9. }
  10. // 借助json2.js:Json对象→字符串,以便发送
  11. var params = JSON.stringify(obj);
  12. // 借助ajaxUtil.js:发送Ajax请求
  13. ajaxRequest(url, params, ajaxCallBack);
  14.  
  15. }
  16.  
  17. // Ajax回调函数
  18. function ajaxCallBack(oRequest) {
  19. // 借助json2.js:字符串→Json对象,以便解析
  20. var obj1 = JSON.parse(oRequest.responseText);
  21. document.getElementById("msgdiv").innerHTML = obj1.msg1;
  22. }
  23. </script>
  1. <p id="msgdiv"></p>
  2. <s:form action="" name="test" method="post">
  3. <s:textfield name="uname" onblur="checkuser(this)" />
  4. <s:submit></s:submit>
  5. </s:form>

struts.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
  4. "http://struts.apache.org/dtds/struts-2.3.dtd">
  5.  
  6. <struts>
  7. <constant name="struts.enable.DynamicMethodInvocation" value="true" />
  8. <constant name="struts.devMode" value="true" />
  9. <constant name="struts.configuration.xml.reload" value="true" />
  10. <!-- 不再继承struts-default,而是json-default -->
  11. <package name="p1" namespace="/" extends="json-default">
  12. <action name="testjson" class="org.ah.s2.C1">
  13. <!-- 配置json拦截器,在struts2-json-plugin-2.3.20.jar中 -->
  14. <interceptor-ref name="json" />
  15. <result type="json">
  16. <!-- root:固定值,返回给客户端的对象 -->
  17. <!-- data:Action中的一个属性 -->
  18. <param name="root">data</param>
  19. <!-- 当返回结果有空值时,不包含进来 -->
  20. <!-- 这里AhJsonBean.msg2不包含进来 -->
  21. <param name="excludeNullProperties">true</param>
  22. </result>
  23. </action>
  24. </package>
  25. </struts>

AhJsonBean:

  1. package org.ah.s2;
  2.  
  3. /**
  4. * Json用的Java Bean
  5. */
  6. public class AhJsonBean {
  7. private String msg1;
  8. private String msg2;
  9.  
  10. public String getMsg1() {
  11. return msg1;
  12. }
  13.  
  14. public void setMsg1(String msg1) {
  15. this.msg1 = msg1;
  16. }
  17.  
  18. public String getMsg2() {
  19. return msg2;
  20. }
  21.  
  22. public void setMsg2(String msg2) {
  23. this.msg2 = msg2;
  24. }
  25.  
  26. }

Action:

  1. package org.ah.s2;
  2.  
  3. import com.opensymphony.xwork2.ActionSupport;
  4.  
  5. public class C1 extends ActionSupport {
  6. private String uname;
  7.  
  8. // -----------------------------
  9. public String getUname() {
  10. return uname;
  11. }
  12.  
  13. public void setUname(String uname) {
  14. this.uname = uname;
  15. }
  16.  
  17. // -----------------------------
  18. // <param name="root">data</param>
  19. // 不需要setter,需要getter,需要new
  20. private AhJsonBean data;
  21.  
  22. public AhJsonBean getData() {
  23. return data;
  24. }
  25.  
  26. // -----------------------------
  27. @Override
  28. public String execute() throws Exception {
  29. // 需要new一个Json的对象
  30. data = new AhJsonBean();
  31.  
  32. if ("admin".equals(uname)) {
  33. data.setMsg1("这是管理员");
  34. } else {
  35. data.setMsg1("OK!");
  36. }
  37. return ActionSupport.SUCCESS;
  38. }
  39.  
  40. }

运行一下:输入aa,焦点移开:

Struts2:Json插件_Ajax的更多相关文章

  1. struts2 JSON 插件的使用

    1. 导入包: json-lib-2.3-jdk15.jar struts2-json-plugin-2.3.15.3.jar 2. 在struts.xml中修改配置如下: <package n ...

  2. struts2 json 输出日期格式不正确

    struts2 输出json中 日期出现:2013-12-17T15:57:47 错误格式的数据 原因:struts2 json插件对日期的格式化有问题 解决方法:在实体类的日期的get方法上加注解: ...

  3. 【转】Struts2中json插件的使用

    配置注意点: 在原有Struts2框架jar包的引入下,需要额外多加一个Json的插件包(struts2-json-plugin-2.3.7.jar) 在struts.xml配置文件中,包需要继承js ...

  4. Struts2 Convention插件的使用(4)使用@Action注解返回json数据

    package com.hyy.action; import java.util.HashMap; import java.util.Map; import org.apache.struts2.co ...

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

    json插件可以简单的实现ajax交互,避免了使用struts2-dojo-plugin.jar包时带来的struts2.x版本冲突问题.并且减少了使用ajax标签时需要的繁琐的配置包括web.xml ...

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

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

  7. Struts2之Json插件的使用

    时间:2017-1-15 02:27 --普通方式处理异步请求:    ServletActionContext.getResponse().getWriter().print("aa&qu ...

  8. 【Struts2】Json插件使用

    一.使用步骤 1.1 引入依赖 1.2 在struts.xml文件中配置 一.使用步骤 1.1 引入依赖 <!-- https://mvnrepository.com/artifact/org. ...

  9. 关于Strut2内置Json插件的使用

    配置注意点: 在原有Struts2框架jar包的引入下,需要额外多加一个Json的插件包(struts2-json-plugin-2.3.7.jar) 在struts.xml配置文件中,包需要继承js ...

随机推荐

  1. Struts,spring,hibernate三大框架的面试

    Struts,spring,hibernate三大框架的面试 1.Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3 ...

  2. JAVAScript柯里化、部分应用参数终极理解

    一.柯里化 在定义柯里化.部分应用参数的概念前,首先必须对闭包有深入的了解和定义,闭包一句话说清楚:函数返回值为函数. 柯里化的定义:将多参函数分解为按步骤接受单个参数的函数,如下代码: var mo ...

  3. 使用 Sticky-Kit 实现基于 jQuery 的元素固定效果

    元素固定效果在网页中应用得很多,比较常见的使用场景有改进导航,显示广告.Sticky-Kit 是一个非常方便的 jQuery 插件,简化了创建/管理粘元素,有复杂的使用功能.这些功能包括:处理多个固定 ...

  4. canvas绘制经典折线图(一)

    最终效果图如下: 实现步骤如下:注-引用了jQuery HTML代码 <!doctype html> <html lang="en"> <head&g ...

  5. 关于webStrom-11.1配置less且自动生成.css和自动压缩为.min.css/.min.js

    网上看过很多配置思路,自己总结了以下, 就把我个人配置的顺序以及材料分享下,webstrom以下简称WB 1.配置less需要安装nodejs,自行安装.因为要用到npm.我是直接把npm解压到C盘根 ...

  6. 写pdf文件

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  7. 『SharePoint』Content Editor Webpart不能添加引用_layouts下面的文件

    好久没写了,最近没怎么学到新东西,倒是犯了一个很常见的错误,那就是试图在content editor webpart中添加位于_layouts下面的一个txt文件,虽然这个txt中只是几行简单的htm ...

  8. [环境搭建] VS-Visual Studio-IIS Express 支持局域网访问

    使用Visual Studio开发Web网页的时候有这样的情况:想要在调试模式下让局域网的其他设备进行访问,以便进行测试.虽然可以部署到服务器中,但是却无法进行调试,就算是注入进程进行调试也是无法达到 ...

  9. IT人经济思维之投资 - 创业与投资系列文章

    前面笔者写过一个文(IT从业者的职业规划),主要通过笔者的从业道路的经验,介绍了IT从业者的职业选择道路问题,主要从技术.业务和管理三大方面进行了描述.然后,通过文(IT从业者的职业道路(从程序员到部 ...

  10. Android Fragment生命周期

    Fragment与Activity的生命周期关系: 刚打开Activity:Fragment onAttach > Fragment onCreate > Fragment onCreat ...