首先,在HTML中使用FORM提交数据。当FORM的method属性设置为GET时,浏览器以GET方式提交表单数据。FORM的action属性设置数据将提交到哪个URL。
1 <body>
2 <div align = "center">
3 <img src = "http://www.logostage.com/logos/Google.png" style = 'margin: 25px;' width="368" height="186">
4 <div>
5 <form action = '/servlet/servlet/SearchServlet' method = 'get'>
6 <input type = "radio" name = "type" value = "web" checked>网页
7 <input type = "radio" name = "type" value = "news">新闻
8 <input type = "radio" name = "type" value = "image">图片
9 <input type = "radio" name = "type" value = "video">视频
10 <br/><br/>
11 <input type = "text" name = "word" value = "" style = "width:300px;"><br/><br/>
12 <input type = "submit" value= "Google一下" style = "width:150px;">
13 </form>
14 </div>
15 <div style = "margin-top:50px;">© Clara 2011</div>
18 </div>
20 </body>
这段HTML代码的页面效果如下图。好吧,我山寨了><~
然后写一个SearchServlet的类来实现业务逻辑。这里我用了yahoo的search API,不过是下的老版本,现在yahoo搞了个BOSS,要收钱。用的是yahoo_search-2.0.1.jar,需要添加到项目的library里面去,即/WEB-INF/lib下。这里有个问题,直接加到目录底下还是不会找到,需要右键jar包,具体见下图。
图片搜索的结果如下:
搜索部分的关键代码:
public class SearchServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
// 搜索关键字
String word = request.getParameter("word");
// 搜索类型
String type = request.getParameter("type");
response.setContentType("text/html");
.....
.....
SearchClient client = new SearchClient("javasdktest");
try{
if("image".equals(type)){
ImageSearchRequest searchRequest = new ImageSearchRequest(URLEncoder.encode(word, "UTF-8"));
// 查询记录数
searchRequest.setResults(20);
// 从第 0 条记录开始显示
searchRequest.setStart(BigInteger.valueOf(0));
double startTime = System.currentTimeMillis();
ImageSearchResults results = client.imageSearch(searchRequest);
double endTime = System.currentTimeMillis();
out.println("<div align=right style='width:100%; background: #FFDDDD; height:25px; padding:2px; border-top:1px solid #FF9999; margin-bottom:5px; '>");
out.println(" 总共 " + results.getTotalResultsAvailable() + " 条数据,总用时 " + ( endTime - startTime )/1000 + " 秒。");
out.println("</div>");
for(ImageSearchResult result : results.listResults()){
out.println("<div class='imgDiv'>");
out.println(" <div align='center'><a href=\"" + result.getClickUrl() + "\" target=_blank><img width=160 height=120 src=\"" + result.getThumbnail().getUrl() + "\" border='0'></a></div>");
out.println(" <div align='center'><a href=\"" + result.getRefererUrl() + "\" target=_blank>" + result.getTitle() + "</a></div>");
out.println(" <div align='center'>" + result.getWidth() + "x" + result.getHeight() + " " + result.getFileFormat() + "</div>");
out.println(" <div>" + (result.getSummary()==null ? "" : result.getSummary()) + "</div>");
out.println("</div>");
}
}
else if("web".equals(type)){
}
else .......
}