简单的JSP应用程序

时间:2009-09-15 14:49:34

标签: jsp

我是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。请告诉我它是如何运作的。

2 个答案:

答案 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包。

http://commons.apache.org/fileupload/