/*****************************************/
使用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();
}
也可以使用外部的文件上传的插件来实现
如果要用到线程的方法来保存图片的时候,可以根据自己的需要来设置!
/***************************************************************/
使用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();
}
也可以使用外部的文件上传的插件来实现
如果要用到线程的方法来保存图片的时候,可以根据自己的需要来设置!
/***************************************************************/