packagecoreservlets;
importjava.io.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
importjava.net.*;
publicclassSearchEnginesextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,
HttpServletResponseresponse)
throwsServletException,IOException{
StringsearchString=request.getParameter("searchString");
if((searchString==null)
(searchString.length()==0)){
reportProblem(response,"Missingsearchstring.");
return;
}
//TheURLEncoderchangesspacesto"+"signsandother
//non-alphanumericcharactersto"%XY",whereXYisthe
//hexvalueoftheASCII(orISOLatin-1)character.
//BrowsersalwaysURL-encodeformvalues,sothe
//getParametermethoddecodesautomatically.Butsince
//we"rejustpassingthisontoanotherserver,weneedto
//re-encodeit.
searchString=URLEncoder.encode(searchString);
StringnumResults=request.getParameter("numResults");
if((numResults==null)
(numResults.equals("0"))
(numResults.length()==0)){
numResults="10";
}
StringsearchEngine=
request.getParameter("searchEngine");
if(searchEngine==null){
reportProblem(response,"Missingsearchenginename.");
return;
}
SearchSpec[]commonSpecs=SearchSpec.getCommonSpecs();
for(inti=0;i<commonSpecs.length;i++){
SearchSpecsearchSpec=commonSpecs[i];
if(searchSpec.getName().equals(searchEngine)){
Stringurl=
searchSpec.makeURL(searchString,numResults);
response.sendRedirect(url);
return;
}
}
reportProblem(response,"Unrecognizedsearchengine.");
}
privatevoidreportProblem(HttpServletResponseresponse,
Stringmessage)
throwsIOException{
response.sendError(response.SC_NOT_FOUND,
"<H2>"+message+"</H2>");
}
publicvoiddoPost(HttpServletRequestrequest,
HttpServletResponseresponse)
throwsServletException,IOException{
doGet(request,response);
}
}