{"id":10173,"date":"2015-08-18T03:57:03","date_gmt":"2015-08-18T07:57:03","guid":{"rendered":"http:\/\/bangla.salearningschool.com\/?p=10173"},"modified":"2015-08-01T09:14:36","modified_gmt":"2015-08-01T13:14:36","slug":"primenumbers-java-servlet-that-processes-a-request-to-generate-n-prime-numbers-each-with-at-least-m-digits-if-these-results-are-not-complete-it-sends-a-refresh-header-instructing-the-browser-to-ask","status":"publish","type":"post","link":"http:\/\/bangla.sitestree.com\/?p=10173","title":{"rendered":"PrimeNumbers.java Servlet that processes a request to generate n prime numbers, each with at least m digits. If these results are not complete, it sends a Refresh header instructing the browser to ask for new results a little while later. Uses the Primes"},"content":{"rendered":"<p>PrimeNumbers.java\u00a0 Servlet that processes a request to generate n prime numbers, each with at least m digits. If these results are not complete, it sends a Refresh header instructing the browser to ask for new results a little while later. Uses the Primes, PrimeList, and ServletUtilities\u00a0 classes.<\/p>\n<p>&nbsp;<\/p>\n<pre>package cwp;\r\n\r\nimport java.io.*;\r\nimport javax.servlet.*;\r\nimport javax.servlet.http.*;\r\nimport java.util.*;\r\n\r\n\/** Servlet that processes a request to generate n\r\n\u00a0*\u00a0 prime numbers, each with at least m digits.\r\n\u00a0*\u00a0 It performs the calculations in a low-priority background\r\n\u00a0*\u00a0 thread, returning only the results it has found so far.\r\n\u00a0*\u00a0 If these results are not complete, it sends a Refresh\r\n\u00a0*\u00a0 header instructing the browser to ask for new results a\r\n\u00a0*\u00a0 little while later. It also maintains a list of a\r\n\u00a0*\u00a0 small number of previously calculated prime lists\r\n\u00a0*\u00a0 to return immediately to anyone who supplies the\r\n\u00a0*\u00a0 same n and m as a recent completed computation.\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 PrimeNumbers extends HttpServlet {\r\n\u00a0 private Vector primeListVector = new Vector();\r\n\u00a0 private int maxPrimeLists = 30;\r\n\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 int numPrimes =\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 ServletUtilities.getIntParameter(request,\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\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"numPrimes\", 50);\r\n\u00a0\u00a0\u00a0 int numDigits =\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 ServletUtilities.getIntParameter(request,\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\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"numDigits\", 120);\r\n\u00a0\u00a0\u00a0 PrimeList primeList =\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 findPrimeList(primeListVector, numPrimes, numDigits);\r\n\u00a0\u00a0\u00a0 if (primeList == null) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 primeList = new PrimeList(numPrimes, numDigits, true);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Multiple servlet request threads share the instance\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ variables (fields) of PrimeNumbers. So\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ synchronize all access to servlet fields.\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 synchronized(primeListVector) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if (primeListVector.size() &gt;= maxPrimeLists)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 primeListVector.removeElementAt(0);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 primeListVector.addElement(primeList);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 Vector currentPrimes = primeList.getPrimes();\r\n\u00a0\u00a0\u00a0 int numCurrentPrimes = currentPrimes.size();\r\n\u00a0\u00a0\u00a0 int numPrimesRemaining = (numPrimes - numCurrentPrimes);\r\n\u00a0\u00a0\u00a0 boolean isLastResult = (numPrimesRemaining == 0);\r\n\u00a0\u00a0\u00a0 if (!isLastResult) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 response.setHeader(\"Refresh\", \"5\");\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 response.setContentType(\"text\/html\");\r\n\u00a0\u00a0\u00a0 PrintWriter out = response.getWriter();\r\n\u00a0\u00a0\u00a0 String title = \"Some \" + numDigits + \"-Digit Prime Numbers\";\r\n\u00a0\u00a0\u00a0 out.println(ServletUtilities.headWithTitle(title) +\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"\\n\" +\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"\r\n\" + title + \"\r\n\\n\" +\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"\r\nPrimes found with \" + numDigits +\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \" or more digits: \" + numCurrentPrimes +\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \".\r\n\");\r\n\u00a0\u00a0\u00a0 if (isLastResult)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 out.println(\"Done searching.\");\r\n\u00a0\u00a0\u00a0 else\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 out.println(\"Still looking for \" + numPrimesRemaining +\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \" more...\");\r\n\u00a0\u00a0\u00a0 out.println(\"\r\n\r\n\u00a0\u00a0\u00a0 \");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 for(int i=0; i\" + currentPrimes.elementAt(i));\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 out.println(\"\r\n\r\n\");\r\n\u00a0\u00a0\u00a0 out.println(\"\");\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\u00a0 \/\/ See if there is an existing ongoing or completed\r\n\u00a0 \/\/ calculation with the same number of primes and number\r\n\u00a0 \/\/ of digits per prime. If so, return those results instead\r\n\u00a0 \/\/ of starting a new background thread. Keep this list\r\n\u00a0 \/\/ small so that the Web server doesn't use too much memory.\r\n\u00a0 \/\/ Synchronize access to the list since there may be\r\n\u00a0 \/\/ multiple simultaneous requests.\r\n\r\n\u00a0 private PrimeList findPrimeList(Vector primeListVector,\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\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 int numPrimes,\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\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 int numDigits) {\r\n\u00a0\u00a0\u00a0 synchronized(primeListVector) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 for(int i=0; i\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 Primes {\r\n\u00a0 \/\/ Note that BigInteger.ZERO was new in JDK 1.2, and 1.1\r\n\u00a0 \/\/ code is being used to support the most servlet engines.\r\n\u00a0 private static final BigInteger ZERO = new BigInteger(\"0\");\r\n\u00a0 private static final BigInteger ONE = new BigInteger(\"1\");\r\n\u00a0 private static final BigInteger TWO = new BigInteger(\"2\");\r\n\r\n\u00a0 \/\/ Likelihood of false prime is less than 1\/2^ERR_VAL\r\n\u00a0 \/\/ Assumedly BigInteger uses the Miller-Rabin test or\r\n\u00a0 \/\/ equivalent, and thus is NOT fooled by Carmichael numbers.\r\n\u00a0 \/\/ See section 33.8 of Cormen et al's Introduction to\r\n\u00a0 \/\/ Algorithms for details.\r\n\u00a0 private static final int ERR_VAL = 100;\r\n\r\n\u00a0 public static BigInteger nextPrime(BigInteger start) {\r\n\u00a0\u00a0\u00a0 if (isEven(start))\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 start = start.add(ONE);\r\n\u00a0\u00a0\u00a0 else\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 start = start.add(TWO);\r\n\u00a0\u00a0\u00a0 if (start.isProbablePrime(ERR_VAL))\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 return(start);\r\n\u00a0\u00a0\u00a0 else\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 return(nextPrime(start));\r\n\u00a0 }\r\n\r\n\u00a0 private static boolean isEven(BigInteger n) {\r\n\u00a0\u00a0\u00a0 return(n.mod(TWO).equals(ZERO));\r\n\u00a0 }\r\n\r\n\u00a0 private static StringBuffer[] digits =\r\n\u00a0\u00a0\u00a0 { new StringBuffer(\"0\"), new StringBuffer(\"1\"),\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 new StringBuffer(\"2\"), new StringBuffer(\"3\"),\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 new StringBuffer(\"4\"), new StringBuffer(\"5\"),\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 new StringBuffer(\"6\"), new StringBuffer(\"7\"),\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 new StringBuffer(\"8\"), new StringBuffer(\"9\") };\r\n\r\n\u00a0 private static StringBuffer randomDigit() {\r\n\u00a0\u00a0\u00a0 int index = (int)Math.floor(Math.random() * 10);\r\n\u00a0\u00a0\u00a0 return(digits[index]);\r\n\u00a0 }\r\n\r\n\u00a0 public static BigInteger random(int numDigits) {\r\n\u00a0\u00a0\u00a0 StringBuffer s = new StringBuffer(\"\");\r\n\u00a0\u00a0\u00a0 for(int i=0; i 0)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 numDigits = Integer.parseInt(args[0]);\r\n\u00a0\u00a0\u00a0 else\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 numDigits = 150;\r\n\u00a0\u00a0\u00a0 BigInteger start = random(numDigits);\r\n\u00a0\u00a0\u00a0 for(int i=0; i&lt;50; i++) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 start = nextPrime(start);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 System.out.println(\"Prime \" + i + \" = \" + start);\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0 }\r\n}\r\n\r\n\r\n\r\nPrimeList.java\r\npackage cwp;\r\n\r\nimport java.util.*;\r\nimport java.math.BigInteger;\r\n\r\n\/** Creates a Vector of large prime numbers, usually in\r\n\u00a0*\u00a0 a low-priority background thread. Provides a few small\r\n\u00a0*\u00a0 thread-safe access methods.\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 PrimeList implements Runnable {\r\n\u00a0 private Vector primesFound;\r\n\u00a0 private int numPrimes, numDigits;\r\n\r\n\u00a0 \/** Finds numPrimes prime numbers, each of which are\r\n\u00a0\u00a0 *\u00a0 numDigits long or longer. You can set it to only\r\n\u00a0\u00a0 *\u00a0 return when done, or have it return immediately,\r\n\u00a0\u00a0 *\u00a0 and you can later poll it to see how far it\r\n\u00a0\u00a0 *\u00a0 has gotten.\r\n\u00a0\u00a0 *\/\r\n\r\n\u00a0 public PrimeList(int numPrimes, int numDigits,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 boolean runInBackground) {\r\n\u00a0\u00a0\u00a0 \/\/ Using Vector instead of ArrayList\r\n\u00a0\u00a0\u00a0 \/\/ to support JDK 1.1 servlet engines\r\n\u00a0\u00a0\u00a0 primesFound = new Vector(numPrimes);\r\n\u00a0\u00a0\u00a0 this.numPrimes = numPrimes;\r\n\u00a0\u00a0\u00a0 this.numDigits = numDigits;\r\n\u00a0\u00a0\u00a0 if (runInBackground) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 Thread t = new Thread(this);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Use low priority so you don't slow down server.\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 t.setPriority(Thread.MIN_PRIORITY);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 t.start();\r\n\u00a0\u00a0\u00a0 } else {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 run();\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0 }\r\n\r\n\u00a0 public void run() {\r\n\u00a0\u00a0\u00a0 BigInteger start = Primes.random(numDigits);\r\n\u00a0\u00a0\u00a0 for(int i=0; i\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 ServletUtilities {\r\n\u00a0 public static final String DOCTYPE =\r\n\u00a0\u00a0\u00a0 \"\";\r\n\r\n\u00a0 public static String headWithTitle(String title) {\r\n\u00a0\u00a0\u00a0 return(DOCTYPE + \"\\n\" +\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"\\n\" +\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"\\n\");\r\n\u00a0 }\r\n\r\n\u00a0 \/** Read a parameter with the specified name, convert it\r\n\u00a0\u00a0 *\u00a0 to an int, and return it. Return the designated default\r\n\u00a0\u00a0 *\u00a0 value if the parameter doesn't exist or if it is an\r\n\u00a0\u00a0 *\u00a0 illegal integer format.\r\n\u00a0 *\/\r\n\r\n\u00a0 public static int getIntParameter(HttpServletRequest request,\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\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 String paramName,\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\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 int defaultValue) {\r\n\u00a0\u00a0\u00a0 String paramString = request.getParameter(paramName);\r\n\u00a0\u00a0\u00a0 int paramValue;\r\n\u00a0\u00a0\u00a0 try {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 paramValue = Integer.parseInt(paramString);\r\n\u00a0\u00a0\u00a0 } catch(NumberFormatException nfe) { \/\/ null or bad format\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 paramValue = defaultValue;\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 return(paramValue);\r\n\u00a0 }\r\n\r\n\u00a0 \/** Given an array of Cookies, a name, and a default value,\r\n\u00a0\u00a0 *\u00a0 this method tries to find the value of the cookie with\r\n\u00a0\u00a0 *\u00a0 the given name. If there is no cookie matching the name\r\n\u00a0\u00a0 *\u00a0 in the array, then the default value is returned instead.\r\n\u00a0\u00a0 *\/\r\n\r\n\u00a0 public static String getCookieValue(Cookie[] cookies,\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\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 String cookieName,\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\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 String defaultValue) {\r\n\u00a0\u00a0\u00a0 if (cookies != null) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 for(int i=0; i' with\r\n\u00a0\u00a0 *\u00a0 '&gt;', and (to handle cases that occur inside attribute\r\n\u00a0\u00a0 *\u00a0 values), all occurrences of double quotes with\r\n\u00a0\u00a0 *\u00a0 '\"' and all occurrences of '&amp;' with '&amp;'.\r\n\u00a0\u00a0 *\u00a0 Without such filtering, an arbitrary string\r\n\u00a0\u00a0 *\u00a0 could not safely be inserted in a Web page.\r\n\u00a0\u00a0 *\/\r\n\r\n\u00a0 public static String filter(String input) {\r\n\u00a0\u00a0\u00a0 StringBuffer filtered = new StringBuffer(input.length());\r\n\u00a0\u00a0\u00a0 char c;\r\n\u00a0\u00a0\u00a0 for(int i=0; i') {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 filtered.append(\"&gt;\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 } else if (c == '\"') {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 filtered.append(\"\"\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 } else if (c == '&amp;') {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 filtered.append(\"&amp;\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 } else {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 filtered.append(c);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 return(filtered.toString());\r\n\u00a0 }\r\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>PrimeNumbers.java\u00a0 Servlet that processes a request to generate n prime numbers, each with at least m digits. If these results are not complete, it sends a Refresh header instructing the browser to ask for new results a little while later. Uses the Primes, PrimeList, and ServletUtilities\u00a0 classes. &nbsp; package cwp; import java.io.*; import javax.servlet.*; import &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"http:\/\/bangla.sitestree.com\/?p=10173\">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,1457,285],"class_list":["post-10173","post","type-post","status-publish","format-standard","hentry","category-code-programming-samples--","category-javaj2eej2me","tag-code","tag-java","tag-servlet","tag-285","item-wrap"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":26547,"url":"http:\/\/bangla.sitestree.com\/?p=26547","url_meta":{"origin":10173,"position":0},"title":"PrimeNumbers.java  Servlet that processes a request to generate n prime numbers, each with at least m digits. If these results are not complete, it sends a Refresh header instructing the browser to ask for new results a little while later. Uses the Primes #Programming Code Examples #Java\/J2EE\/J2ME #Servlet","author":"Author-Check- Article-or-Video","date":"April 28, 2021","format":false,"excerpt":"PrimeNumbers.java Servlet that processes a request to generate n prime numbers, each with at least m digits. If these results are not complete, it sends a Refresh header instructing the browser to ask for new results a little while later. Uses the Primes, PrimeList, and ServletUtilities classes. package cwp; import\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":26531,"url":"http:\/\/bangla.sitestree.com\/?p=26531","url_meta":{"origin":10173,"position":1},"title":"ShowRequestHeaders.java  Servlet that shows all request headers sent by browser in current request. #Programming Code Examples #Java\/J2EE\/J2ME #Servlet","author":"Author-Check- Article-or-Video","date":"April 27, 2021","format":false,"excerpt":"ShowRequestHeaders.java Servlet that shows all request headers sent by browser in current request. package cwp; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; \/** Shows all the request headers sent on this request. * * Taken from Core Web Programming Java 2 Edition * from Prentice Hall and Sun Microsystems\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":10166,"url":"http:\/\/bangla.sitestree.com\/?p=10166","url_meta":{"origin":10173,"position":2},"title":"ShowRequestHeaders.java Servlet that shows all request headers sent by browser in current request.","author":"","date":"August 17, 2015","format":false,"excerpt":"ShowRequestHeaders.java Servlet that shows all request headers sent by browser in current request. package cwp; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; \/** Shows all the request headers sent on this request. * * Taken from Core Web Programming Java 2 Edition * from Prentice Hall and Sun Microsystems\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":26527,"url":"http:\/\/bangla.sitestree.com\/?p=26527","url_meta":{"origin":10173,"position":3},"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":10262,"url":"http:\/\/bangla.sitestree.com\/?p=10262","url_meta":{"origin":10173,"position":4},"title":"ThreadedRSAKey.java Illustrates converting a method in an existing class from a single-threaded method to a multi-threaded method.","author":"","date":"August 26, 2015","format":false,"excerpt":"ThreadedRSAKey.java\u00a0 Illustrates converting a method in an existing class from a single-threaded method to a multi-threaded method. In this example, RSAKey\u00a0 computes an RSA public-private key pair, where the key size has a specified number of digits. As large prime numbers require considerable CPU time, ThreadedRSAKey converts the original computeKey\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":26523,"url":"http:\/\/bangla.sitestree.com\/?p=26523","url_meta":{"origin":10173,"position":5},"title":"SimplerHelloWWW.java  Servlet that uses ServletUtilities  to simplify the generation of the DOCTYPE and HEAD part of the servlet. #Programming Code Examples #Java\/J2EE\/J2ME #Servlet","author":"Author-Check- Article-or-Video","date":"April 27, 2021","format":false,"excerpt":"SimplerHelloWWW.java Servlet that uses ServletUtilities 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 * HelloWWW uses the ServletUtilities utility class * to generate the DOCTYPE, HEAD, and TITLE.\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":[]}],"_links":{"self":[{"href":"http:\/\/bangla.sitestree.com\/index.php?rest_route=\/wp\/v2\/posts\/10173","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=10173"}],"version-history":[{"count":1,"href":"http:\/\/bangla.sitestree.com\/index.php?rest_route=\/wp\/v2\/posts\/10173\/revisions"}],"predecessor-version":[{"id":10174,"href":"http:\/\/bangla.sitestree.com\/index.php?rest_route=\/wp\/v2\/posts\/10173\/revisions\/10174"}],"wp:attachment":[{"href":"http:\/\/bangla.sitestree.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10173"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/bangla.sitestree.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=10173"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/bangla.sitestree.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=10173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}