附有JSP源碼(TextFileReader.jsp)及JavaBean (TextFileReader.java 使用前需加以編譯)
我們使用了較早期的jswdk,所以我們可以確信你也可以直接使用這些代碼。
TextFileReader.java是一個bean, TextFileReader.jsp則是jsp文件。如果你也使用d jswdk,并使用相同的library environment,可叫bean文件放在jswdk1-0eaexamplesjsp下的textfileaccess目錄(你可以創建它),jsp文件放在jswdk1-0eaexamplesWeb-infjspbeanstextfileaccess目錄,你也必須創建它。
我們使用的jsp文件并不包含太多的java代碼,主要的代碼放在bean中。由此我們也可以看到JSP和JavaBean的基本聯系。 對于有經驗的開發者:
在"header"信息中我們要申明要使用、識別哪一個bean,并設置其屬性。
首先,我們導入bean,如果你的jswdk設置正確并已經將文件放在上述位置,那么找到 resource應該沒有問題。page命令的意思是它將為整個jsp頁面來進行導入。
<%@ page import ="textfileaccess.TextFileReader" %>
告訴編譯器我們將使用一個bean,以及如何識別它,并進行初始化(instansiate)。 scope指明被申明的對象對當前頁有效。
<jsp:useBean id="file_reader"class="textfileaccess.TextFileReader" scope="session"/>
然后我們決定要設置那些屬性。這里是"FileName"。因為我們要使用Bean的setFileName 方法。所以Bean的名字必須包含。
<jsp:setProperty name="file_reader" property="FileName"/>
那就是header信息,現在我們開始實際的HTML頁面。
<html>
<head><title>Read a text file</title></head>
<body bgcolor="white">
<font size=4>
現在我們開始編寫一些Java腳本。首先檢查文件名是否已經設置好。如果設好了,我們就顯示文件,否則我們要轉到另一個頁面。
<%if(file_reader.getFileName() != "") { %>
file_reader是一個bean,所以我們可以用Java類來存取它。 :-)現在我們得到文件名稱!
文件名稱是: '<% out.println(file_reader.getFileName()); %>' :
文件內容,如果為空的話:
<%if (file_reader.getContent() != null) { %>
我們可以建立一個textarea (HTML) 并用getRows()和getColumns() 方法來調節到合適的位置。然后將文件內容放入。
<Form>
<TEXTAREArows=<%=file_reader.getRows()%>cols=<%= file_reader.getColumns()%>id= textarea1name= textarea1>< /FONT>
<%out.println(file_reader.getContent()); %>
</TEXTAREA>
</Form>
如果文件為空,那么一定是發生了錯誤,我們將得到出錯信息:
<% }else { %>
<% out.println(file_reader.getErrorMessage()); %>
<% } %>
重置所有值并返回主頁:
<% file_reader.reset(); %>
Do you want to <a href="TextFileReader.jsp">look at another file</a>?
<% }else { %>
文件名為空,則顯示出錯頁面。
歡迎加入這里:'Read a file in JSP'
這個示例在textarea中簡單地顯示了文件內容?lt;p>
請填寫你想看到什么文件。并確信鍵入了完整的路徑。<p>
建立帶textboxbutton的form。注意我們不必定義form的action,因為使用了同一個頁面。并注意textbox中要填入文件名字。
<form method=get>< /FONT>
FileName? <input type=text name= FileName>< /FONT>
<input type=submit value="Show it!">
</form>
<% } %>
</font>
</body>
</html>
jsp文件完成了。在仔細看以下Bean中的Java代碼。我假設你們中的大多數都熟悉java,否則你怎么會加入JSP的行列。:-)
**************JSP代碼: TextFileReader.jsp <!-- TextFileReader.jsp Written by Martin Lindahl Copyright 1999, w3it.com, distributed by JSPea -->
<%@ page import = "textfileaccess.TextFileReader" %>
<jsp:useBean id="file_reader" class="textfileaccess.TextFileReader" scope="session"/> <jsp:setProperty name="file_reader" property="FileName"/>
<html> <head><title>Read a text file</title></head> <body bgcolor="white"> <font size=4>
<% if (file_reader.getFileName() != "") { %>
The content of the file '<% out.println(file_reader.getFileName()); %>' :
<% if (file_reader.getContent() != null) { %>
<Form> <TEXTAREA rows=<%= file_reader.getRows() %> cols=<%= file_reader.getColumns() %> id=textarea1 name=textarea1>
<% out.println(file_reader.getContent()); %>
</TEXTAREA> </Form>
<% } else { %> <% out.println(file_reader.getErrorMessage()); %>
<% } %>
<% file_reader.reset(); %> Do you want to <a href="TextFileReader.jsp">look at another file</a>?
<% } else { %>
Welcome to the 'Read a file in JSP' example.
The example simply shows the file in a textarea.<p> Please fill out what file you want to look at. Be sure to type the complete path.<p>
<form method=get> FileName? <input type=text name=FileName> <input type=submit value="Show it!"> </form>
<% } %>
</font> </body> </html>
**************Java Bean TextFileReader.java package textfileaccess;
import java.io.*; import java.awt.event.*; import java.util.*;
/** * TextFileReader is a bean that provides the basic functionality for * reading a textfile. */ public class TextFileReader {
private String fileName, errorMessage; private int columns, rowCount;
/** * Constructs a TextFileReader. */ public TextFileReader() { reset(); }
/** * Resets all the variables in this bean. */ public void reset() { fileName = ""; errorMessage = ""; columns = 0; rowCount = 0; }
/** * Sets the error message, if an error occurs. */ public void setErrorMessage(String errorMessage) { this.errorMessage = errorMessage; }
/** * Returns the error message, if any. */ public String getErrorMessage() { return errorMessage; }
/** * Returns the filename. */ public String getFileName() { return fileName; }
/** * Sets the filename. */ public void setFileName(String fileName) { this.fileName = fileName; }
/** * Returns the amount of rows in the file. */ public int getRows() { return rowCount; }
/** * Returns the maximum amount of columns in a row. */ public int getColumns() { return columns; }
/** * Returns the content of the file in a String. * If an error occurs, like if the file does not exists, null is returned. */ public String getContent() { String content = ""; File file = new File(fileName); if (!file.exists()) { setErrorMessage("Error: The file '" + fileName + "' does not exists."); return null; } else if (file != null) { try { // Create an BufferedReader so we can read a line at the time. BufferedReader reader = new BufferedReader(new FileReader(file)); String inLine = reader.readLine(); while (inLine != null) { if (inLine.length() + 1 > columns) columns = inLine.length() + 1; content += (inLine + System.getProperty("line.separator")); inLine = reader.readLine(); rowCount++; } return content; } catch (IOException e) { setErrorMessage("Error reading the file: " + e.getMessage()); return null; } } else { setErrorMessage("Unknown error!"); return null; } } }
|