Package coreservlets;
Import java. io .*;
Import javax. servlet .*;
Import javax. servlet. http .*;
Import java.net .*;
Public class SearchEngines extends HttpServlet {
Public void doGet (HttpServletRequest request,
HttpServletResponse response)
Throws ServletException, IOException {
String searchString = request. getParameter ("searchString ");
If (searchString = null )//
(SearchString. length () = 0 )){
ReportProblem (response, "Missing search string .");
Return;
}
// The URLEncoder changes spaces to "+" signs and other
// Non-alphanumeric characters to "% XY", where XY is
// Hex value of the ASCII (or ISO Latin-1) character.
// Browsers always URL-encode form values, so
// GetParameter method decodes automatically. But since
// We're just passing this on to another server, we need
// Re-encode it.
SearchString = URLEncoder. encode (searchString );
String numResults = request. getParameter ("numResults ");
If (numResults = null )//
(NumResults. equals ("0 "))//
(NumResults. length () = 0 )){
NumResults = "10 ";
}
String searchEngine =
Request. getParameter ("searchEngine ");
If (searchEngine = null ){
ReportProblem (response, "Missing search engine name .");
Return;
}
SearchSpec [] commonSpecs = SearchSpec. getCommonSpecs ();
For (int I = 0; I <commonSpecs. length; I ++ ){
SearchSpec searchSpec = commonSpecs;
If (searchSpec. getName (). equals (searchEngine )){
String url =
SearchSpec. makeURL (searchString, numResults );
Response. sendRedirect (url );
Return;
}
}
ReportProblem (response, "Unrecognized search engine .");
}
Private void reportProblem (HttpServletResponse response,
String message)
Throws IOException {
Response. sendError (response. SC _NOT_FOUND,
"<H2>" + message + "</H2> ");
}
Public void doPost (HttpServletRequest request,
HttpServletResponse response)
Throws ServletException, IOException {
DoGet (request, response );
}
}