request.getparameter不能处理多个servlet

时间:2014-08-23 09:33:53

标签: jsp servlets

当用户填写注册表单(页面Reg.jsp)时,数据会成功转发到servlet(Regi.java),当我在其中一个jsp页面上使用<%=request.getParameter("username")%>时(Imgu.jsp - 要求用户上传图像)它工作正常但是当在另一个servlet(imgup.java)上请求相同的数据时,参数username的值为null。

我无法理解为什么会发生这种情况我尝试创建一个会话但它没有用。

3 个答案:

答案 0 :(得分:1)

试试这个:

<强> Regi.java

  HttpSession session = request.getSession();
  session.setAttribute("username", request.getParameter("username"));

<强> Imgu.jsp

<form>
    ...
    <input type="hidden" name="username" value="${username}"/>
</form>

<强> OR

<强> Regi.java

  HttpSession session = request.getSession();
  session.setAttribute("username", request.getParameter("username"));

<强> imgup.java

  String username = (String)request.getSession().getAttribute("username");

答案 1 :(得分:0)

正如文档中所说的request.getParameter()

  

以String形式返回请求参数的值,如果是,则返回null   参数不存在。请求参数是额外信息   随请求发送。对于HTTP servlet,参数包含在   查询字符串或发布的表单数据。

因此它与一个请求有关。除非你在请求中提供查询字符串或发布表单中的参数,否则它不会出现在其他servlet中。

对于应该共享的数据,交叉请求使用Arvind建议的会话范围。

答案 2 :(得分:0)

我怀疑您遇到的问题与处理多部分请求(因为您正在上传图像)这一事实有关。 Tomcat 7有一个功能可以解决这个问题:

How to use HttpServletRequest#getParts() in a servlet filter running on Tomcat?

否则,您可能希望使用多部分库来提取参数。