2015-09-22 1 views
0

Я работаю над JSP и servlet. Код ниже работает, но я хочу, чтобы он был более динамичным.Как написать вывод непрерывного ряда из сервлета

Вот мой JSP

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
 
<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
 
     <title>JSP Page</title> 
 
    </head> 
 
    <form ACTION="Servlet" method="POST"> 
 
    <body><h1>Data Mahasiswa</h1> 
 
     <table> 
 
      <tr><td>Nama </td> 
 
       <td>: <input type="text" name="Name" value="" /></td> 
 
      </tr> 
 
      <tr><td>NIM </td> 
 
       <td>: <input type="text" name="ID" value="" /></td> 
 
      </tr> 
 
      <tr><td>Progdi </td> 
 
       <td>: <input type="radio" name="Member" value="Not Member" />Not Member 
 
        <input type="radio" name="Member" value="Member" />Member 
 
        
 
       </td> 
 
      </tr> 
 
     </table> 
 
     <input type="submit" value="SAVE" /> 
 
     </form> 
 
    </body> 
 
</html>

А вот мой Servlet

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

public class Servlet extends HttpServlet { 
    private String temp; 
    private BufferedWriter writer; 

protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    response.setContentType("text/html;charset=UTF-8"); 
    PrintWriter out = response.getWriter(); 
    String s1 = request.getParameter("Name"); 
    String s2 = request.getParameter("ID"); 
    String s3 = request.getParameter("Member"); 

    try{ 
try { 
      String text = (s1 + " | " + s2 + " | " + s3); 
      File file = new File("D:/write.txt"); 
      writer = new BufferedWriter(new FileWriter(file)); 
      writer.write(text); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       if (writer != null) { 
        writer.close(); 
       } 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 

    } 
    finally{ 
      out.println("<h1> Data Saved <h1>"); 
     } 
} 

И я хотел бы, чтобы мой выходной write.txt ниже

Bill | 788878 | Member 
Mark | 655598 | Member 
Ron | 953116 | Not Member 

Текущий код работает только для 1 строки.

То, что я имею в виду, каждый входной вход для повторного ввода, они будут записаны в следующей строке в выходном файле txt.

+1

Я голосую, чтобы закрыть этот вопрос не по теме, потому что вопросы задает для проверки коды должны быть размещены на http://codereview.stackexchange.com/ – Andreas

ответ

0

Пожалуйста, попробуйте writer = new BufferedWriter(new FileWriter(file, true));.

Дополнительный true указывает, что режим записи является append, не over write

Append - булево, если так, то данные будут записываться в конец файла , а не в начале.

+1

спасибо, работать как шарм :) –

+0

Но, как я могу заставить его записать его в следующей строке, как я вижу, он пишет в следующем столбце. Я пробовал добавить «\ n» на спине, но он не работал –

+0

Вы в окнах? если так '\ n' не поможет, вам нужно дать' \ r \ n'. Однако вы можете просто дать это утверждение 'writer.newLine();'. http://stackoverflow.com/questions/10034585/why-does-n-give-a-new-line-on-windows –

Смежные вопросы