新手入门-JSP(五)

5 JSP里的文件操作和数据库操作

       这里就不再细说了,只提示一下,因为jsp的操作其实和java的一样,只要把程序放在beans里,获<%%>里就可以了,如果有不懂的可以参考俺以前发的帖子,里面有详细的介绍,是java的,其实都一样,我的网址为http://blog.csdn.net/mc1035/

下面再给个综合的例子供大家参考:

(1)    文件上传的例子:

<%@ page contentType="text/html;charset=GB2312" %>

<HTML>

<BODY>

 <P>选择要上传的文件:<BR>

   <FORM action="accept.jsp" method="post" ENCTYPE="multipart/form-data">

      <INPUT type=FILE name="boy" size="38">

      <BR>

     <INPUT type="submit" name ="g" value="提交"> 

 </BODY>

</HTML>

 

accept.jsp

<%@ page contentType="text/html;charset=GB2312" %>

<%@ page import ="java.io.*" %>

<HTML>

<BODY>

  <%try{  InputStream in=request.getInputStream();

          File f=new File("F:/2000","B.txt");

          FileOutputStream o=new FileOutputStream(f);

          byte b[]=new byte[1000];

          int n;

          while((n=in.read(b))!=-1)

               {o.write(b,0,n);

               }

          o.close();

          in.close();

       }

    catch(IOException ee){}

    out.print("文件已上传");

  %>

</BODY>

</HTML>

(2)    文件下载的例子

<%@ page contentType="text/html;charset=GB2312" %>

<HTML>

<BODY>

<P>点击超链接下载Zip文档book.Zip

 <BR>  <A href="loadFile.jsp">下载book.zip

</Body>

</HTML> 

 

loadFile.jsp

<%@ page contentType="text/html;charset=GB2312" %>

<%@ page import="java.io.*" %>

<HTML>

<BODY>

<% //获得响应客户的输出流:

    OutputStream o=response.getOutputStream();

   //输出文件用的字节数组,每次发送500个字节到输出流:

   byte b[]=new byte[500];

   //下载的文件:

    File fileLoad=new File("f:/2000","book.zip");

   //客户使用保存文件的对话框:

   response.setHeader("Content-disposition","attachment;filename="+"book.zip");

   //通知客户文件的MIME类型:

    response.setContentType("application/x-tar");

   //通知客户文件的长度:

    long fileLength=fileLoad.length();

    String length=String.valueOf(fileLength);

    response.setHeader("Content_Length",length);

   //读取文件book.zip,并发送给客户下载:

   FileInputStream in=new FileInputStream(fileLoad);

   int n=0;

   while((n=in.read(b))!=-1)

      { o.write(b,0,n);

      }

%>

</BODY>

</HTML>

(3)    标准化考试

标准化考试系统源代码

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();;

         //将上述finbuffer对象保存到用户的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();

         //将上述finbuffer对象保存到用户的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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值