Ami*_*mar 2 java file-io servlets
这是我的servlet类,它负责从HTML页面获取数据并将该数据存储在WEB-INF目录下的EmailList.txt文件中:
Servlet类的代码片段......
//Get Parameters from the request object
String firstName=request.getParameter("firstName");
String lastName=request.getParameter("lastName");
String emailId=request.getParameter("emailId");
//Get a relative file name
ServletContext context=getServletContext();
String path=context.getRealPath("WEB-INF/EmailList.txt");
//Use Regular Java object to write the data to the file
UserData userData=new UserData(firstName, lastName, emailId);
UserIO.addUser(userData, path);
Run Code Online (Sandbox Code Playgroud)
其中的UserData是一个普通的Java类setter方法和getter方法,以及UserIO包含代码的内容写入到文件EmailList.txt
UserIO类的代码如下:
public class UserIO {
public static void addUser(UserData userData,
String filePath)
throws IOException {
File file=new File(filePath);
PrintWriter out=new PrintWriter(new FileWriter(file, true));
out.println(userData.getFirstName()+"\t"
+ userData.getLastName()+"\t"
+ userData.getEmailId());
out.close();
}
}
Run Code Online (Sandbox Code Playgroud)
右键单击eclipse中的文件转到属性,你会看到这是一个不同的文件.
实际上你不应该尝试在这样的位置编写/创建文件.您的应用程序可能无法始终从.war
存档中解压缩,在这种情况下ServletContext#getRealPath()
将返回null
.
另一种方法是在web.xml中定义上下文init参数,并为应用程序可见的文件系统设置根目录
<context-param>
<param-name>fsroot</param-name>
<param-value>E:\CodePractice</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)
并在您的应用程序中的任何位置(servlet/JSP)检索它,您可以使用ServletContext#getInitParameter(java.lang.String)
:
String path = getServletContext().getInitParameter("fsroot");
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
414 次 |
最近记录: |