我正在尝试将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);
打印出来的结果为空。 有什么不对吗?谁知道如何解决这个问题? 请指教。谢谢:))
答案 0 :(得分:1)
您的代码中存在两个问题:
您没有为输入字段指定名称。您希望输入元素的id
属性已用作请求参数名称。但是这是错误的。这是name
属性。
<input type="text" name="owner" value="${fn:escapeXml(param.owner_id)}" />
(注意:我已经冒昧地为value
属性中的XSS attack hole加密了
您正在使用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 3,Tomcat 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)
方法转发请求对象以及请求参数。