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 楼答案
请找到可能有用的代码。我使用Java8存储对文件的响应