1.实验目的
本实验的目的是掌握怎样在JSP中进行文件的读写操作。
2.实验内容
编写三个JSP页面giveContent.jsp,writeContent.jsp、readContent.jsp以及两个Tag文件WriteTag.tag和ReadTag.jsp。
1.giveContent.jsp的具体要求
giveConten.jsp页面提供一个表单,要求该表单提供一个text文本输入框、select下拉列表和一个TextArea文本区,用户可以在text输入框输入文件的名字、在select下拉列表选择一个目录(下拉列表的选项必须是Tomcat服务器所驻留计算机上的目录)、通过TextArea输入多行文本。单击表单的提交键将text中输入的文件名字、select下拉列表中选中的目录以及TextArea文本区中的内容提交给writeContent.jsp页面。
2.writeContent.jsp的具体要求
writeContent.jsp页面首先获得giveConten.jsp页面提交的文件所在目录、名字以及TextArea文本区中的内容,然后使用Tag标记调用Tag文件WriteTag.tag,并将文件所在目录、名字以及TextArea文本区中的内容传递给WriteTag.tag。
3.lookContent.jsp的具体要求
lookContent.jsp页面提供一个表单,该表单提供两个text文本输入框,用户可以这两个text文本输入框输入目录和文件名字。单击表单的提交键将text中输入的文件目录以及文件名字提交给readContent页面。
4.readContent.jsp的具体要求
readContent.jsp页面首先获得lookConten.jsp页面提交的文件目录、名字,然后使用Tag标记调用Tag文件ReadTag.tag,并将文件所在目录、名字传递给ReadTag.tag。
5.WriteTag.tag的具体要求
WriteTag.tag文件使用attribute指令获得writeContent.jsp页面传递过来的文件目录、文件名字和文件内容,然后使用I/O流将文件内容写入到文件中,该文件所在目录就是writeContent.jsp页面传递过来的文件目录,名字就是writeContent.jsp页面传递过来的文件名字。
6.ReadTag.tag的具体要求
Read.tag文件使用attribute指令获得readContent.jsp页面传递过来的文件目录和文件名字,然后使用I/O流读取文件,并负责显示所读取的内容。
1.2 实现代码
1,giveContent.jsp
<%@ page contentType="text/html;charset=utf-8" %>
<HTML><Body bgcolor=yellow>
<HEAD>
<jsp:include page="head2.txt" />
</HEAD>
<FORM action="writeContent.jsp" method="post" >
<br>请选择一个文件目录:
<select name="directory">
<option value=D:\学software\jsp\WebContent>D:\学software\jsp\WebContent
<option value=D:\TomCat\apache-tomcat-8.5.20\webapps\MyJsp>D:\TomCat\apache-tomcat-8.5.20\webapps\MyJsp
<option value=D:\jsp文件>D:\jsp文件
</select><br>
<br>输入保存文件的名字:
<input type="text" name="fileName"><br>
<br>输入文件的内容:
<br><TextArea name="content" rows="7" cols="40"></TextArea>
<br><br><input type="submit" name="submit" value="提交">
</FORM>
</Body></HTML>
2,writeContent.jsp
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="writefile" %>
<HTML><Body bgcolor=cyan>
<%
request.setCharacterEncoding("utf-8");
String Dir=request.getParameter("directory");
String FName=request.getParameter("fileName");
String Con=request.getParameter("content");
%>
<writefile:WriteTag dir="<%=Dir%>" fname="<%=FName%>" con="<%=Con%>"/>
<%
if(result)
{
out.println("文件写入成功!");
out.println("<br>"+"文件所在目录:"+Dir);
out.println("<br>文件的名字:"+FName);
}
else
{
out.println("文件写入失败!");
}
%>
</Body>
</HTML>
3,WriteTag.tag
<%@ tag import="java.io.*" %>
<%@ tag pageEncoding="utf-8" %>
<%@ attribute name="dir" required="true" %>
<%@ attribute name="fname" required="true" %>
<%@ attribute name="con" required="true" %>
<%@ variable name-given="result" variable-class="java.lang.Boolean" scope="AT_END" %>
<%!
public void writeContent(String str,File f)
{
try
{
FileWriter outfile=new FileWriter(f);
BufferedWriter bufferout=new BufferedWriter(outfile);
bufferout.write(str);
bufferout.close();
outfile.close();
}
catch(IOException e)
{
}
}
%>
<%
boolean flag=false;
File f=new File(dir,fname);
/*
out.println("dir"+dir);
out.println("fname"+fname);
out.println("con"+con);
*/
/*
FileOutputStream op=new FileOutputStream(f);
BufferedOutputStream bufferout=new BufferedOutputStream(op);
byte b[]=con.getBytes();
bufferout.write(b);
bufferout.flush();
bufferout.close();
op.close();
*/
if(con.length()>0)
{
writeContent(con,f);
}
flag=true;
jspContext.setAttribute("result",new Boolean(flag));
%>
4,lookContent.jap
<%@ page contentType="text/html;charset=utf-8" %>
<html><body bgcolor=yellow>
<HEAD>
<jsp:include page="head2.txt"/>
</HEAD>
<form action="readContent.jsp" method=post >
输入文件的路径(如:d/1000):
<input type="text" name="path"><br>
输入文件的名字:
<input type="text" name="name"><br>
<input type="submit" name="submit" value="读取">
</form>
</body></html>
5,readContent.jsp
<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="read" %>
<html><body bgcolor=cyan>
<%
request.setCharacterEncoding("utf-8");
String filePath=request.getParameter("path");
String fileName=request.getParameter("name");
%>
<read:ReadTag fdir="<%=filePath%>" fname="<%=fileName%>"/>
</body></html>
6,ReadTag.tag
<%@ tag import="java.io.*" %>
<%@ tag pageEncoding="GB2312" %>
<%@ attribute name="fdir" required="true" %>
<%@ attribute name="fname" required="true" %>
<%!
public String readContent(File f)
{
StringBuffer str=new StringBuffer();
try
{
FileReader in=new FileReader(f);
BufferedReader bufferin=new BufferedReader(in);
String temp;
while((temp=bufferin.readLine())!=null)
{
str.append(temp);
str.append("<br>");
}
bufferin.close();
in.close();
}
catch(IOException e)
{ }
return new String(str);
}
%>
<%
File f=new File(fdir,fname);
String str=readContent(f);
out.println(f.getName()+"的内容:<br>");
out.print(str);
%>
运行结果:
若出现中文乱码:
在每个jsp页面中的request.getParemeter(“String”);前加入request.setCharacterEncoding(“utf-8”);即可