我有一个问题,如何从我的.txt文件显示 All 数据到我的servlet .
我所拥有的是将.txt文件中的最后一个数据 Only 显示给servlet
这是示例代码
//index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="add.html" method="POST">
<table>
<tr>
<td>Product name:</td>
<td><input type="text" name="pname" required></td>
</tr>
<tr>
<td>Category:</td>
<td><input type="text" name="cat" required></td>
</tr>
<tr>
<td>Sub:</td>
<td><input type="text" name="subcat" required></td>
</tr>
<tr>
<td>Size:</td>
<td><input type="radio" name="size" value="small">Small
<br>
<input type="radio" name="size" value="medium">Medium
<br>
<input type="radio" name="size" value="large">Large
</td>
</tr>
<tr>
<td><input type="submit" value="Add"></td>
</tr>
</table>
</form>
<a href = "view.html">view products</a>
</body>
</html>
//AddProductServlet.java
package com.nova.ed.process.admin;
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/add.html")
public class AddProductServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String pname="";
String cat="";
String subcat="";
String size="";
if(request.getParameter("pname") != null)
{
pname = request.getParameter("pname");
}
if(request.getParameter("cat") != null)
{
cat = request.getParameter("cat");
}
if(request.getParameter("subcat") != null)
{
subcat = request.getParameter("subcat");
}
if(request.getParameter("size") != null)
{
size = request.getParameter("size");
}
File myFile = new File("product.txt");
if(!myFile.exists())
{
myFile.createNewFile();
}
PrintWriter pw = new PrintWriter(new FileWriter(myFile, true));
pw.println(pname+","+cat+","+subcat+","+size);
pw.close();
out.print("<p>Registration Successfull</p>");
out.print("click "+"<a href='index.html'>Here</a>"+" to add again");
}
}
//ViewProductServlet.java
package com.nova.ed.process.admin;
import java.io.IOException;
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/view.html")
public class ViewProductServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public String pname = "";
public String cat = "";
public String subcat = "";
public String size = "";
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
File myFile = new File("product.txt");
BufferedReader br = new BufferedReader(new FileReader(myFile));
boolean isExist = false;
String str;
while((str = br.readLine()) != null)
{
String [] details = str.split(",");
pname = details[0];
cat = details[1];
subcat = details[2];
size = details[3];
isExist = true;
}
if(isExist){
out.print("<html>");
out.print("<head>");
out.print("<title></title>");
out.print("</head>");
out.print("<body>");
out.print("<h3>Products," + pname + " " + cat + " " + subcat + " " + size +"<h3>");
out.print("<h5>Click <a href='add.html'>here</a> to add more.</h5>");
out.print("</body>");
out.print("</html>");
}else{
}
br.close();
}
}
而且我还没有使用Bean和Beanfactory ..但我会确保在解决这个问题之后再这样做..
注意:仍然开始请耐心等待..谢谢!
顺便说一句,这是我正在谈论的.txt文件:
//product.txt
kings of nuts,nuts,premium,small
kings of nuts2,nuts,premium,medium
1 回答
根据我对您的代码的理解,用于显示结果的变量将随着while循环的进行而覆盖最新值,最终最终只存储文件的最后一行 .
您可以使用Collection变量来存储String输出的每个匹配项(对应于文本文件中的一行),这不会导致覆盖相同变量上的数据 .