2

我正在尝试将 URL 参数从 JSP 传递到 Sevlet。我的网址是

/portal/faces/student.jsp?owner_id=1030303i

在我的 JSP 中,我添加了这个

<form action="steg" method="post" enctype="multipart/form-data">
     <input type='text' value='<%=request.getParameter("owner_id")%>' id="owner"/>
     <input type="file" name="file" size="50"  />
            <br />             
            <input type="submit" value="Steganograph" />
        </form>

但是,在 servlet 中我这样做了,

              String owner = request.getParameter("owner");
              System.out.println("aaaaaaaaaaaaaaaa"+owner);
              response.sendRedirect("stegsuccess.jsp?owner_id="+owner);

打印出来的结果为空。有什么问题吗?有谁知道如何解决这个问题?请指教。谢谢 :)

4

3 回答 3

1

您的代码中有两个问题:

  1. 您没有给输入字段命名。您希望id输入元素的属性用作请求参数名称。但是这是错误的。是name属性。

    <input type="text" name="owner" value="${fn:escapeXml(param.owner_id)}" />
    

    (注:我冒昧的为你在属性中封了一个XSS攻击漏洞)value

  2. 您正在使用multipart/form-data编码,但期望请求参数可通过HttpServletRequest#getParameter(). 默认情况下不支持此功能。这仅在您在@MultipartConfigServlet 3.0 兼容容器上使用 servlet 时才有效。或者,也许您正在处理一个现有项目,而其他人已经发明了一个 servlet 过滤器,它可以透明地解析multipart/form-data请求并在将请求传递给 servlet 之前填充请求参数映射。无论如何,请确保您了解如何解析multipart/form-data请求:如何使用 JSP/Servlet 将文件上传到服务器?

于 2012-12-04T11:36:45.530 回答
0

sendRedirect()方法不会转发请求对象。而是使用RequestDispatcher rd = request.getRequestDispatcher("yourpage.jsp");rd.forward(req, res)转发请求对象和请求参数的方法。

于 2012-09-11T18:22:03.007 回答
0

您使用的是什么版本的 servlet?

multipart/form-dataServlet API 3.0 之前的版本默认不支持编码请求。Servlet API 默认使用application/x-www-form-urlencoded编码解析参数。当使用不同的编码时,request.getParameter()调用将全部返回null。当您已经使用 Servlet 3.0(Glassfish 3Tomcat 7等)时,您可以使用它HttpServletRequest#getParts()

来自https://stackoverflow.com/a/3337115/139010。另请参阅Servlet Multipart 请求问题

于 2012-09-11T13:21:39.627 回答