注意 以下範例是針對一個放在根目錄下的檔案進行測試
首先先來看看網頁如何呈現,那以下我分兩種來說明ㄧ個是針對字串依個是針對二元碼作處理
在JSP中寫入一些 scriptlets
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
//省略 HTML....
<%
//透過 application 隱含物件 取得真實路徑
String path = application.getRealPath("simple.txt");
java.io.BufferedInputStream bi = new java.io.BufferedInputStream(new java.io.FileInputStream(path));
byte[] b = new byte[1024]; //1KB
int num = 0;
while((num = bi.read(b)) != -1){
String str = new String(b); //轉成字串
str = str.replaceAll("\n", "<br />"); //替換所有的換行字元 成 "<br />"
out.print(str);
}
/*以下註解的地方為使用純文字處理的方式*/
/*java.io.BufferedReader br = new java.io.BufferedReader(new
java.io.FileReader(path));
String r = "";
while((r = br.readLine()) != null){
out.println("<p>" + r + "</p>");
}*/
%>
接著可以以一個 form 表單讓使用者輸入欲加入的檔案內容
<form action="/test/addInFile.do" method="post">
<textarea name='inut' rows='5' cols='50' ></textarea>
<input type="submit" value="送出" />
</form>
以下為進行處理得 servlet > addInFile.java
package fsc.controller;
import java.io.BufferedWriter;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class checkLogin extends HttpServlet {
public checkLogin() {
super();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType( "text/html;charset=UTF-8 ");
java.io.PrintWriter out = response.getWriter();
String intpuText = request.getParameter("inut");
//以下以二元處理寫入
try{
String path = getServletContext().getRealPath("simple.txt");
BufferedOutputStream bw = new BufferedOutputStream(new FileOutputStream(path, true));
byte[] b = intpuText.getBytes(); //將字串轉成二元陣列
bw.write(b);
bw.close();
}catch(IOException e){}
//以下為純文字處理檔案寫入
/*try{
String path = getServletContext().getRealPath("simple.txt");
BufferedWriter bw = new BufferedWriter(new FileWriter(path, true));
bw.newLine();
bw.close();
}catch(IOException e){}*/
request.getRequestDispatcher("finish.jsp").forward(request, response);
}
}
最後在 finish.jsp 觀看結果, 程式撰寫跟前面介紹的大致相同
最後提醒以上案例是以根目錄下的檔案進行,如果是本機別的地方如C槽
那就直接使用 File 吧
如果遇到亂碼問題可以試試先將原文轉成 ISO-8859-1,在案指定編碼轉成 String
沒有留言:
張貼留言