想要创建一个servlet,它将基于guid文件名将发布的数据保存到文件中

Bla*_*man 0 java file-io tomcat servlets

所以我将我的java应用程序推送到服务器,非常兴奋.

现在我想测试一下,如何将发布的数据保存到我的servlet文件中,文件名应该是一个唯一的guid.

到目前为止我有这个:

public class TestServlet extends javax.servlet.http.HttpServlet {
    protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
            throws javax.servlet.ServletException, IOException {

    }

    protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
            throws javax.servlet.ServletException, IOException {

        PrintWriter printWriter = response.getWriter();

        printWriter.print("hello, world from testservlet!");


    }
}
Run Code Online (Sandbox Code Playgroud)

因此,假设http发布数据(比如大约50K)将被发布到字段"有效负载",我如何获取发布的文本,并将其保存到文件中,文件名为GUID.

java有一个构造来清理一个打开的文件,比如在c#中:

using(var file = new ....)
{
  // write to file
}
Run Code Online (Sandbox Code Playgroud)

这会关闭连接并清理内存等.

另外,我是否需要为tomcat设置特殊权限才能保存此文件?

我现在默认设置(只是在VPS上玩)使用ubuntu 11,安装tomcat6.

谢谢.

Bhe*_*ung 5

你可以用户request阅读"有效载荷",看到API文档ServletRequest:

request.getParameter("payload");
Run Code Online (Sandbox Code Playgroud)

您可以使用File创建文件,请参阅AP doc:

File newFile = new File("fileName");
boolean isCreated = newfile.createNewFile();
Run Code Online (Sandbox Code Playgroud)

您可以按如下方式写入文件,

BufferedWriter out = new BufferedWriter(new FileWriter(newFile));
out.write(payLoad);
out.close();
Run Code Online (Sandbox Code Playgroud)

对于GUID,您会看到这在Java中创建GUID

为了清理,你不必在Java中担心它,它的垃圾收集器(Java中的垃圾收集器是什么?)当引用超出范围时自动为你做.

但是你应该关闭资源,比如out.close在你完成它之后将其释放回系统.

另外,我是否需要为tomcat设置特殊权限才能保存此文件?

您不需要这样做,因为tomcat它只是一个服务器,它与文件系统(OS)更相关.我在Unix上使用Glassfish,我不需要做任何类似的事情来创建文件.