html+jquery+servlet+javaBean开发Demo
原开发方式:在新增和修改功能的提交时,需要先获取表单标签中的value值,再做为发送请求时的参数,发送给servlet处理
例如:
获取此处input的value值,需通过:$("#title").val()来获取,或者使用jquery的$().serialize()序列化方法来序列化(name=value&name2=value2),这样的话,在servlet中进行取值的时候,就是request.getParameter("name");这样的话,如果参数很多,需要多次获取,比较繁琐
修改为序列化的方式:
在jquery中,采用
var dataJson = $(":input").serializeJson();
的方式将表单参数,序列化为json对象,并使用
JSON.stringify(dataJson)
将json对象格式化为string字符串,作为参数传递(需post请求方式)给servlet
在servlet中,采用从流中读取的方式,读取出字符串,再通过fastJson的反序列化方式,将其转化为我们想要的对象
Entry entryObj = JSON.parseObject(entryStrJson, Entry.class);
此处的entryObj对象即是用我们请求对象传递过来的参数,反序列化而来的。
关键代码:
jquery中,引入以下代码作为工具
(function($){
$.fn.serializeJson=function(filter){
var serializeObj={};
var array=this.serializeArray();
var str=this.serialize();
$(array).each(function(){
if(this.name!=filter){
if(serializeObj[this.name]){
if($.isArray(serializeObj[this.name])){
serializeObj[this.name].push(this.value);
}else{
serializeObj[this.name]=[serializeObj[this.name],this.value];
}
}else{
serializeObj[this.name]=this.value;
}
}
});
return serializeObj;
};
})(jQuery);
servlet中,从流中读取字符串参数的方法
String request(HttpServletRequest request, HttpServletResponse response) {
String param= null;
try {
BufferedReader streamReader = new BufferedReader( new InputStreamReader(request.getInputStream(), "UTF-8"));
StringBuilder responseStrBuilder = new StringBuilder();
String inputStr;
while ((inputStr = streamReader.readLine()) != null) {
responseStrBuilder.append(inputStr);
}
JSONObject jsonObject = JSONObject.parseObject(responseStrBuilder.toString());
param= jsonObject.toJSONString();
} catch (Exception e) {
e.printStackTrace();
}
return param;
}