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

📄 aspcool_com--八、设置http应答头.htm

📁 --八、设置HTTP应答头.
💻 HTM
📖 第 1 页 / 共 3 页
字号:
            <BR>&nbsp;&nbsp;   
            下面这个Servlet用来计算大素数。因为计算非常大的数字(例如500位)可能要花不少时间,所以Servlet将立即返回已经找到的结果,同时在后台继续计算。后台计算使用一个优先级较低的线程以避免过多地影响Web服务器的性能。如果计算还没有完成,Servlet通过发送Refresh头指示浏览器在几秒之后继续请求新的内容。 
            <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;   
            注意,本例除了说明HTTP应答头的用处之外,还显示了Servlet的另外两个很有价值的功能。首先,它表明Servlet能够处理多个并发的连接,每个都有自己的线程。Servlet维护了一份已有素数计算请求的Vector表,通过查找素数个数(素数列表的长度)和数字个数(每个素数的长度)将当前请求和已有请求相匹配,把所有这些请求同步到这个列表上。第二,本例证明,在Servlet中维持请求之间的状态信息是非常容易的。维持状态信息在传统的CGI编程中是一件很麻烦的事情。由于维持了状态信息,浏览器能够在刷新页面时访问到正在进行的计算过程,同时也使得Servlet能够保存一个有关最近请求结果的列表,当一个新的请求指定了和最近请求相同的参数时可以立即返回结果。 
            <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;   PrimeNumbers.java 
            <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;   
            注意,该Servlet要用到前面给出的ServletUtilities.java。另外还要用到:PrimeList.java,用于在后台线程中创建一个素数的Vector;Primes.java,用于随机生成BigInteger类型的大数字,检查它们是否是素数。(此处略去PrimeList.java和Primes.java的代码。) 
            <BR>&nbsp;&nbsp;package hall; <BR>&nbsp;&nbsp; 
            <BR>&nbsp;&nbsp;import java.io.*; <BR>&nbsp;&nbsp;import 
            javax.servlet.*; <BR>&nbsp;&nbsp;import javax.servlet.http.*; 
            <BR>&nbsp;&nbsp;import java.util.*; <BR>&nbsp;&nbsp; 
            <BR>&nbsp;&nbsp;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; 
            HttpServletResponse response) <BR>&nbsp;&nbsp; throws 
            ServletException, IOException { <BR>&nbsp;&nbsp; int numPrimes = 
            ServletUtilities.getIntParameter(request, "numPrimes", 50); 
            <BR>&nbsp;&nbsp; int numDigits = 
            ServletUtilities.getIntParameter(request, "numDigits", 120); 
            <BR>&nbsp;&nbsp; PrimeList primeList = 
            findPrimeList(primeListVector, numPrimes, numDigits); 
            <BR>&nbsp;&nbsp; if (primeList == null) { <BR>&nbsp;&nbsp; primeList 
            = new PrimeList(numPrimes, numDigits, true); <BR>&nbsp;&nbsp; 
            synchronized(primeListVector) { <BR>&nbsp;&nbsp; if 
            (primeListVector.size() >= maxPrimeLists) <BR>&nbsp;&nbsp; 
            primeListVector.removeElementAt(0); <BR>&nbsp;&nbsp; 
            primeListVector.addElement(primeList); <BR>&nbsp;&nbsp; } 
            <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; Vector currentPrimes = 
            primeList.getPrimes(); <BR>&nbsp;&nbsp; int numCurrentPrimes = 
            currentPrimes.size(); <BR>&nbsp;&nbsp; int numPrimesRemaining = 
            (numPrimes - numCurrentPrimes); <BR>&nbsp;&nbsp; boolean 
            isLastResult = (numPrimesRemaining == 0); <BR>&nbsp;&nbsp; if 
            (!isLastResult) { <BR>&nbsp;&nbsp; response.setHeader("Refresh", 
            "5"); <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; 
            response.setContentType("text/html"); <BR>&nbsp;&nbsp; PrintWriter 
            out = response.getWriter(); <BR>&nbsp;&nbsp; String title = "Some " 
            + numDigits + "-Digit Prime Numbers"; <BR>&nbsp;&nbsp; 
            out.println(ServletUtilities.headWithTitle(title) + <BR>&nbsp;&nbsp; 
            "<BODY BGCOLOR=\"#FDF5E6\">\n" + <BR>&nbsp;&nbsp; "<H2 
            ALIGN=CENTER>" + title + "</H2>\n" + <BR>&nbsp;&nbsp; "<H3>Primes 
            found with " + numDigits + <BR>&nbsp;&nbsp; " or more digits: " + 
            numCurrentPrimes + ".</H3>"); <BR>&nbsp;&nbsp; if (isLastResult) 
            <BR>&nbsp;&nbsp; out.println("<B>Done searching.</B>"); 
            <BR>&nbsp;&nbsp; else <BR>&nbsp;&nbsp; out.println("<B>Still looking 
            for " + numPrimesRemaining + <BR>&nbsp;&nbsp; " 
            more<BLINK>...</BLINK></B>"); <BR>&nbsp;&nbsp; out.println("<OL>"); 
            <BR>&nbsp;&nbsp; for(int i=0; i<numCurrentPrimes; i++) { 
            <BR>&nbsp;&nbsp; out.println(" <LI>" + currentPrimes.elementAt(i)); 
            <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; out.println("</OL>"); 
            <BR>&nbsp;&nbsp; out.println("</BODY></HTML>"); <BR>&nbsp;&nbsp; } 
            <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; public void 
            doPost(HttpServletRequest request, <BR>&nbsp;&nbsp; 
            HttpServletResponse response) <BR>&nbsp;&nbsp; throws 
            ServletException, IOException { <BR>&nbsp;&nbsp; doGet(request, 
            response); <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; // 
            检查是否存在同类型请求(已经完成,或者正在计算)。 <BR>&nbsp;&nbsp; // 
            如存在,则返回现有结果而不是启动新的后台线程。 <BR>&nbsp;&nbsp; private PrimeList 
            findPrimeList(Vector primeListVector, <BR>&nbsp;&nbsp; int 
            numPrimes, <BR>&nbsp;&nbsp; int numDigits) { <BR>&nbsp;&nbsp; 
            synchronized(primeListVector) { <BR>&nbsp;&nbsp; for(int i=0; 
            i<primeListVector.size(); i++) { <BR>&nbsp;&nbsp; PrimeList primes = 
            (PrimeList)primeListVector.elementAt(i); <BR>&nbsp;&nbsp; if 
            ((numPrimes == primes.numPrimes()) &amp;&amp; <BR>&nbsp;&nbsp; 
            (numDigits == primes.numDigits())) <BR>&nbsp;&nbsp; return(primes); 
            <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; return(null); <BR>&nbsp;&nbsp; } 
            <BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp;} <BR>&nbsp;&nbsp; 
            <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; 
            <BR>&nbsp;&nbsp;   PrimeNumbers.html <BR>&nbsp;&nbsp;<!DOCTYPE HTML 
            PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
            <BR>&nbsp;&nbsp;<HTML> <BR>&nbsp;&nbsp;<HEAD> <BR>&nbsp;&nbsp; 
            <TITLE>大素数计算</TITLE> <BR>&nbsp;&nbsp;</HEAD> 
            <BR>&nbsp;&nbsp;<CENTER> <BR>&nbsp;&nbsp;<BODY BGCOLOR="#FDF5E6"> 
            <BR>&nbsp;&nbsp;<FORM ACTION="/servlet/hall.PrimeNumbers"> 
            <BR>&nbsp;&nbsp; <B>要计算几个素数:</B> <BR>&nbsp;&nbsp; <INPUT TYPE="TEXT" 
            NAME="numPrimes" VALUE=25 SIZE=4><BR> <BR>&nbsp;&nbsp; 
            <B>每个素数的位数:</B> <BR>&nbsp;&nbsp; <INPUT TYPE="TEXT" NAME="numDigits" 
            VALUE=150 SIZE=3><BR> <BR>&nbsp;&nbsp; <INPUT TYPE="SUBMIT" 
            VALUE="开始计算"> <BR>&nbsp;&nbsp;</FORM> <BR>&nbsp;&nbsp;</CENTER> 
            <BR>&nbsp;&nbsp;</BODY> <BR>&nbsp;&nbsp;</HTML> <BR>&nbsp;&nbsp; 
            <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; 
      </P></TD></TR></TBODY></TABLE>
      <TABLE cellSpacing=0 cellPadding=0 width="100%" bgColor=#ffcc99 
        border=0><TBODY>
        <TR>
          <TD height=24>
            <CENTER>相关文章</CENTER></TD></TR></TBODY></TABLE>
      <TABLE cellSpacing=1 cellPadding=0 width="100%" align=top bgColor=#ffffcc 
      border=0>
        <TBODY>
        <TR>
          <TD vAlign=top width="50%">前1篇&nbsp;<A 
            href="http://www.aspcool.com/lanmu/dot.asp?ID=337&amp;bbsuser=jsp" 
            target=_blank>七、HTTP应答状态</A> <BR>前2篇&nbsp;<A 
            href="http://www.aspcool.com/lanmu/dot.asp?ID=336&amp;bbsuser=jsp" 
            target=_blank>六、访问CGI变量</A> <BR>前3篇&nbsp;<A 
            href="http://www.aspcool.com/lanmu/dot.asp?ID=335&amp;bbsuser=jsp" 
            target=_blank>五、读取HTTP请求头</A> <BR>前4篇&nbsp;<A 
            href="http://www.aspcool.com/lanmu/dot.asp?ID=334&amp;bbsuser=jsp" 
            target=_blank>四、处理表单数据</A> <BR></TD>
          <TD vAlign=top width="50%">后1篇&nbsp;<A 
            href="http://www.aspcool.com/lanmu/dot.asp?ID=339&amp;bbsuser=jsp" 
            target=_blank>九、处理Cookie</A> <BR>后2篇&nbsp;<A 
            href="http://www.aspcool.com/lanmu/dot.asp?ID=340&amp;bbsuser=jsp" 
            target=_blank>十、会话状态</A> <BR>后3篇&nbsp;<A 
            href="http://www.aspcool.com/lanmu/dot.asp?ID=341&amp;bbsuser=jsp" 
            target=_blank>十一、JSP及语法概要</A> <BR></TD></TR></TBODY></TABLE><BR>
      <CENTER><A 
      href="http://www.aspcool.com/lanmu/republic.asp?ID=338&amp;bbsuser=jsp&amp;motive=八、设置HTTP应答头">发表评论</A> 
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A 
      href="http://www.aspcool.com/lanmu/register.asp">注册新用户</A></CENTER><BR>
      <TABLE cellSpacing=0 cellPadding=0 width="100%" bgColor=#ff8080 
        border=0><TBODY>
        <TR>
          <TD width="50%" height=24>
            <CENTER>对该文的评论</CENTER></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>
<SCRIPT language=JavaScript 
src="C:\Documents and Settings\selin\桌面\ASPcool_com--八、设置HTTP应答头.files\ads(1).htm" 
type=text/JavaScript> </SCRIPT>
<BR><BR>
<TABLE cellSpacing=0 cellPadding=0 width=768 bgColor=#ffe7ce border=0>
  <TBODY>
  <TR>
    <TD>
      <P align=right><A href="http://www.aspcool.com/">返回首页</A>&nbsp;&nbsp;<A 
      href="javascript:window.close()">关闭窗口</A></P></TD></TR></TBODY></TABLE>
<TABLE height=27 cellSpacing=0 cellPadding=0 width=768 border=0>
  <TBODY>
  <TR bgColor=#c4ecff>
    <TD width="100%">
      <P align=left><STRONG><FONT color=#6f6fb7>&nbsp;导航</FONT></STRONG> 
      &gt;&gt; <A href="http://www.aspcool.com/">ASP酷首页</A>-<A 
      href="http://www.chaxiu.com/">茶秀虚拟社区</A>-<A 
      href="http://www.aspcool.com/freebbs/apply.asp">申请BBS</A>-<A 
      href="http://www.aspcool.com/lanmu/mybook.htm">免费代码教程</A>- <A 
      href="http://www.aspcool.com/guestbook/apply.asp">申请留言板</A> -<A 
      href="http://www.aspcool.com/lanmu/browse.asp?bbsuser=jsp"> JSP教程专栏</A> 
      </P></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=773 bgColor=#ffffff border=0>
  <TBODY>
  <TR>
    <TD><A href="http://www.aspcool.com/"><IMG height=60 
      src="ASPcool_com--八、设置HTTP应答头.files/top.gif" width=140 border=0></A></TD>
    <TD width=10></TD>
    <TD align=left>
      <CENTER><IFRAME name=inpop marginWidth=0 marginHeight=0 
      src="ASPcool_com--八、设置HTTP应答头.files/ad.htm" frameBorder=0 width=468 
      scrolling=no height=60 0?></IFRAME></CENTER></TD>
    <TD width=10></TD>
    <TD align=right width=150>
      <DIV align=center><A href="http://www.aspcool.com/"><IMG height=60 
      src="ASPcool_com--八、设置HTTP应答头.files/top.gif" width=140 border=0></A> 
    </DIV></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=0 width=773 align=center bgColor=#3366cc 
border=0>
  <TBODY>
  <TR>
    <TD>&nbsp;</TD></TR></TBODY></TABLE><BR>
<CENTER><A href="http://www.aspcool.com/about.asp">关于本站<A> - <A 
href="http://www.aspcool.com/ads.asp">广告联系<A> - <A 
href="http://bbs.aspcool.com/">技术论坛<A> - <A 
href="http://www.aspcool.com/help.asp">使用说明<A> - <A 
href="http://www.aspcool.com/copyright.asp">版权说明<A> - <A 
href="http://www.aspcool.com/link.asp">联系方式<A> 
<P class=page align=center>&copy; 2003 版权所有 ASP酷技术网(<A href="http://www.aspcool.com/" 
target=_blank>http://www.aspcool.com/</A>) <BR>技术问题请到<A 
href="http://bbs.aspcool.com/" target=_blank>技术论坛</A> <A 
href="http://blog.joycode.com/tim/contact.aspx" target=_blank>给站长发信</A><BR></P>
<SCRIPT language=javascript>
   scroll(0,110)
</SCRIPT>

<SCRIPT src="ASPcool_com--八、设置HTTP应答头.files/adleft.js"></SCRIPT>

<SCRIPT src="ASPcool_com--八、设置HTTP应答头.files/adright.js"></SCRIPT>
</CENTER></CENTER></CENTER></CENTER></BODY></HTML>

⌨️ 快捷键说明

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