struts2发送ajax的几个问题(不使用struts2-json-plugin的情况下)

采用原始方式发送ajax到action时,会遇到get,post的不同,原因是ContentType的问题,ContentType必须是text/html,struts获取到的inputStream才会有值!而默认jquery发送ajax采用的ContentType是application/x-www-form-urlencoded; charset=UTF-8,如果手动设置为json格式进行发送,那么struts2就获取不到数据了,所以在采用Post提交时不用指定ContentType,采用默认的就行,这点和Springmvc不一样,Springmvc发送json时得指定 contentType 为 ‘application/json;charset=utf-8‘,而且json得是完全格式的字符串,但是struts2不光contentType只支持text/html,而且发送数据也不需要转成json字符串,直接发送json对象即可,有点坑啊

 

采用原始方式输出json时,可以使用fastjson,这个效率比较高,不过下列几点得注意:

1、不需要进行json转换的字段,在set方法上加上@JSONField(serialize=false)
2、相互引用的对象,必须有一个对象的属性set方法上加上@JSONField(serialize=false),以防循环引用
3、fastjson转换数据不能使用hibernate的load方法获取到的数据,报堆栈溢出错误
4、list中相同对象进行json转换时,默认下一对象会显示成一个引用前一个的ref,需要设置一下fastjson对相同对象同样进行json转换
String jsonStr = JSON.toJSONString(list, SerializerFeature.DisableCircularReferenceDetect);//关闭引用检测后

时间: 2024-12-28 01:37:57

struts2发送ajax的几个问题(不使用struts2-json-plugin的情况下)的相关文章

Struts2对AJAX的支持

一.简介        struts2确实一个非常棒的MVC框架.这里部分记述一下struts2对AJAX的支持.实现AJAX有两种方式,一种是使用原生的javascript代码实现,一种是使用第三方的ajax框架(jquery,dwr,dojo等),jquery和dwr比较简单,做项目时也会经常用到.Struts2并没有发明新的AJAX框架,而是使用两个较为流行的框架,即Dojo框架和DWR框架. Dojo是一个用javascript语言实现的开源DHTML工具包,是一个客户端的AJaX框架,

[ExtJS5学习笔记]第三十二节 sencha extjs 5与struts2的ajax交互配置

本文地址:http://blog.csdn.net/sushengmiyan/article/details/43487751 本文作者:sushengmiyan ------------------------------------------------------------------------------------------------------------------------------------ sencha extjs 5 增加一个struts2的配置,这样可以在

Struts2结合Ajax实现登录

前言:Struts2作为一款优秀的MVC框架,和Ajax结合在一起,用户就会有良好的体验,本篇博文我们来模拟一个简单的登录操作,实现Ajax的异步请求,其中Struts2进行的是链接处理,Action动态处理请求,Ajax负责进行异步处理,传送数据与返回数据,其中主要使用的技术有:struts2+Ajax+Jquery+Css,好吧,废话不多说,让我们来看看这个实例吧. 第一步:新建一个Dynamic web project,然后起名:Struts2Ajax,引入相关的jar包,在web.xml

Struts2 处理AJAX请求

Struts2整合AJAX有2种方式: 使用type="stream"类型的<result> 使用JSON插件 使用type="stream"类型的<result>  获取text 前端 <body> <form> 学号:<input type="text" id="no"><br /> 姓名:<input type="text"

struts2学习笔记(8)-------struts2的ajax支持

struts2支持一种stream类型的Result,这种类型的Result可以直接向客户端浏览器响应二进制,文本等, 我们可以再action里面生成文本响应,然后在客户端页面动态加载该响应即可. 直接看例子: public class LoginAction { private String user; private String pass; private InputStream inputStream; public InputStream getInput(){ return inpu

原生JS发送Ajax请求

注意了,划重点了,这一题考不到算我输! 一.JS原生Ajax Ajax=异步Javascript+XML: ajax是一种数据请求的方式,不需要刷新整个页面.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. ajax的核心技术当然是XMLHttpRequest对象: ajax请求过程:创建XMLHttpRequest对象.连接服务器.发送请求.接受相应数据. 废话少说上代码! p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0p

原生js和jquery发送ajax请求及封装

原生js                                   // ajax get 五部曲function ajax_get(url,data){ // 异步对象 var ajax=new XMLHttpRequest(); // 设置url和请求方式 // url方法 如果有数据要把数据拼接到url中?name=jack&age=20 if(data){ url+=?; url+=data; }else{}; ajax.open('get',url); // 发送请求 aja

博客:Struts2与ajax整合之缺点

之前有篇博客介绍了Struts2与ajax的整合,链接Struts2之-集成Json插件实现Ajax 这里不再累述,看以上博客. 此篇博客想吐槽一下Struts2的缺点--错误处理做的不好,怎么做的不好,哪里做的不好,通过Struts2中Ajax的应用缺陷来介绍. 先提出它的缺点,后面再做出证明. 1,Struts2与Ajax整合的缺点 无论采用$.post还是$.ajax都捕获不到服务器产生的错误($.ajax捕获错误在servlet能做到),是struts2内部设计的不好,不是Ajax的问题

通过在jquery中添加函数发送ajax请求来加载数据库数据,以json的格式发送到页面

通过在jquery中添加函数发送ajax请求来加载数据库数据,以json的格式发送到页面 从数据库中查询仓库信息,显示在下拉菜单中: 首先,引入js插件,这里使用jquery-1.8.3.js <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-1.8.3.js"></script> 当页面加载完成后,就应该发送ajax请求到数据库,