用于在Windows 10,NetBeans和Glassfish中编写文本文件的Java servlet

问题描述 投票:0回答:1

我正在尝试编写一个Java servlet,该Java servlet会收到一个简单的帖子,并将内容写为文本文件。我正在Windows 10机器上使用Glassfish在NetBeans 8.2中进行开发。我可以通过Java applet编写文本文件,但是相同的文件编写代码在servlet中不起作用。我是NetBeans和Glassfish的新手。

我有做简单文章的html。我在NetBeans中生成了servlet的框架代码。我相信html会将帖子发布到正确的位置,因为它会启动由NetBeans自动创建的index.html文件。但是,没有文本文件被创建。我没有在Netbeans中看到错误消息,但我可能不知道在哪里查找。发布后,我偶尔会在/ build / web文件夹中看到一个名为gfv3ee6.dpf的空文件。我正在以管理员身份运行NetBeans和html。

附上我的html和当前的Java代码。我已经尝试过在Stackoverflow上讨论过的多种变体(不同的功能,不同的定义文件路径的方式),但是没有找到正确的组合。随函附上我尝试过的更简单的示例之一。一旦我克服了文件写入的障碍,我希望将来可以进行追加操作。

当最终将我的html和servlet部署到服务器时,我也将对最佳实践的任何建议表示赞赏。我的总体目标是使html成为一份较长的调查表,将响应发布到Java servlet,然后servlet对响应进行评分并将pdf文件发送给用户。我实际上已经在applet中完成了所有这些业务逻辑(没有发布),但是我无法在servlet中执行简单的文件写入。

在我看来,小服务程序和小程序写文件的方式不同,而我找不到正确的小程序代码。

我不认为这是一个问题,但是项目的名称是JustReact5,而类的名称是Just5React。

HTML

<form action="http://localhost:8080/JustReact5" method="post">

  Your name:<br>
  <input type="text" name="yourname" <br>
  <input type="submit" value="Submit">   

</form>

Java

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author joseph
 */
public class Just5React extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");

PrintWriter pw = response.getWriter();
String yourname = request.getParameter("yourname");


try{
File file = new File("C:/temp/outputfile.txt");
FileWriter fstream = new FileWriter(file,true);
BufferedWriter out = new BufferedWriter(fstream);
out.write(yourname);
out.newLine();
out.close();
}

catch (Exception e){
System.err.println("Error: " + e.getMessage());
}



    }

// NetBeans doGet, doPost, getServletInfo code
// omitted for brevity

}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
    <servlet>
        <servlet-name>Just5React</servlet-name>
        <servlet-class>Just5React</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Just5React</servlet-name>
        <url-pattern>/Just5React</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
</web-app>
java servlets netbeans glassfish-3
1个回答
-2
投票

请找到可能有用的代码。我已经使用Java 8来存储对文件的响应。

response.getWriter().append("Served at: ").append(request.getContextPath());

    String emailID = request.getParameter("email");
    String password = request.getParameter("psw");
    String password_repeat = request.getParameter("psw-repeat");
    String remember = request.getParameter("remember");

    List<String> responseList = new ArrayList<>();

    responseList.add(emailID);
    responseList.add(password);
    responseList.add(password_repeat);
    responseList.add(remember);

    System.out.println("Writing data : " + responseList);

    writeResponseToFile(responseList);

private void writeResponseToFile(List<String> responseList) {
String filePath = "/Users/sunilchityala/Desktop/writeResponseToFile.txt";

    try {
        Files.write(Paths.get(filePath), responseList, StandardCharsets.UTF_8, StandardOpenOption.CREATE, StandardOpenOption.APPEND);
    } catch (IOException e) {
        e.printStackTrace();
    }
© www.soinside.com 2019 - 2024. All rights reserved.