{"id":10170,"date":"2015-08-19T08:38:53","date_gmt":"2015-08-19T12:38:53","guid":{"rendered":"http:\/\/bangla.salearningschool.com\/?p=10170"},"modified":"2015-08-01T09:15:29","modified_gmt":"2015-08-01T13:15:29","slug":"searchengines-java-servlet-that-redirects-requests-to-various-search-engines-uses-the-searchspec-helper-class-accessed-by-means-of-searchengines-html","status":"publish","type":"post","link":"http:\/\/bangla.sitestree.com\/?p=10170","title":{"rendered":"SearchEngines.java Servlet that redirects requests to various search engines. Uses the SearchSpec helper class. Accessed by means of SearchEngines.html."},"content":{"rendered":"<pre>SearchEngines.java\u00a0 Servlet that redirects requests to various search engines. Uses the SearchSpec\u00a0 helper class. Accessed by means of SearchEngines.html. \r\n\r\npackage cwp;\r\n\r\nimport java.io.*;\r\nimport javax.servlet.*;\r\nimport javax.servlet.http.*;\r\nimport java.net.*;\r\n\r\n\/** Servlet that takes a search string, number of results per\r\n\u00a0*\u00a0 page, and a search engine name, sending the query to\r\n\u00a0*\u00a0 that search engine. Illustrates manipulating\r\n\u00a0*\u00a0 the response status line. It sends a 302 response\r\n\u00a0*\u00a0 (via sendRedirect) if it gets a known search engine,\r\n\u00a0*\u00a0 and sends a 404 response (via sendError) otherwise.\r\n\u00a0* \u00a0\r\n\r\n\r\n\u00a0*\u00a0 Taken from Core Web Programming Java 2 Edition\r\n\u00a0*\u00a0 from Prentice Hall and Sun Microsystems Press,\r\n\u00a0*\u00a0 .\r\n\u00a0*\u00a0 May be freely used or adapted.\r\n\u00a0*\/\r\n\r\npublic class SearchEngines extends HttpServlet {\r\n\u00a0 public void doGet(HttpServletRequest request,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 HttpServletResponse response)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 throws ServletException, IOException {\r\n\u00a0\u00a0\u00a0 String searchString = request.getParameter(\"searchString\");\r\n\u00a0\u00a0\u00a0 if ((searchString == null) ||\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 (searchString.length() == 0)) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 reportProblem(response, \"Missing search string.\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 return;\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 \/\/ The URLEncoder changes spaces to \"+\" signs and other\r\n\u00a0\u00a0\u00a0 \/\/ non-alphanumeric characters to \"%XY\", where XY is the\r\n\u00a0\u00a0\u00a0 \/\/ hex value of the ASCII (or ISO Latin-1) character.\r\n\u00a0\u00a0\u00a0 \/\/ Browsers always URL-encode form values, so the\r\n\u00a0\u00a0\u00a0 \/\/ getParameter method decodes automatically. But since\r\n\u00a0\u00a0\u00a0 \/\/ we're just passing this on to another server, we need to\r\n\u00a0\u00a0\u00a0 \/\/ re-encode it.\r\n\u00a0\u00a0\u00a0 searchString = URLEncoder.encode(searchString);\r\n\u00a0\u00a0\u00a0 String numResults = request.getParameter(\"numResults\");\r\n\u00a0\u00a0\u00a0 if ((numResults == null) ||\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 (numResults.equals(\"0\")) ||\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 (numResults.length() == 0)) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 numResults = \"10\";\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 String searchEngine =\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 request.getParameter(\"searchEngine\");\r\n\u00a0\u00a0\u00a0 if (searchEngine == null) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 reportProblem(response, \"Missing search engine name.\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 return;\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 SearchSpec[] commonSpecs = SearchSpec.getCommonSpecs();\r\n\u00a0\u00a0\u00a0 for(int i=0; i\" + message + \"\");\r\n\u00a0 }\r\n\r\n\u00a0 public void doPost(HttpServletRequest request,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 HttpServletResponse response)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 throws ServletException, IOException {\r\n\u00a0\u00a0\u00a0 doGet(request, response);\r\n\u00a0 }\r\n}\r\n\r\n\r\n\r\nSearchSpec.java\r\n\r\npackage cwp;\r\n\r\n\/** Small class that encapsulates how to construct a\r\n\u00a0*\u00a0 search string for a particular search engine.\r\n\u00a0* \u00a0\r\n\r\n\r\n\u00a0*\u00a0 Taken from Core Web Programming Java 2 Edition\r\n\u00a0*\u00a0 from Prentice Hall and Sun Microsystems Press,\r\n\u00a0*\u00a0 May be freely used or adapted.\r\n\u00a0*\/\r\n\r\npublic class SearchSpec {\r\n\u00a0 private String name, baseURL, numResultsSuffix;\r\n\r\n\u00a0 private static SearchSpec[] commonSpecs =\r\n\u00a0\u00a0\u00a0 { new SearchSpec(\"google\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"http:\/\/www.google.com\/search?q=\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"&amp;num=\"),\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 new SearchSpec(\"infoseek\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"http:\/\/infoseek.go.com\/Titles?qt=\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"&amp;nh=\"),\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 new SearchSpec(\"lycos\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"http:\/\/lycospro.lycos.com\/cgi-bin\/\" +\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"pursuit?query=\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"&amp;maxhits=\"),\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 new SearchSpec(\"hotbot\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"http:\/\/www.hotbot.com\/?MT=\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"&amp;DC=\")\r\n\u00a0\u00a0\u00a0 };\r\n\r\n\u00a0 public SearchSpec(String name,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 String baseURL,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 String numResultsSuffix) {\r\n\u00a0\u00a0\u00a0 this.name = name;\r\n\u00a0\u00a0\u00a0 this.baseURL = baseURL;\r\n\u00a0\u00a0\u00a0 this.numResultsSuffix = numResultsSuffix;\r\n\u00a0 }\r\n\r\n\u00a0 public String makeURL(String searchString,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 String numResults) {\r\n\u00a0\u00a0\u00a0 return(baseURL + searchString +\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 numResultsSuffix + numResults);\r\n\u00a0 }\r\n\r\n\u00a0 public String getName() {\r\n\u00a0\u00a0\u00a0 return(name);\r\n\u00a0 }\r\n\r\n\u00a0 public static SearchSpec[] getCommonSpecs() {\r\n\u00a0\u00a0\u00a0 return(commonSpecs);\r\n\u00a0 }\r\n}\r\n\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>SearchEngines.java\u00a0 Servlet that redirects requests to various search engines. Uses the SearchSpec\u00a0 helper class. Accessed by means of SearchEngines.html. package cwp; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.net.*; \/** Servlet that takes a search string, number of results per \u00a0*\u00a0 page, and a search engine name, sending the query to \u00a0*\u00a0 that search engine. &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"http:\/\/bangla.sitestree.com\/?p=10170\">Continue reading<\/a><\/p>\n","protected":false},"author":130,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1417,1424],"tags":[706,308,1460,1457,285],"class_list":["post-10170","post","type-post","status-publish","format-standard","hentry","category-code-programming-samples--","category-javaj2eej2me","tag-code","tag-java","tag-search-engine","tag-servlet","tag-285","item-wrap"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":26535,"url":"http:\/\/bangla.sitestree.com\/?p=26535","url_meta":{"origin":10170,"position":0},"title":"SearchEngines.java  Servlet that redirects requests to various search engines. Uses the SearchSpec  helper class. Accessed by means of SearchEngines.html. #Programming Code Examples #Java\/J2EE\/J2ME #Servlet","author":"Author-Check- Article-or-Video","date":"April 27, 2021","format":false,"excerpt":"SearchEngines.java Servlet that redirects requests to various search engines. Uses the SearchSpec helper class. Accessed by means of SearchEngines.html. package cwp; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.net.*; \/** Servlet that takes a search string, number of results per * page, and a search engine name, sending the query\u2026","rel":"","context":"In &quot;FromSitesTree.com&quot;","block_context":{"text":"FromSitesTree.com","link":"http:\/\/bangla.sitestree.com\/?cat=1917"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":10181,"url":"http:\/\/bangla.sitestree.com\/?p=10181","url_meta":{"origin":10170,"position":1},"title":"ShowSession.java Servlet that uses session tracking to determine if the client is a repeat visitor. Uses the ServletUtilities class to simplify the DOCTYPE and HEAD output.","author":"","date":"August 21, 2015","format":false,"excerpt":"ShowSession.java Servlet that uses session tracking to determine if the client is a repeat visitor. Uses the ServletUtilities class to simplify the DOCTYPE and HEAD output. package cwp; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.net.*; import java.util.*; \/** Simple example of session tracking. * * Taken from Core Web\u2026","rel":"","context":"In &quot;Code . Programming Samples . \u09aa\u09cd\u09b0\u09cb\u0997\u09cd\u09b0\u09be\u09ae \u0989\u09a6\u09be\u09b9\u09b0\u09a8&quot;","block_context":{"text":"Code . Programming Samples . \u09aa\u09cd\u09b0\u09cb\u0997\u09cd\u09b0\u09be\u09ae \u0989\u09a6\u09be\u09b9\u09b0\u09a8","link":"http:\/\/bangla.sitestree.com\/?cat=1417"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":10162,"url":"http:\/\/bangla.sitestree.com\/?p=10162","url_meta":{"origin":10170,"position":2},"title":"ThreeParams.java Servlet that reads and displays three request (form) parameters. Uses the ServletUtilities class.","author":"","date":"August 16, 2015","format":false,"excerpt":"ThreeParams.java\u00a0 Servlet that reads and displays three request (form) parameters. Uses the ServletUtilities\u00a0 class. package cwp; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; \/** Simple servlet that reads three parameters from the \u00a0*\u00a0 form data. \u00a0* \u00a0 \u00a0*\u00a0 Taken from Core Web Programming Java 2 Edition \u00a0*\u00a0 from Prentice Hall and\u2026","rel":"","context":"In &quot;Code . Programming Samples . \u09aa\u09cd\u09b0\u09cb\u0997\u09cd\u09b0\u09be\u09ae \u0989\u09a6\u09be\u09b9\u09b0\u09a8&quot;","block_context":{"text":"Code . Programming Samples . \u09aa\u09cd\u09b0\u09cb\u0997\u09cd\u09b0\u09be\u09ae \u0989\u09a6\u09be\u09b9\u09b0\u09a8","link":"http:\/\/bangla.sitestree.com\/?cat=1417"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":26555,"url":"http:\/\/bangla.sitestree.com\/?p=26555","url_meta":{"origin":10170,"position":3},"title":"ShowSession.java  Servlet that uses session tracking to determine if the client is a repeat visitor. Uses the ServletUtilities  class to simplify the DOCTYPE and HEAD output. #Programming Code Examples #Java\/J2EE\/J2ME #Servlet","author":"Author-Check- Article-or-Video","date":"April 28, 2021","format":false,"excerpt":"ShowSession.java Servlet that uses session tracking to determine if the client is a repeat visitor. Uses the ServletUtilities class to simplify the DOCTYPE and HEAD output. package cwp; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.net.*; import java.util.*; \/** Simple example of session tracking. * * Taken from Core Web\u2026","rel":"","context":"In &quot;FromSitesTree.com&quot;","block_context":{"text":"FromSitesTree.com","link":"http:\/\/bangla.sitestree.com\/?cat=1917"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":26527,"url":"http:\/\/bangla.sitestree.com\/?p=26527","url_meta":{"origin":10170,"position":4},"title":"ThreeParams.java  Servlet that reads and displays three request (form) parameters. Uses the ServletUtilities  class. #Programming Code Examples #Java\/J2EE\/J2ME #Servlet","author":"Author-Check- Article-or-Video","date":"April 27, 2021","format":false,"excerpt":"ThreeParams.java Servlet that reads and displays three request (form) parameters. Uses the ServletUtilities class. package cwp; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; \/** Simple servlet that reads three parameters from the * form data. * * Taken from Core Web Programming Java 2 Edition * from Prentice Hall and Sun\u2026","rel":"","context":"In &quot;FromSitesTree.com&quot;","block_context":{"text":"FromSitesTree.com","link":"http:\/\/bangla.sitestree.com\/?cat=1917"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":10158,"url":"http:\/\/bangla.sitestree.com\/?p=10158","url_meta":{"origin":10170,"position":5},"title":"SimplerHelloWWW.java Servlet that uses ServletUtilities to simplify the generation of the DOCTYPE and HEAD part of the servlet.","author":"","date":"August 15, 2015","format":false,"excerpt":"SimplerHelloWWW.java\u00a0 Servlet that uses ServletUtilities\u00a0 to simplify the generation of the DOCTYPE and HEAD part of the servlet. package cwp; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; \/** Simple servlet that generates HTML. This variation of \u00a0*\u00a0 HelloWWW uses the ServletUtilities utility class \u00a0*\u00a0 to generate the DOCTYPE, HEAD, and TITLE.\u2026","rel":"","context":"In &quot;Code . Programming Samples . \u09aa\u09cd\u09b0\u09cb\u0997\u09cd\u09b0\u09be\u09ae \u0989\u09a6\u09be\u09b9\u09b0\u09a8&quot;","block_context":{"text":"Code . Programming Samples . \u09aa\u09cd\u09b0\u09cb\u0997\u09cd\u09b0\u09be\u09ae \u0989\u09a6\u09be\u09b9\u09b0\u09a8","link":"http:\/\/bangla.sitestree.com\/?cat=1417"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"http:\/\/bangla.sitestree.com\/index.php?rest_route=\/wp\/v2\/posts\/10170","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/bangla.sitestree.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/bangla.sitestree.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/bangla.sitestree.com\/index.php?rest_route=\/wp\/v2\/users\/130"}],"replies":[{"embeddable":true,"href":"http:\/\/bangla.sitestree.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=10170"}],"version-history":[{"count":2,"href":"http:\/\/bangla.sitestree.com\/index.php?rest_route=\/wp\/v2\/posts\/10170\/revisions"}],"predecessor-version":[{"id":10172,"href":"http:\/\/bangla.sitestree.com\/index.php?rest_route=\/wp\/v2\/posts\/10170\/revisions\/10172"}],"wp:attachment":[{"href":"http:\/\/bangla.sitestree.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10170"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/bangla.sitestree.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=10170"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/bangla.sitestree.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=10170"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}