将URL参数从JSP传递到Servlet

时间:2012-09-11 13:17:39

标签: jsp servlets request url-parameters http-request-parameters

我正在尝试将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);

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

3 个答案:

答案 0 :(得分:1)

您的代码中存在两个问题:

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

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

    (注意:我已经冒昧地为value属性中的XSS attack hole加密了

  2. 您正在使用multipart/form-data编码,但希望HttpServletRequest#getParameter()可以使用请求参数。默认情况下 不受支持。只有在Servlet 3.0兼容容器上使用带有@MultipartConfig的servlet时,这才有效。或许你正在开发一个现有的项目,而其他人已经发明了一个servlet过滤器,它透明地解析multipart/form-data个请求,并在将请求传递给servlet之前填充请求参数映射。无论如何,请确保您了解如何解析multipart/form-data次请求:How to upload files to server using JSP/Servlet?

答案 1 :(得分:0)

您使用的是哪个版本的servlet?

  版本3.0之前的Servlet API默认不支持

multipart/form-data编码的请求。 Servlet API默认使用application/x-www-form-urlencoded编码解析参数。使用其他编码时,request.getParameter()调用将全部返回null。当您已经使用Servlet 3.0(Glassfish 3Tomcat 7等)时,您可以使用HttpServletRequest#getParts()代替。

来自https://stackoverflow.com/a/3337115/139010。另请参阅Issue with Servlet Multipart request

答案 2 :(得分:0)

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