有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaServlet在Windows10、NetBeans和Glassfish中编写文本文件

我正在尝试编写一个Javaservlet,它接收一篇简单的文章,并将内容写入文本文件。我正在Windows 10机器上使用Glassfish开发NetBeans 8.2。我可以通过Javaapplet编写文本文件,但相同的文件编写代码在servlet中不起作用。我对网虫和玻璃鱼是相当陌生的

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

我附上我的html和当前的Java代码。我尝试了Stackoverflow上讨论的许多变体(不同的函数、定义文件路径的不同方式),但没有找到正确的组合。我附上一个我尝试过的更简单的例子。一旦我越过了文件写入的障碍,我想让未来的写入成为一个追加操作

我还希望在最终将html和servlet部署到服务器时能提供一些关于最佳实践的建议。我的总体目标是让html成为一个长问卷,将响应发布到Javaservlet,然后servlet对响应进行评分,并向用户发送一个pdf文件。实际上,我已经在applet中完成了所有这些业务逻辑(没有post),但我无法在servlet中执行简单的文件写入

对我来说,似乎servlet和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>

爪哇

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

}

网络。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>

共 (1) 个答案

  1. # 1 楼答案

    请找到可能有用的代码。我使用Java8存储对文件的响应

    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();
        }