⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 40.html

📁 写给JSP初级程序员的书
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<br>
   注意,该Servlet要用到前面给出的ServletUtilities.java。另外还要用到:PrimeList.java,用于在后台线程中创建一个素数的Vector;Primes.java,用于随机生成BigInteger类型的大数字,检查它们是否是素数。(此处略去PrimeList.java和Primes.java的代码。) <br>
package hall;<br>
<br>
import java.io.*;<br>
import javax.servlet.*;<br>
import javax.servlet.http.*;<br>
import java.util.*;<br>
<br>
public class PrimeNumbers extends HttpServlet {<br>
&nbsp;&nbsp;private static Vector primeListVector = new Vector();<br>
&nbsp;&nbsp;private static int maxPrimeLists = 30;<br>
&nbsp;&nbsp;<br>
&nbsp;&nbsp;public void doGet(HttpServletRequest request,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletResponse response)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throws ServletException, IOException {<br>
&nbsp;&nbsp;&nbsp;&nbsp;int numPrimes = ServletUtilities.getIntParameter(request, &quot;numPrimes&quot;, 50);<br>
&nbsp;&nbsp;&nbsp;&nbsp;int numDigits = ServletUtilities.getIntParameter(request, &quot;numDigits&quot;, 120);<br>
&nbsp;&nbsp;&nbsp;&nbsp;PrimeList primeList = findPrimeList(primeListVector, numPrimes, numDigits);<br>
&nbsp;&nbsp;&nbsp;&nbsp;if (primeList == null) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;primeList = new PrimeList(numPrimes, numDigits, true);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;synchronized(primeListVector) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (primeListVector.size() >= maxPrimeLists)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;primeListVector.removeElementAt(0);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;primeListVector.addElement(primeList);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;Vector currentPrimes = primeList.getPrimes();<br>
&nbsp;&nbsp;&nbsp;&nbsp;int numCurrentPrimes = currentPrimes.size();<br>
&nbsp;&nbsp;&nbsp;&nbsp;int numPrimesRemaining = (numPrimes - numCurrentPrimes);<br>
&nbsp;&nbsp;&nbsp;&nbsp;boolean isLastResult = (numPrimesRemaining == 0);<br>
&nbsp;&nbsp;&nbsp;&nbsp;if (!isLastResult) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setHeader(&quot;Refresh&quot;, &quot;5&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;response.setContentType(&quot;text/html&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;PrintWriter out = response.getWriter();<br>
&nbsp;&nbsp;&nbsp;&nbsp;String title = &quot;Some &quot; + numDigits + &quot;-Digit Prime Numbers&quot;;<br>
&nbsp;&nbsp;&nbsp;&nbsp;out.println(ServletUtilities.headWithTitle(title) +<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;<BODY BGCOLOR=\&quot;#FDF5E6\&quot;>\n&quot; +<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;<H2 ALIGN=CENTER>&quot; + title + &quot;</H2>\n&quot; +<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;<H3>Primes found with &quot; + numDigits +<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot; or more digits: &quot; + numCurrentPrimes + &quot;.</H3>&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;if (isLastResult)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.println(&quot;<B>Done searching.</B>&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;else<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.println(&quot;<B>Still looking for &quot; + numPrimesRemaining +<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot; more<BLINK>...</BLINK></B>&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;out.println(&quot;<OL>&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;for(int i=0; i<numCurrentPrimes; i++) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.println(&quot;&nbsp;&nbsp;<LI>&quot; + currentPrimes.elementAt(i));<br>
&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;out.println(&quot;</OL>&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;out.println(&quot;</BODY></HTML>&quot;);<br>
&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;public void doPost(HttpServletRequest request,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletResponse response)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throws ServletException, IOException {<br>
&nbsp;&nbsp;&nbsp;&nbsp;doGet(request, response);<br>
&nbsp;&nbsp;}<br>
<br>
&nbsp;&nbsp;// 检查是否存在同类型请求(已经完成,或者正在计算)。<br>
&nbsp;&nbsp;// 如存在,则返回现有结果而不是启动新的后台线程。<br>
&nbsp;&nbsp;private PrimeList findPrimeList(Vector primeListVector,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int numPrimes,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int numDigits) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;synchronized(primeListVector) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int i=0; i<primeListVector.size(); i++) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrimeList primes = (PrimeList)primeListVector.elementAt(i);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ((numPrimes == primes.numPrimes()) &amp;&amp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(numDigits == primes.numDigits()))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(primes);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(null);<br>
&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;}<br>
}<br>
<br>
<br>
<br>
<br>
   PrimeNumbers.html <br>
<!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;><br>
<HTML><br>
<HEAD><br>
&nbsp;&nbsp;<TITLE>大素数计算</TITLE><br>
</HEAD><br>
<CENTER><br>
<BODY BGCOLOR=&quot;#FDF5E6&quot;><br>
<FORM ACTION=&quot;/servlet/hall.PrimeNumbers&quot;><br>
&nbsp;&nbsp;<B>要计算几个素数:</B><br>
&nbsp;&nbsp;<INPUT TYPE=&quot;TEXT&quot; NAME=&quot;numPrimes&quot; VALUE=25 SIZE=4><BR><br>
&nbsp;&nbsp;<B>每个素数的位数:</B><br>
&nbsp;&nbsp;<INPUT TYPE=&quot;TEXT&quot; NAME=&quot;numDigits&quot; VALUE=150 SIZE=3><BR><br>
&nbsp;&nbsp;<INPUT TYPE=&quot;SUBMIT&quot; VALUE=&quot;开始计算&quot;><br>
</FORM><br>
</CENTER><br>
</BODY><br>
</HTML>      <br>   
      <br>   
        </td>
      </tr>
      <tr><td colspan=2 align=right class=t> <a href="http://www.chinajavaworld.com/doc/servlet-jsp/32.html" ></a>  <a href="39.html" tppabs="http://www.chinajavaworld.com/doc/servlet-jsp/39.html" ></a> <a href="41.html" tppabs="http://www.chinajavaworld.com/doc/servlet-jsp/41.html" ></a>       </td></tr>
    </td>
  </tr>
</div>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -