5 JSP里的文件操作和数据库操作
这里就不再细说了,只提示一下,因为jsp的操作其实和java的一样,只要把程序放在beans里,获<%%>里就可以了,如果有不懂的可以参考俺以前发的帖子,里面有详细的介绍,是java的,其实都一样,我的网址为http://blog.youkuaiyun.com/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();;
//将上述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>
6440

被折叠的 条评论
为什么被折叠?



