/*****************************************/
使用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();
}
也可以使用外部的文件上传的插件来实现
如果要用到线程的方法来保存图片的时候,可以根据自己的需要来设置!
/***************************************************************/
分享到:
相关推荐
chrome for mac里好像对部分json不能自动调用解析,这个现象遇到很多次,不过也是在某一段时间才开始有这种现象,猜测是chrome升级导致的,如果测试后发现不能看到上面截图效果,那估计是有问题删除掉刚安装的,按...
android-json-rpc是一个在android程序中使用的JSON-RPC客户端类库。它提供了一个简单的API来执行JSON-RPC服务调用
json-rpc-for-java,是仅仅不到100行的javascript代码和不到10个java文件实现的超级轻量级的通过 javaScript快速调用java对象并返回任意对象的轻量级框架,并且支持级联调用,也就是说不需要额外 的JavaScript编程,...
json-rpc-for-java,是仅仅不到100行的javascript代码和不到10个java文件实现的超级轻量级的通过 javaScript快速调用java对象并返回任意对象的轻量级框架,并且支持级联调用,也就是说不需要额外 的JavaScript?...
在做网站的时候,特别是做国际方面的时候,网网避免不了,翻译这个功能,那我们是同通什么实现的呢?主要条用谷歌的ApI,或者Google的APi,来实现的,针对要怎么调用API,有一个专门的组件Newtonsoft.Json.dll
Node.JS中的Google搜索结果 ...标准查询“披萨”的最简单示例,将Google SERP(搜索引擎结果页)数据作为JSON返回。 var SerpWow = require ( 'google-search-results-serpwow' ) // create the serpwow obj
NULL 博文链接:https://javasam.iteye.com/blog/2117845
谷歌搜索结果 JAVA API 这个 Java 包可以使用抓取和解析 Google、Bing 和百度搜索结果。 随意 fork 这个存储库以添加更多后端。 该项目是 Java 7 中 SerpApi 的实现。此代码依赖 GSON 进行高效的 JSON 处理。 ...
为了方便ajax调用传输数据,在struts2中加入的json插件用来做对象的序列化和反序列化,json插件的下载地址 http://code.google.com/p/jsonplugin/ 1. 下载json插件包,将jar包拷贝到WEB-INF/lib目录 注:struts2...
Chrome JSON格式化程序 这是 Chrome插件的Flat Design修改版 如何安装 要安装它,您需要安装Google Chrome: 克隆/下载此存储库,将其解压缩到您可以找到的位置 打开Chrome并转到chrome://extensions 启用...
双击简易服务器即可打开,注意, 必须用谷歌浏览器访问,其它浏览器未做兼容性 地图数据跟高德地图是同步的。调用的高德的api获取的行政边界坐标。所以都是最新的行政区划边界。 注意:如果程序报错地图出不来,请...
Google 自定义搜索 API 由 AngularJS 工厂从客户端调用。 您需要创建一个cse_config.json文件来保存您自己的search engine id和API key值。 请参阅下面的注释。 请注意,此方法会公开您的私有 API 密钥。 它仅用于...
gson.jar是Google开发的Java API,用于转换Java对象和Json对象,被用来处理Java和JSON对象的转换,可以调用默认构造器,给大家提供的是最新的gson-2.7.jar,有需要的赶快下载吧!
对用于调用 Google 业务 API 的 URL 进行签名。 安装 将此行添加到应用程序的 Gemfile 中: gem 'google_business_api_url_signer', git: 'git://github.com/Skalar/google_business_api_url_signer.git' 然后...
Postman谷歌浏览器插件版本,应用于新版Google浏览器,非crx文件,用于接口的调用测试,也可定义不同的json类型.
修改chrome的请求头。 Header Editor是一款管理浏览器请求的Chrome扩展,包括修改请求头、修改响应头、重定向请求、取消请求。 您可以从Redirector导入规则 规则说明: 1、匹配类型 规则会应用到满足相应...
轻松创建Google Ads API服务客户端。 要求 该库取决于 。 如果您尚未在计算机上安装它,请遵循或。 在本指南的其余部分中,我们假设您使用的是Linux / Unix / OS X,并且已在全球范围内安装了Composer,因此,您...
用于以 JSON 形式提供文本分析的 Google 表格的自定义函数。 指示 要使用它们: 在 Google 表格中打开电子表格。 转到工具 -> 脚本编辑器 将这些 .gs 文件复制到编辑器中。 在您的电子表格中,您可以调用以下任何...
Google Lens-带有AWS Rekognition的RN文本识别该项目显示了如何在类似Google镜头的React Native应用中使用文本识别功能设置编辑packager-info.json下文件.expo文件夹和config.js根文件夹下的文件。使用权创建一个对...
laravel-google-translate 翻译翻译文件(在/ resources / lang下)或lang.json文件提供额外的外观函数Str :: apiTranslate和Str :: apiTranslateWithAttributes 通过使用stichoza / google-translate-php或Google ...