JSP实用教程实验九文件操作

实验九 文件操作

一、实验目的

1. file对象及其操作。

2. 输入输出流FileInputStream、FileOutputStream、BufferedInputStream、BufferedOutputStream、FileRead、FileWriter、BufferedRead、BufferedWriter,RandomAccessFile类。

3. 文件上传、下载。

4. 掌握file对象使用以及各种流的读写操作,实现文件上传与下载。

二、实验内容

1、教材9.5.1节 查看JSP源文件。

2、教材9.5.2节 听学《新概念英语》。

三、实验步骤

1.查看JSP源文件

① 实验代码

文件:ch9_1.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<%@ page import="java.io.*"%> 
<style>
   #tom{
      font-family:宋体;font-size:28;color:blue 
   }
</style>
<HTML>
	<body id ="tom "bgcolor="#FFBBFF">
		<%  
		StringBuffer sourceCode=new StringBuffer();
		request.setCharacterEncoding("utf-8");
		String mess = request.getParameter("submit");
		if(mess==null)
			mess="";
		if(mess.contains("源码")){
			response.setContentType("text/plain");
			String jspPage=request.getServletPath(); 
			String webDir = request.getContextPath();
			jspPage =jspPage.substring(1); 
			webDir = webDir.substring(1); 
			File f= new File("");
			String path = f.getAbsolutePath();
			int index = path.indexOf("bin");
			String tomcatDir = path.substring(0,index);
			File jspFile=new File(tomcatDir+"/webapps/"+webDir,jspPage);
			try{ 
				RandomAccessFile randomAccess = 
				new RandomAccessFile(jspFile,"r");
				String s=null;
				StringBuffer stringbuffer=new StringBuffer();
				while ((s=randomAccess.readLine())!=null){ 
				byte b[] = s.getBytes("iso-8859-1");
				sourceCode.append("\n"+new String(b,"utf-8"));
				}            
			}
			catch(Exception exp){
				out.println(exp);
			} 
			}
		%>
		JSP文件源代码:<br>
		<%=sourceCode %>
		<br>
		<form action="" method="post"> 
			<input type="submit" id="tom" name ="submit" value="看本页面的源码" />
		</form> 
	</body>
</HTML>

② 运行结果

2.听学《新概念英语》

① 实验代码

文件:EnglishBean.java

package save;
public class EnglishBean {
   public String fileName="";
   public String fileContent="";
   public String fileAudio;
   public void setFileName(String str){
      fileName=str;
   }
   public String getFileName(){
      return fileName; 
   }
   public void setFileContent(String str){
      fileContent=str;
   }
   public String getFileContent(){
      return fileContent; 
   }
   public void setFileAudio(String str){
      fileAudio = str;
   }
   public String getFileAudio(){
      return fileAudio; 
   }
}

 文件:ch9_2.jsp

<%@ page import = "java.io.*" %>
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<jsp:useBean id="english" class ="save.EnglishBean" scope="request"/>
<style>
   #tom{
      font-family:宋体;font-size:22;color:blue 
   }
</style>
<HTML>
	<body id="tom" bgcolor="#ffccff">
		<form action="readFile" id="tom" method="post">
			选择一篇课文:<br>
			<%  
			File f = new File(".");
			String jspPage=request.getServletPath(); 
			String webDir = request.getContextPath();
			jspPage =jspPage.substring(1);
			webDir = webDir.substring(1);
			String path = f.getAbsolutePath();
			int index = path.indexOf("bin");
			String tomcatDir = path.substring(0,index);
			String filePath =tomcatDir+"/webapps/"+webDir+"/englishText";
			File fileDir=new File(filePath);
			String name [] = fileDir.list();
			%>  
			<select id= tom name="fileName" size =1>
			<%  
			for(int i=0;i<name.length;i++){
			%>    
			<option selected value='<%=name[i]%>'/><%=name[i]%>
			<% 
			 }
			%>  
			</select> 
			<input type=hidden name='filePath' value='<%=filePath%>' />
			<br><input type=submit id=tom value="学习" /><br>
			<textArea id="tom" rows="15" cols="80">
				<%=english.getFileContent()%>
			</textArea><br>
			<% 
			if(english.getFileName().length()>0) {
			%><br>
			<%=english.getFileAudio()%>:<br>
			<embed src ='englishAudio/<%=english.getFileAudio()%>' height="56" autostart='false'>
			</embed>
			<%}
			%>
		</form>
	</body>
</HTML>

文件:eadFile_Servlet.java

package handle;
import save.EnglishBean;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ReadFile_Servlet extends HttpServlet{
   public void init(ServletConfig config) throws ServletException{
      super.init(config);
   }
   public void service(HttpServletRequest request,HttpServletResponse response)throws                                               ServletException,IOException{
      EnglishBean fileBean=new EnglishBean();
      request.setAttribute("english",fileBean);
      String fileContent="";
      request.setCharacterEncoding("utf-8");
      String filePath=request.getParameter("filePath");
      String fileName=request.getParameter("fileName");
      if(filePath==null||fileName==null)
         return;
      if(fileName.length()==0||fileName.length()==0)
         return;
      fileBean.setFileName(fileName);
      String audioFileName = 
      fileName.substring(0,fileName.lastIndexOf("."))+".mp3";
      fileBean.setFileAudio(audioFileName);
      try{  File f=new File(filePath,fileName);
            RandomAccessFile randomAccess = new RandomAccessFile(f,"r");
            String s=null;
            StringBuffer stringbuffer=new StringBuffer();
            while ((s=randomAccess.readLine())!=null){ 
                byte b[] = s.getBytes("iso-8859-1");
                stringbuffer.append("\n"+new String(b)); 
            }
            fileContent=new String(stringbuffer);
            fileBean.setFileContent(fileContent);
      }
      catch(Exception exp){
            fileContent ="读取失败"+exp.toString();
      } 
      RequestDispatcher dispatcher=
      request.getRequestDispatcher("ch9_2.jsp");
      dispatcher.forward(request, response);
    } 
} 

文件:web.xml

<web-app>
    <servlet>
        <servlet-name>readFile</servlet-name>
        <servlet-class>handle.ReadFile_Servlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>readFile </servlet-name>
        <url-pattern>/readFile </url-pattern>
    </servlet-mapping>
</web-app>

② 运行结果

四、实验总结

通过本次实验掌握使用输入流读取服务器端的文件的方法和MVC模式读取文件的方法,输入输出流的各种

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小孙同学1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值