json 调用 Google 图片搜索

本文介绍了一种利用Google AJAX API结合JQuery和JSON技术实现图片搜索的方法。通过前端按钮触发异步请求,向服务器传递搜索关键词并获取返回的图片URL,最终在网页上展示搜索结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*****************************************/
使用Google Ajax API 来实现图片的搜索功能:在实现的过程中要用到的技术有:Jquery,json 等技术

/*************************************************************/
jsp页面:
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">


$(function(){

//当单击提交按钮的时候,进行异步请求查询数据
$("#bt").click(function(){
//进行post方法来异步请求
$.get("JsonServlet",
{imageName:encodeURI($("#imageName").val(),"utf-8"),imageSource:$("input[name=iamgeSource]:checked").val()},
function(returnedData,status){
$("#showPic").empty();
var html="";
for(var i=0;i<returnedData.length;i++){

html +="<img src='"+returnedData[i]+"' width='150' height='150'/>";
}
$("#showPic").append(html);

}

);
});
$("#save").click(function(){

$("#pro").html("<font color='red'>processing....</font>");

$.post("SaveImageServlet",null,function(returnedData,result){


alert(returnedData);

});

});

});

</script>
</head>

<body>

<input type="text" id="imageName" />
<input type="radio" name="iamgeSource" value="google" checked="checked" />google
<input type="radio" name="iamgeSource" value="flickr"/>flickr
<br/>
<input type="button" id="bt" value="提交"/>
<input type="button" id="save" value="保存"/>
<div id="pro"></div>

<div id="showPic"></div>


/*****
*使用dopost来接受参数,并返回图片路径
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

PrintWriter out = response.getWriter();
String imageName=URLDecoder.decode(request.getParameter("imageName"),"utf-8");
String imageSource=request.getParameter("imageSource");
HttpSession session=request.getSession();

try {

//存储向客户端发送的url
List<String> returnList=new ArrayList<String>();
session.setAttribute("iamgeName", imageName);
session.setAttribute("picSource", imageSource);
session.setAttribute("images",returnList);
//判断用户使用的是什么搜索
if("google".equals(imageSource)){
//存储每次从Google货到的json数据
List<String> lists=new ArrayList<String>();

for(int i=0;i<4;i++){
String queryStr=new StringBuffer(Contant.GOOGLE_URL)
.append("q=").append(imageName)
.append("&start=").append(8*i).toString();
lists.add(NetwordUtil.getStringContentFromURL(queryStr));
}
for(String result:lists){
JSONObject jsonContent=new JSONObject(result);
JSONObject responseData=jsonContent.getJSONObject("responseData");
JSONArray results=responseData.getJSONArray("results");//获得results数据
for(int i=0;i<results.length();i++){

JSONObject jsonObject=results.getJSONObject(i);//获得第i个对象
String url=jsonObject.getString("url");

returnList.add(url);

}
}

}else{
System.out.println("filics");


}
Gson gson=new Gson();

String jsonResult=gson.toJson(returnList);
response.setContentType("application/json;charset=utf-8");
response.setHeader("pragma","no-cache");
response.setHeader("cache-control","no-cache");
out.print(jsonResult);

} catch (Exception e) {
// TODO: handle exception
}


out.flush();
out.close();
}

/**********************************************************/
在调用的时候要住的是一个google的链接字符串
public static String GOOGLE_URL="https://ajax.googleapis.com/ajax/services/search/images?key=ABQIAAAATqqFqs7EA6jhOIdd5baQSBR1OFzB8QaN0RkKyqZMsix3w73wyBRuPkw-_I8d5TLsv6PvoKsXmxpv4Q&rsz=large&v=1.0&" ;
}
必须自己申请一个key
https://ajax.googleapis.com/ajax/services/search/images
搜索images文件的位置:
Key :API KEY
rsz:表示图片大小
v:表示版本号
在保存图片的时候使用单线程调用
public static String getStringContentFromURL(String queryString) throws Exception{
//定义url对象
URL url=new URL(queryString);
//获得urlConnection对象
URLConnection conn=url.openConnection();
//打开输入流
InputStream is=conn.getInputStream();
//获得字符输入流
InputStreamReader isr=new InputStreamReader(is);
//转换成bufferedReader缓冲流
BufferedReader br=new BufferedReader(isr);
StringBuffer buffer=new StringBuffer();
String line=null;
while(null!=(line=br.readLine())){

buffer.append(line);
}
br.close();
isr.close();
is.close();
return buffer.toString();

}
也可以使用外部的文件上传的插件来实现
如果要用到线程的方法来保存图片的时候,可以根据自己的需要来设置!
/***************************************************************/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值