Servlet搜索引擎例子

<!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;
 }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值