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

📄

📁 清华版的jsp基础程序 对新手很有用
💻
字号:
标准化考试(效果如图4.28所示)
ttt.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import ="java.io.*" %>
<%@ page import ="java.util.*" %>
<%!
  String answer=null;//存放答案用的字符串。
 //对字符串进行回压流处理的方法: 
public String getString(String content)
  { try{  StringReader in=new StringReader(content) ;//指向字符串的字符流。
          PushbackReader push=new PushbackReader(in); //回压流
          StringBuffer stringbuffer=new StringBuffer(); //缓冲字符串对象。
          int c; 
          char b[]=new char[1];              
          while ( (c=push.read(b,0,1))!=-1)//读取1个字符放入字符数组b。 
            { String s=new String(b);
              if(s.equals("<"))        //回压的条件  
               {  push.unread('&');
                  push.read(b,0,1); //push读出被回压的字符字节,放入数组b.
                  stringbuffer.append(new String(b));
                  push.unread('L');
                  push.read(b,0,1); //push读出被回压的字符字节,放入数组b.
                  stringbuffer.append(new String(b));
                  push.unread('T');
                  push.read(b,0,1); //push读出被回压的字符字节,放入数组b.
                  stringbuffer.append(new String(b));
                }
              else if(s.equals(">"))        //回压的条件  
               {  push.unread('&');
                  push.read(b,0,1); //push读出被回压的字符字节,放入数组b.
                  stringbuffer.append(new String(b));
                  push.unread('G');
                  push.read(b,0,1); //push读出被回压的字符字节,放入数组b.
                  stringbuffer.append(new String(b));
                  push.unread('T');
                  push.read(b,0,1); //push读出被回压的字符字节,放入数组b.
                  stringbuffer.append(new String(b));
               }
              else if(s.equals("\n"))        
               {  stringbuffer.append("<BR>");
               }
              else
               { stringbuffer.append(s);
               }
            }
          push.close();
          in.close();
          return new String(stringbuffer); //返回处理后的字符串。
      }
    catch(IOException e)
      {return content=new String("不能读取内容");
      }   
 }
  %>
  <%  String s=request.getParameter("g"); //获取客户提交的信息(是否重新读取文件)
         if(s==null)
            {s="";
            }
      byte b[]=s.getBytes("ISO-8859-1");
       s=new String(b);
     File f=null;
     FileReader in=null;
     BufferedReader buffer=null;
     Integer number=new Integer(0); //初始题号。
     Integer score=new Integer(0);//初始分数。
     if(session.getCreationTime()-session.getLastAccessedTime()==0) //当第一次请求该页面时,建立和文件的输入流连接。
      {  f=new File("f:/2000","English.txt");
         in=new FileReader(f);
         buffer=new BufferedReader(in);
         //读入文件的第1行:答案
         answer=buffer.readLine().trim();;
         //将上述f、in、buffer对象保存到用户的session 对象中:
         session.setAttribute("file",f);
         session.setAttribute("in",in);
         session.setAttribute("buffer",buffer);
        //再将初始题号保存到session对象中:
         session.setAttribute("number",number);
        //再将用户的初始得分保存到session对象中:
         session.setAttribute("score",score);
      }
     if(s.equals("重新练习"))   //当请求重新读取文件时,建立和文件的输入流连接。
      {  f=new File("f:/2000","English.txt");
         in=new FileReader(f);
         buffer=new BufferedReader(in);
         //读入文件的第1行:答案
         answer=buffer.readLine().trim();
         //将上述f、in、buffer对象保存到用户的session 对象中:
         session.setAttribute("file",f);
         session.setAttribute("in",in);
         session.setAttribute("buffer",buffer);
        //再将初始题号保存到session对象中:
         session.setAttribute("number",number);
        //再将用户的初始得分保存到session对象中:
         session.setAttribute("score",score);
      }
      //读取试题:
       try{ String str=null;
           f=(File)session.getAttribute("file");
           in=(FileReader)session.getAttribute("in");
           buffer=(BufferedReader)session.getAttribute("buffer");
            while((str=buffer.readLine())!=null)
                 { //为了能显示原始的HTML文件或JSP文件需使用回压流技术。
                    str=getString(str); 
                    if(str.startsWith("**")) //每个试题的结束标志。
                        {break;
                        }
                   out.print("<BR>"+str);
                }
          }
        catch(IOException e)
          { out.print(""+e);
          }
  %>
  <%String code=response.encodeURL("ttt.jsp");
  %>
<HTML>
<BODY><Font size=1>
 <P><BR>请选择答案:
 <FORM action="<%=code%>" method="post" name=form>
    <Input type=radio name="r" value="A">A
    <Input type=radio name="r" value="B">B
    <Input type=radio name="r" value="C">C
    <Input type=radio name="r" value="D">D
  <Input type=submit name="submit" value="提交答案">
 </FORM>  
<% //当用户提交表单时,获取提交的答案:
   //判断用户是否提交了答案表单:
    String select=request.getParameter("submit"); //获取客户提交的答案选择表单
         if(select==null)
            {select="";
            }
      byte c[]=select.getBytes("ISO-8859-1");
      select=new String(c);
   if(select.equals("提交答案"))
    {  String userAnswer=request.getParameter("r");
        if(userAnswer==null)
             { userAnswer="#";
             }
      //将提交的答案与正确答案进行比较:
      //首先获取题号:
       Integer num=(Integer)session.getAttribute("number");  
       int tihao=num.intValue();
       //获取相应题号的标准答案:
        char correctAnswer='\0';
        try{ correctAnswer=answer.charAt(tihao);
           }
        catch(StringIndexOutOfBoundsException ee)
           { tihao=0;
           }
       //然后再将题号重新存入session对象:
         tihao=tihao+1;
        Integer newNumber=new Integer(tihao);
        session.setAttribute("number",newNumber);
       //将用户提交的答案与标准答案比较
       char user=userAnswer.charAt(0); 
       if(user==correctAnswer)
           { //给用户增加分值:
             Integer newScore=(Integer)session.getAttribute("score");
             int fenshu=newScore.intValue();
             fenshu=fenshu+1;
             newScore=new Integer(fenshu);
             session.setAttribute("score",newScore); 
             out.print("您答对了,您现在的得分是:");
             out.print(""+fenshu);
           }
       else
           { out.print("您没有答对,继续努力!");
             out.print("您现在的得分是:"+session.getAttribute("score"));
           }
   }
%>
<P><BR>点击按钮重新练习:
<FORM action="" method="post" name=form>
    <Input type=submit name="g" value="重新练习">
 </FORM>  
</FONT>
</BODY>
</HTML>

⌨️ 快捷键说明

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