Struts2使用JSON插件实现异步刷新功能

1.说起这个Json插件实现异步刷新的功能折腾了我两天了,本想使用Juery来实现,可是在Jsp页面中始终无法获取json数据,最终无奈之下只能选择了最原始的方式。

2.首先是需要加载struts2-json-plugin-2.3.20.1.jar(因为我用的struts的版本是2.3.20.1)到项目中,接下来就是配置struts.xml配置文件了,而在这个过程中我有遇到一个非常烦恼的事,就是在我配置json的时候,需要继承json-default,始终都报错,这个问题已经在我之前的博客"SSH使用json插件实现AJAX的问题"中有具体的阐述,所以在这里我就不复述了。

3.首先是定义一个MyJson.java的Action类,其代码如下:

public class MyJson extends BaseAction{
    public String getRno() {
        return Rno;
    }

public void setRno(String rno) {
        Rno = rno;
    }

private String Rno;

public RoomBiz getRoomBiz() {
        return roomBiz;
    }

public void setRoomBiz(RoomBiz roomBiz) {
        this.roomBiz = roomBiz;
    }

RoomBiz roomBiz;

public List<RoomInfo> getRoomList() {
        return roomList;
    }

public void setRoomList(List<RoomInfo> roomList) {
        this.roomList = roomList;
    }

private List<RoomInfo> roomList;

public String getRoomByRnoByJson() throws Exception {
        roomList=new ArrayList<RoomInfo>();
        System.out.println("Rno=================="+Rno);
        roomBiz=serviceManager.getRoomBiz();
        RoomInfo roomInfo=roomBiz.getRoomByRno(Rno);
        roomList.add(roomInfo);
        System.out.println("roomList=============" + roomList.get(0).getRtel());
        return "success";
    }
}

4.具体在struts.xml配置文件中写的配置代码是:

<package name="myjson" namespace="/myjson" extends="json-default">

  <action name="SZQJson" class="com.hibtest3.action.MyJson" method="getRoomByRnoByJson">

    <result type="json"/>

  </action>

</package>

5.struts.xml配置好之后,接下来是页面中的调用,这js方法是当改变房间号的下拉菜单时,触发这个事件,返回一个json的数据格式。

<tr>
   <td>房间号</td>
   <td><select class="selectStyle" name="rno" id="rno"
        onchange="jsonClick(this.options[this.options.selectedIndex].value)">
   <%for(int i=0;i<roomList.size();i++){
         RoomInfo roomInfo=roomList.get(i);
   %>
   <option value="<%=roomInfo.getRno()%>"><%=roomInfo.getRno()%></option>
   <%}%>
   </select></td>
</tr>

function jsonClick(obj) {
            var url = "/HibTest3/myjson/SZQJson?Rno=" + obj;
            if(window.XMLHttpRequest) {
                //IE7, Firefox, Opera支持
                req = new XMLHttpRequest();
            }else if(window.ActiveXObject) {
                //IE5,IE6支持
                req = new ActiveXObject("Microsoft.XMLHTTP");
            }

req.open("POST", url, true);
            //onreadystatechange属性存有处理服务器响应的函数,有5个取值分别代表不同状态
            req.onreadystatechange = callback;
            //send函数发送请求
            req.send(null);
        }

function callback() {
            if(req.readyState == 4 && req.status == 200) {
                var check = req.responseText;
                show (check);
            }
        }

function show(str) {
            var rstyle = document.getElementById(‘rstyle‘);
            var rprice = document.getElementById(‘rprice‘);
            var lens=str.length;
            var str1=str.substring(2,lens-5);
            var str2=str1.split(‘,‘);
            for(var i=0;i<str2.length;i++){
                var obj=str2[i].split(‘:‘);
                if(obj[0]==‘"rstyle"‘){
                    rstyle.value=obj[1];
                }else if(obj[0]==‘"rprice"‘){
                    rprice.value=obj[1];
                }

}
        }

6.最后运行的结果如下,当改变房间号时,对应的房间类型和房间价格也会相应的改变。

时间: 2024-11-05 11:30:33

Struts2使用JSON插件实现异步刷新功能的相关文章

struts2之json插件

1.引入json插件包 <!-- 引入struts2的json插件 -->     <dependency>         <groupId>org.apache.struts</groupId>         <artifactId>struts2-json-plugin</artifactId>         <version>${struts.version}</version>     </

【Struts2】Json插件使用

一.使用步骤 1.1 引入依赖 1.2 在struts.xml文件中配置 一.使用步骤 1.1 引入依赖 <!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-json-plugin --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-json-plugin</arti

Struts2:Json插件_Ajax

lib中加入包 struts2-json-plugin-2.3.20.jarcommons-lang3-3.2.jar WebRoot下新建js文件夹 放入json2.js json2.js是一个著名开源js库,提供了json的序列化和反序列化方法 JSON.stringify:L353:把Json对象转换成字符串 JSON.parse: L400:把字符串转成Json对象 http://www.json.org/ 有 JavaScript: JSON. json2.js. clarinet.

Struts2的JSON插件

扎心了,老铁~这依然是一个注册. 1.reg.jsp <%@page contentType="text/html; charset=utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> &l

【未解决】struts2的json插件返回的json包含特殊字符被转义问题

例: {"pics":"http:\/\/localhost:8080\/data\/photos\/moodsPic\/4.jpg"} 想要"http://localhost:8080/data/photos/moodsPic/4.jpg这效果 换种方式: 转义后再返回http:\\/\\/localhost:8080\\/data\\/photos\\/moodsPic\\/4.jpg 结果变这样:http:\\\/\\\/localhost:8080

Struts2之—集成Json插件实现Ajax

   上篇博客介绍了Struts2中自定义结果集实现Ajax,也分析了它的缺点:这样自定义的结果集,写死了,不能做到客户端需要什么数据就传什么数据:Struts2之-自定义结果集实现ajax 本篇博客提出Struts2的集成Json插件,很好的解决了自定义结果集带来的问题. 一,引题 1,Json数据格式简介 因为JSON是脱离语言的理想的数据交换格式,所以它被频繁的应用在客户端与服务器的通信过程中,这一点是毋庸置疑的.而在客户端与服务器的通信过程中,JSON数据的传递又被分为服务器向客户端传送

关于Strut2内置Json插件的使用

配置注意点: 在原有Struts2框架jar包的引入下,需要额外多加一个Json的插件包(struts2-json-plugin-2.3.7.jar) 在struts.xml配置文件中,包需要继承json-default,然后把result的类型改为json <package name="xxx" extends="json-default"> <result name="success" type="json&quo

Java基础101 Struts2下的 jquery+ajax+struts 技术实现异步刷新功能

1.效果图示 横线上方的部分不动(没有刷新),下方实现刷新(异步刷新) 2.实现步骤 jquery+ajax+struts技术实现异步刷新功能的步骤:    1.需要用到 jquery+ajax+struts 那么需要用几个包:(commons-logging-1.0.4.jar.freemarker-2.3.13.jar.ognl-2.6.11.jar.struts2-core-2.1.6.jar.xwork-2.1.2.jar.commons-fileupload-1.2.1.jar)   

Struts2返回Json数据(使用Struts2插件)

这篇我将介绍如何使用Struts2的struts2-json-plugin.jar插件返回JSON数据. 一.其中主要步骤有: 1.将struts2-json-plugin.jar插件拷贝到项目的"/WEB-INF/lib"文件夹下: 2.编写Action类文件: 3.在struts.xml文件中配置这个Action,这个Action所在的"<package.../>"必须继承”json-default“,Action的Result类型为json,即ty