在jsp中进行文件的读写操作

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”);即可

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值