JQuery,AJAX,Struts2传送JSON数据 。示例说明:整合Struts2的项目中,使用JQuery或AJAX传送JSON数据,实现页面无刷新更新数据。
环境:Struts-2.3.4 JQuery-1.8.0
其他说明:要传送JSON数据,另外需要几个Jar文件,拿我使用Struts2.3.4来说,要在struts2-blank的基础上额外导入的Jar文件是commons-logging-1.1.1.jar,json-lib-2.3-jdk15.jar,struts2-json-plugin-2.3.4.jar。另外,在这个小例子中,也处理了中文乱码问题。
代码:
HTML:
- <body>
- <span id=”btn” style=”cursor:pointer; font-size:20px;”>action</span>
- <div id=”rdiv”>要显示数据的区域</div>
- </body>
JQuery:
- $(“#btn”).click(function() {
- alert(“start – lssrc”);
- //AJAX方式
- $.ajax({
- type:”GET”,
- url:”getJSON.action”,
- data:”name=”+encodeURI(encodeURI(“蓝海魔方”)),
- //需要两次转码,Action接受时也需要一次转码.将在Action注明
- dataType:”json”,
- success:function(data) {
- $(“#rdiv”).html(“lssrc返回的数据:” + data.dateJSON);
- }
- });
- //JQuery方式
- //中文需要一次转码,Action接受时也需要一次转码.将在Action注明
- /*
- $.get(“getJSON.action”, {name:encodeURI(“蓝海魔方”)}, function(data){
- $(“#rdiv”).html(“返回的数据:” + data.dateJSON);
- }, “json”);
- */
- });
Struts2的配置文件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>
- <!– 加入i18n.encoding,这里要与传送数据的编码一致 –>
- <constant name=”struts.i18n.encoding” value=”UTF-8″ />
- <constant name=”struts.enable.DynamicMethodInvocation” value=”false” />
- <constant name=”struts.devMode” value=”true” />
- <!– 如果要传送JSON数据,extends要把原来的struts-default改为json-default –>
- <package name=”default” namespace=”/” extends=”json-default”>
- <global-results>
- <result name=”error”>/error.jsp</result>
- </global-results>
- <!– 结果的类型要注明是json类型 –>
- <action name=”getJSON”>
- <result type=”json”></result>
- </action>
- </package>
- </struts>
Action:
- package com.lssrc;
- import com.opensymphony.xwork2.ActionSupport;
- public class UserAction extends ActionSupport {
- private static final long serialVersionUID = 1L;
- private String dateJSON;
- private String name;
- @Override
- public String execute() throws Exception {
- //这里对接受的数据进行一次转码.解决中文乱码问题
- this.name = java.net.URLDecoder.decode(name,”UTF-8″);
- System.out.println(“从客户端接受到的数据 : ” + name);
- dateJSON = “[{name:'lssrc',age:1},{name:'蓝海魔方',age:2}]“;
- return SUCCESS;
- }
- public String getDateJSON() {
- return dateJSON;
- }
- public void setDateJSON(String dateJSON) {
- this.dateJSON = dateJSON;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
如有其他问题,可以给我留言。共同学习!!!
http://lsw1991abc.blog.163.com/blog/static/21594182201210622355925/