我是JSP的新手,我正在尝试编写以下代码:
<%@ page import="java.io.*" %>
<%@ page import="com.wipro.assignment2.exceptions.UploadFileNotFoundException" %>
<%
String requestPath=request.getParameter("file1");
System.out.println("I am printing before SUBMIT button click");
if(requestPath!=null)
{
File f=new File(requestPath.trim());
System.out.println("Path given to upload : "+requestPath);
if(!f.exists())
{
System.out.println("one");
try
{
throw new UploadFileNotFoundException("The file trying to upload is not presnt in its path !!!");
}
catch(UploadFileNotFoundException filenotfound)
{
throw filenotfound;
}
}
}
%>
<html>
<body>
<form name="form1" method="post" enctype="multipart/form-data">
<table align="right">
<tr>
<td><A href="index.html">HOME</A></td>
</tr>
</table>
</table>
<table>
<tr>
<td>Select File </td>
<td> <input type="file" name="file1"> </td>
<tr>
<td><input type="submit" value="Upload"></td>
</tr>
</table>
</form>
</body>
</html>
在上面的代码中,一旦加载了这个JSP页面,在点击提交按钮之前,JSP就开始运行了,如果按下提交按钮,请求就不会传递给上面的JSP。请告诉我它是如何运作的。
答案 0 :(得分:2)
我认为问题在于您没有告诉您<form>
要发布到哪里。表单有一个名为action
的属性,用于指示应将表单数据发送到哪个URL。尝试更改表单元素以发布到JSP
<form action="/path/to/your.jsp" name="form1" method="post" enctype="multipart/form-data">
此外,在JSP中包含scriptlet(Java)代码通常被认为是一种不好的做法。尝试找到一些可以使用的标记库(例如JSTL)。特别是下面的代码是毫无意义的:
try
{
throw new UploadFileNotFoundException("The file trying to upload is not presnt in its path !!!");
}
catch(UploadFileNotFoundException filenotfound)
{
throw filenotfound;
}
在这里,你抛出一个异常,抓住它并重新抛出它。这与扔掉它完全相同。
throw new UploadFileNotFoundException("The file trying to upload is not presnt in its path !!!");
除非您希望向用户显示错误页面(抛出未捕获的异常时的默认行为),否则最好返回一些描述问题的HTML而不是抛出异常。
答案 1 :(得分:0)
您可以使用
if (request.getContentLength() > 0) {
// .. bla bla
}
和其他信息: 您可以使用apache commons fileuplad包。