Qjuery+AJAX的js编写的前端界面与后端java servlet通讯

前端界面用JQuery.Ajax()的data的方法来传递数据时,即没有用GET方法传递参数,主要是看HTTP请求里Entity的字段里的Content-Type里的值。

如果Content-Type里的值为multipart/form-data;表示在jquery ajax方法中的data里面是有文件流的。

前端: 
 var saveAlbum = function () {

            $.ajax(
            {
                url: "/Home/PostAlbum",
                type: "POST",
                dataType: "json",
                data: { AlbumName: "shanghai", Entered: "5/9/2013" },
                success: function (result) {
                    alert(result);
                },
                error: function (xhr, status, p3, p4) {
                    var err = "Error " + " " + status + " " + p3;
                    if (xhr.responseText && xhr.responseText[0] == "{")
                        err = JSON.parse(xhr.responseText).message;
                    alert(err);
                }
            });
        }
所以可以用如下方式来进行参数解析,解析方式参考文档servlet接收multipart/form-data表单数据

引入了commons-fileupload-1.3.jar和commons-io-1.2.jar包,就可以添加代码

DiskFileItemFactory factory = new DiskFileItemFactory();   
        ServletFileUpload upload = new ServletFileUpload(factory);   
        upload.setHeaderEncoding("UTF-8");  
        List items = upload.parseRequest(request);  
        Map param = new HashMap();   
        for(Object object:items){  
            FileItem fileItem = (FileItem) object;   
            if (fileItem.isFormField()) {   
                param.put(fileItem.getFieldName(), fileItem.getString("utf-8"));//如果你页面编码是utf-8的   
            }else{
                fileArray = item.get();
                if(null == item.getName())
                    continue;
            } 
        }  

如果Content-Type里的值为application/x-www-form-urlencoded;(非get/post文件的操作,如delete)

则可以用如下代码

request.setCharacterEncoding("utf-8");
ServletInputStream in = request.getInputStream();
String s = IOUtils.toString(in);
log.debug(s);
String[] params = s.split("&");
Map<String, Object> map = this.toMapList(params);
if(null == map){
	Connect_Http.format_HttpResponse_ForJson(response,HttpStatus.SC_OK,null,
			ErrCodCollection.ERRCOD_FAL003,ErrCodCollection.DATA_NO_EXIT);
	
	return;
}


private Map<String,Object> toMapList(String[] params){
	if(null == params)
		return null;
	Map<String,Object> map = new HashMap<String,Object>();
	for(String tmp:params){
		String[] ms = tmp.split("=");
		if(2 ==ms.length)
			map.put(ms[0], ms[1]);
		else if(1 ==ms.length){
			map.put(ms[0], null);
		}else{
			return null;
		}
	}
	return map;
	
}

通过上面的函数,可以用map.get("key")来取得对应的参数值

其中,类IOUtils.toString()这个函数是在包org.apache.commons.io.*;即上面引用的commons-io-1.2.jar包中有包含。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值