服务器序列化与反序列化
一,序列化
???/** ????* 序列化为json ????*/ ???public static String toJson(Object obj) { ???????String result = null; ???????try { ???????????//对象映射器 ???????????ObjectMapper objectMapper = new ObjectMapper(); ???????????//设置日期格式 ???????????SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd HH:mm:ss"); ???????????objectMapper.setDateFormat(sdf); ???????????result = objectMapper.writeValueAsString(obj); ???????} catch (JsonProcessingException e) { ???????????e.printStackTrace(); ???????} ???????return result; ???}
二,反序列化
/** ????* 反序列化成对象 ????* ????* T:表示全部类型与objcet不同的是 泛型强类型 Object为弱类型 ????* json:需要反序列化的字符串 ????* valueType:反序列化的类型 ????* */ ???public static <T> T toObject(String json,Class<T> valueType) { ???????//对象映射器 ???????ObjectMapper mapper=new ObjectMapper(); ???????T result=null; ???????try { ???????????result=mapper.readValue(json,valueType); ???????}catch (Exception e) { ???????????e.printStackTrace(); ???????} ???????return result; ???}
三,序列化时时间的问题
通过jackson序列化时时间是一个问题,它会把时间转换为1977年到现在这个时间的毫秒数,下面来解决这个问题
1,时间注解@JsonFormat: 在需要指定序列化对象的时间字段前面插入时间注解,转变为自己想要的格式
???private String comid; ???private String comname; ???private String comprice; ???//设置日期格式
/**
*locale:国家
*timezone:时区
*pattern:时间格式
*/ ???@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss") ???private String comtime; ???private String yn;
2,SimpleDateFormat: 在序列化前设置好时间格式
???????????//对象映射器 ???????????ObjectMapper objectMapper = new ObjectMapper(); ???????????//设置日期格式 ???????????SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd HH:mm:ss"); ???????????objectMapper.setDateFormat(sdf); ???????????objectMapper.writeValueAsString(obj);
Jackson工具包:
https://files.cnblogs.com/files/NiuBiHH/jackson.zip
四,原生AJAX
获取XHR对象
/** ????* 获取XHR对象 ????* */ ???function getXHR() { ???????//window.XMLHttpRequest 普通浏览器差不多都具备的对象 ???????if(window.XMLHttpRequest){ ???????????return new XMLHttpRequest(); ???????}else ?if(window.ActiveXObject){ ???????????//ActiveXObject("Microsoft.XMLHTTP") 为Microsoft公司的 在IE6 IE5下获得的XHR对象 ???????????return new ActiveXObject("Microsoft.XMLHTTP"); ???????} ???????return null; ???}
状态发生改变时调用的函数
?????/*
*xhr.readyState等于4时 表示请求成功
*xhr.status等于200时 表示服务器响应状态成功
*xhr.responseText 取出服务器响应返回的值
*/
? XHR.onreadystatechange=function(){ ???????????if(xhr.readyState==4){ ????????????????if(xhr.status==200){ ?????????????????xhr.responseText;
???????????????} ???????????} ???????}
open() 如果是本地的话可以用openReques()代替
/*
* ?method 请求的类型 如:get post
* ?url 请求是路径
* asycn 是否是异步请求 默认为true
*/
void open( ??DOMString method, ??DOMString url, ??optional boolean async,);
xhr.open("GET","CommodityControl?action=time",true);
send() 请求的所有相关事件都必须在此方法之前
xhr.send(null);
事例:
???/** ????* 获取XHR对象 ????* */ ???function getXHR() { ???????//window.XMLHttpRequest 普通浏览器差不多都具备的对象 ???????if(window.XMLHttpRequest){ ???????????return new XMLHttpRequest(); ???????}else ?if(window.ActiveXObject){ ???????????//ActiveXObject("Microsoft.XMLHTTP") 为Microsoft公司的 在IE6 IE5下获得的XHR对象 ???????????return new ActiveXObject("Microsoft.XMLHTTP"); ???????} ???????return null; ???} ???function getTime_click(){ ???????var xhr=getXHR(); ???????//当状态变化时的事件 ???????xhr.onreadystatechange=function(){ ???????????if(xhr.readyState==4){ ?//请求成功 ???????????????if(xhr.status==200){ ?//服务器响应状态成功 ???????????????????//将从服务器获得的数据显示在页面上 ????????????????alert(xhr.responseText); ???????????????} ???????????} ???????} ???????//打开请求 ???????xhr.open("GET","CommodityControl?action=time",true); ?//请求类型,路径,是否为异步请求 ???????//发送请求 ???????xhr.send(null); ?//参数 ???}
五,$.ajax(options)
属性 | 类型 | 描述 |
url | 字符串 | 请求的URL |
Type | 字符串 | 请求的方法 如:GET() POST() 默认GET() |
Data | 对象 | 请求后台时带过去的参数 |
dataType | 字符串 | 设置服务器返回数据的类型 如:XML HTTP JSON SCRIPT TEXT |
timeout | 数值 | 设置请求时间 如果超过改时间则中止请求 并调用错误函数 |
global | 布尔值 | 启用或者禁用全集函数的触发 |
contentType | 字符串 | 请求的内容类型 |
success | 函数 | 请求成功时调用改函数,该函数第一个参数为服务器的响应值 |
error | 函数 | 请求响应指示错误状态码,携带三个实参调用该函数:请求对象 , 状态消息字符串 , 异常对象 |
complete | 函数 | 请求响应指示成功状态码,调用该函数, 如果指定了success或error回调函数,则在他们被调用之后在调用该函数 |
beforeSend | 函数 | 发起请求前调用的函数 |
async | 布尔值 | 指定是否为异步请求 |
事例:
???????????$.ajax({ ???????????????type: "get", ???????//请求类型 ???????????????url: "CommodityControl?action=allcom", ???????????????//路径 ???????????????beforeSend: function () { ???????????????????????????????//请求前的事件 ???????????????????c.show(); ???????????????}, ???????????????success: function (data) { ?????????????//请求成功后的事件 ???????????????????$.each(data, function (index, obj) { ???????????????????????var tr = $("<tr/>"); ???????????????????????var inptd = $("<td/>"); ???????????????????????$("<input name=‘comCheck‘ class=‘comCheck‘ type=‘checkbox‘/>").html(obj.comtime).appendTo(inptd).data("id", obj.comid); ???????????????????????inptd.appendTo(tr); ???????????????????????$("<td/>").html(obj.comid).appendTo(tr); ???????????????????????$("<td/>").html(obj.comname).appendTo(tr); ???????????????????????$("<td/>").html(obj.comprice).appendTo(tr); ???????????????????????$("<td/>").html(obj.comtime).appendTo(tr); ???????????????????????var inputtd = $("<td/>"); ???????????????????????if (obj.yn == ‘y‘) { ???????????????????????????$("<input ?name=‘yn‘ checked=‘‘ value=‘y‘ type=‘checkbox‘/>").html(obj.comtime).appendTo(inputtd); ???????????????????????} ???????????????????????else { ???????????????????????????$("<input ?name=‘yn‘ type=‘checkbox‘/>").html(obj.comtime).appendTo(inputtd); ???????????????????????} ???????????????????????inputtd.appendTo(tr); ???????????????????????var atd = $("<td/>"); ???????????????????????$("<a href=‘#‘class=‘aupdate‘></a> ").html("详细 ???").appendTo(atd).data("id", obj.comid); ???????????????????????$("<a href=‘#‘ class=‘adel‘></a> ").html(" ??删除").appendTo(atd).data("id", obj.comid); ???????????????????????atd.appendTo(tr); ???????????????????????$("#com").append(tr); ???????????????????????c.close(); ???????????????????}); ???????????????}, ???????????????complete: function () { ?//请求完成时的事件,不论成功或失败 ???????????????????$("#hint").html("请求完成..."); ???????????????}, ???????????????error: function (xhr, textStatus, errorThrown) { ?//错误时 ???????????????????alert(xhr + textStatus + errorThrown); ???????????????} ???????????});
JackSon与AJAX的简单操作
原文地址:https://www.cnblogs.com/NiuBiHH/p/9138905.html