java如何将列表从servlet写入。文本
我创建了一个servlet,它滚动10个随机值,排序并打印这个值。此值正在添加到LinkedList。如何将数据从LinkedList保存到文件。txt时,应用程序将关闭。我尝试在servlet中创建文件并编写一些东西,但我的代码没有创建文件
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
/* TODO output your page here. You may use following sample code. */
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet NewServlet</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet NewServlet at " + request.getContextPath() + "</h1>");
List<Integer> lista=(List<Integer>) this.getServletContext().getAttribute("lista");
out.println("<ul>");
for(Integer l:lista){
out.println("<li>"+l+"</li>");
}
out.println("</ul>");
out.println("<form action=\"NewServlet1\">");
out.println("<input type=\"text\" name=\"liczba\">");
out.println("<input type=\"submit\" value=\"ADD\">");
out.println("</form>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
PrintWriter zapis = null;
zapis = new PrintWriter("test.txt");
zapis.println("type type type ");
zapis.close();
}
public class NewServletListener implements ServletContextListener {
static final public String defFileName = "file.txt";
String fileName;
@Override
public void contextInitialized(ServletContextEvent sce) {
List<Integer> lista=new LinkedList<Integer>();
Random rand=new Random();
int rozmiar=Integer.parseInt(sce.getServletContext().getInitParameter("rozmiar"));
for(int i=0;i<rozmiar;i++){
lista.add(rand.nextInt(100));
}
sce.getServletContext().setAttribute("lista", lista);
fileName = sce.getServletContext().getInitParameter("SAVE_FILE");
if (fileName == null) {
fileName = defFileName;
}
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
// throw new UnsupportedOperationException("Not supported yet.");
List<Integer> lista=(List<Integer>) sce.getServletContext().getAttribute("lista");
File file = new File(fileName);
try (PrintWriter printWriter = new PrintWriter(file)) {
for (Integer l:lista) {
printWriter.println(l);
}
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
}
}
}
这很奇怪,但文件无法创建。我应该添加到web吗。xml保存文件?或者我做错了什么。 关闭重叠时应创建的文件
# 1 楼答案
好的,我假设您在web应用程序的某个地方计算了一个
List<String>
,它存储为一个名为"lista"
的servlet上下文属性。您希望在应用程序停止时将其保存到文本文件,每行一个字符串您必须使用
ContextLoaderListener
。假设您使用servlet 3.0+容器,您可以使用注释注册它(如果没有,您必须在部署描述符web.xml
中注册它