Java 如何将列表从servlet写入.txt
我创建了一个servlet,它滚动10个随机值,排序并打印这个值。此值正在添加到LinkedList。如何在应用程序关闭时将数据从LinkedList保存到file.txt。我尝试在servlet中创建文件并编写一些东西,但我的代码没有创建文件Java 如何将列表从servlet写入.txt,java,servlets,Java,Servlets,我创建了一个servlet,它滚动10个随机值,排序并打印这个值。此值正在添加到LinkedList。如何在应用程序关闭时将数据从LinkedList保存到file.txt。我尝试在servlet中创建文件并编写一些东西,但我的代码没有创建文件 protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IO
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();
}
protectedvoidprocessrequest(HttpServletRequest请求,HttpServletResponse响应)
抛出ServletException、IOException{
setContentType(“text/html;charset=UTF-8”);
PrintWriter out=response.getWriter();
试一试{
/*TODO在此处输出您的页面。您可以使用以下示例代码*/
out.println(“”);
out.println(“”);
out.println(“Servlet NewServlet”);
out.println(“”);
out.println(“”);
println(“Servlet NewServlet at”+request.getContextPath()+”);
List lista=(List)this.getServletContext().getAttribute(“lista”);
out.println(“”);
for(整数l:lista){
out.println(“- ”+l+“
”);
}
out.println(“
”);
out.println(“”);
out.println(“”);
out.println(“”);
out.println(“”);
out.println(“”);
out.println(“”);
}最后{
out.close();
}
PrintWriter zapis=null;
zapis=新的PrintWriter(“test.txt”);
zapis.println(“类型”);
zapis.close();
}
公共类NewServletListener实现ServletContextListener{
静态最终公共字符串defFileName=“file.txt”;
字符串文件名;
@凌驾
public void contextInitialized(ServletContextEvent sce){
List lista=新链接列表();
Random rand=新的Random();
int rozmiar=Integer.parseInt(sce.getServletContext().getInitParameter(“rozmiar”);
对于(int i=0;iOk),我假设您在web应用程序中的某个位置计算一个列表
,该列表存储为servlet上下文属性,名称为“lista”
。您希望在应用程序停止时将其保存到文本文件中,每行一个字符串
您必须使用ContextLoaderListener
。假设您使用servlet 3.0+容器,您可以使用注释注册它(如果没有,您必须在部署描述符web.xml
中注册它。您只需在onDestroy
方法中编写文件:
@WebListener
public class SaveListener implements ServletContextListener {
static final public String defFileName = "file.txt";
String fileName;
@Override
public void contextInitialized(ServletContextEvent sce) {
// allow to find the name of the file in init parameters
fileName = sce.getServletContext().getInitParameter("SAVE_FILE");
if (fileName == null) {
fileName = defFileName;
}
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
List<String> lista = (List<String>) sce.getServletContext()
.getAttribute("lista");
File file = new File(fileName);
try (PrintWriter printWriter = new PrintWriter(file)) {
for (String string : lista) {
printWriter.println(string);
}
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
}
}
}
@WebListener
公共类SaveListener实现ServletContextListener{
静态最终公共字符串defFileName=“file.txt”;
字符串文件名;
@凌驾
public void contextInitialized(ServletContextEvent sce){
//允许在init参数中查找文件名
fileName=sce.getServletContext().getInitParameter(“保存文件”);
如果(文件名==null){
fileName=defFileName;
}
}
@凌驾
公共无效上下文已销毁(ServletContextEvent sce){
List lista=(List)sce.getServletContext()
.getAttribute(“lista”);
文件=新文件(文件名);
try(PrintWriter PrintWriter=新的PrintWriter(文件)){
for(字符串:lista){
printWriter.println(字符串);
}
}catch(filenotfounde异常){
抛出新的运行时异常(e);
}
}
}
您所说的servlet(滚动10个随机值)排序并打印此值与您显示的代码之间存在细微差异:从ServletContext
属性中获取列表并显示它。您想在每次请求后保存,还是在应用程序停止时保存(假设您想保存lista
)?当应用程序停止时
@WebListener
public class SaveListener implements ServletContextListener {
static final public String defFileName = "file.txt";
String fileName;
@Override
public void contextInitialized(ServletContextEvent sce) {
// allow to find the name of the file in init parameters
fileName = sce.getServletContext().getInitParameter("SAVE_FILE");
if (fileName == null) {
fileName = defFileName;
}
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
List<String> lista = (List<String>) sce.getServletContext()
.getAttribute("lista");
File file = new File(fileName);
try (PrintWriter printWriter = new PrintWriter(file)) {
for (String string : lista) {
printWriter.println(string);
}
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
}
}
}