<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- 这个+另一个servlet 可实现搜索引擎 -->
<HTML>
search.html //通过这个文件+另两个java文件可以实现实现搜索引擎的前端!(可实现搜索).
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<BODY>
<form method = post action="http://127.0.0.1:8080/WebServlet/searchengines">
Search String:
<input type="text" name="searchString"><br>
<input type="text" name="numResults" value=10 size=3><br> <!--搜索到的,每页显示多少记录-->
<input type ="radio" name="searchEngine" value="google"> Google|
<input type ="radio" name="searchEngine" value="infoseek"> Infoseek|
<input type ="radio" name="searchEngine" value="hotbot"> HotBot
<br>
<input type = "submit" value="Search">
</form>
</BODY>
</HTML>
____________________________________________________________________
SearchEnginesServlet.java //搜索引擎例子
import java.io.*;
import java.util.zip.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.net.*;
public class SearchEnginesServlet extends HttpServlet {
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException, java.io.IOException {
String searchString = request.getParameter("searchString");
if(searchString == null||searchString.length()==0){
reportProblem(response,"Missing search string."); //reportProblem()是一个自己定义的方法
//返回错误信息。
return;
}
searchString =URLEncoder.encode(searchString); //将seachStirng中的特殊字符转化成地址栏中字符,
//如空格转化成+号.
String numResults = request.getParameter("numResults");
if(numResults == null || numResults.equals("0")||numResults.length()==0)
{
numResults="10" ; //如果没有传递这个分页参数,就默认(搜索到的记录)第页为10个记录;
}
String searchEngine =request.getParameter("searchEngine");
if(searchEngine==null)
{
reportProblem(response,"Missing search engine!");
}
//自己定义的类,SearchSpe完成构建完成的URL搜过路径!,让我们能搜索到信息。
SearchSpec[] commonSpecs = SearchSpec.getCommonSpecs();
for(int i=0;i<commonSpecs.length;i++)
{
SearchSpec searchSpec =commonSpecs[i];
if(searchSpec.getName().equals(searchEngine))
{
String url = searchSpec.makeURL(searchString,numResults);
response.sendRedirect(url);
return;
}
}//for
reportProblem(response,"Unrecognized search engine.");
}
private void reportProblem(HttpServletResponse response,String message)
throws IOException { //自己定义的返回出错信息
response.sendError(response.SC_NOT_FOUND,"<H2> Error:"+message+"</H2>");
}
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException, java.io.IOException {
doGet(request,response);
}
}
_________________________________________________________________________
SearchSpec.java //搜索引擎例子构建URL
/*
这个类能实现,构建完整的搜索路径的URL。在状态代码的视频中。
*/
public class SearchSpec
{
private String name,baseURL,numResultsSuffix;
private static SearchSpec[] commonSpecs =
{ //q后面跟要搜索的东西!,num后,跟页数
new SearchSpec("google", "http://www.google.com/search?q=",
"&num="),
new SearchSpec("infoseek", "http://infoseek.go.com/Titles?qt=",
"&nh="),
new SearchSpec("lycos", "http://lycospro.lycos.com/cgi-bin/"+
"pursuit?query=","&nmaxhits="),
new SearchSpec("hotbot", "http://www.hotbot.com/?MT=",
"&DC=")
};
public SearchSpec(String name,String baseURL,String numResultsSuffix)
{
this.name =name;
this.baseURL = baseURL;
this.numResultsSuffix = numResultsSuffix;
}
public String makeURL(String searchString,String numResults)
{
return (baseURL+searchString+numResultsSuffix+numResults);
}
public String getName() {
return name;
}
public static SearchSpec[] getCommonSpecs() {
return commonSpecs;
}
}