我是JSP的新手。我创建了一个在tomcat服务器上运行的JSP文件。我已经在程序中指定了目录位置。我的程序显示该目录中的所有文件,并将结果显示在表中,并在文件名后创建一个删除按钮。我的程序如下(JSP文件):
<form method="post" action='FileDisplayURL' >
<h2>Current Collection</h2>
<table width="100%" border="1">
<%
File folder = new File("C:/Apps/eclipse-jee-mars-2-win32-x86_64/eclipse");
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
%>
<tr >
<%
if (listOfFiles[i].isFile()) {
%>
<td><%=listOfFiles[i].getName()%></td>
<td><input type="submit" value="delete" name="filename"></td>
<%
}
%>
</tr>
<%
}
%>
</table>
</form>
这是我的servlet:
@WebServlet("/FileDisplayURL")
public class FileDisplay extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
String deleteFileName = request.getParameter("filename");
System.out.println("you clicked on " + deleteFileName);
}
}
这是我的首页的样子:
我在用户单击删除时获取文件名时遇到问题。
当我在tomcat上运行程序时,终端中的输出如下所示:
INFO: Server startup in 1076 ms
you clicked on delete
“您单击删除”不显示所单击文件的名称。我是Servlet和JSP的新手。我可能缺少明显的东西。任何帮助,将不胜感激。
这是HTML错误,按钮不能有值(无论如何您都不会添加值),您应该创建一个隐藏的输入并将文件名放在此处:
<input type="hidden" value="<%=listOfFiles[i].getName()%>" name="filename"/>
编辑:
我没有意识到您只有一种形式,每行都需要一个单独的形式,因为如果多个输入具有相同的名称,则servlet不知道要输入什么值。因此,您的视图应具有:
<h2>Current Collection</h2>
<table width="100%" border="1">
<%
File folder = new File("C:/Apps/eclipse-jee-mars-2-win32-x86_64/eclipse");
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
%>
<tr >
<%
if (listOfFiles[i].isFile()) {
%>
<td><%=listOfFiles[i].getName()%></td>
<td>
<form method="post" action='FileDisplayURL' >
<input type="submit" value="delete">
<input type="hidden" value="<%=listOfFiles[i].getName()%>" name="filename"/>
</form>
</td>
<%
}
%>
</tr>
<%
}
%>
</table>
编辑2:
只是为了澄清您的错误:单击发送按钮时,浏览器会准备将添加到主体的键值列表的请求添加到主体,该键值列表包含已激活表单内的所有参数(如果您使用一个包含多个名称相同的字段的服务器的表单)无法猜测哪个是正确的值:
Body:
filename=a
filename=b
filename=c
filename=d
应该选择哪个值?因此,您需要一种每个名称仅包含一个值的表单(或列表的方括号)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句