dataservlet.java
来自「JAVA Servlet2.3外文书籍源码」· Java 代码 · 共 98 行
JAVA
98 行
package persistence.servlet;
import java.io.*;
import java.util.Hashtable;
import javax.servlet.*;
import javax.servlet.http.*;
public class DataServlet extends HttpServlet implements Serializable {
private static Hashtable data;
private static ServletContext ctx;
private static String filename;
public void init() throws ServletException {
// Determine whether the servlet has been initialized.
if (filename == null) {
System.out.println("Initializing the data servlet...");
// Obtain the file name of the serialized file.
filename = getServletConfig().getInitParameter("DataServletOutput");
ctx = getServletContext();
// Determine whether a serialized file exists.
if (!readSerialized()) {
readResource();
}
}
}
private void readResource() {
System.out.println("Reading from resource...");
data = new Hashtable();
// Read data from an external data source.
}
private void writeSerialized() {
System.out.print("Attempting to write object...");
ObjectOutputStream out = null;
try {
out = new ObjectOutputStream(new FileOutputStream(filename));
out.writeObject(data);
out.flush();
System.out.println("success!");
} catch (Throwable t) {
System.out.println("failed!");
ctx.log("DataServlet", t);
} finally {
if (out != null) {
try {
out.close();
} catch (Throwable ignored) {}
}
}
}
private boolean readSerialized () {
System.out.print("Attempting to read object...");
File f = new File(filename);
ObjectInputStream in = null;
try {
if (f.exists ()) {
in = new ObjectInputStream(new FileInputStream(f));
data = (Hashtable) in.readObject();
System.out.println("success!");
return true;
}
System.out.println("file does not exist!");
} catch (Throwable t) {
System.out.println("failed!");
ctx.log("DataServlet", t);
} finally {
if (in != null) {
try {
in .close();
} catch (Throwable ignored) {}
}
// Delete the file after it has been used.
if (f.exists()) {
try {
f.delete();
} catch (Throwable io) {
ctx.log("DataServlet", io);
}
}
}
return false;
}
public void destroy() {
System.out.println("Destroying...");
writeSerialized();
super.destroy();
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?