Jsp request.getparameter在多个servlet上不工作

Jsp request.getparameter在多个servlet上不工作,jsp,servlets,Jsp,Servlets,当用户填写注册表单时(在页面Reg.jsp),数据被成功地转发到servlet(Regi.java),当我在我的一个jsp页面上使用(Imgu.jsp-要求用户上传图像)时,它工作正常,但在另一个servlet上请求相同的数据时(imgup.java)参数username的值为null 我无法理解为什么会发生这种情况。我已尝试创建会话,但没有成功。尝试以下操作: Regi.java HttpSession session = request.getSession(); session.s

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

我无法理解为什么会发生这种情况。我已尝试创建会话,但没有成功。

尝试以下操作:

Regi.java

  HttpSession session = request.getSession();
  session.setAttribute("username", request.getParameter("username"));
  HttpSession session = request.getSession();
  session.setAttribute("username", request.getParameter("username"));
  String username = (String)request.getSession().getAttribute("username");
Imgu.jsp

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

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

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

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

因此它与一个请求相关。除非您在查询字符串中提供参数,或者在请求中发布表单,否则其他servlet将不存在该参数


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

我怀疑您遇到的问题与处理多部分请求有关(因为您正在上载图像)。Tomcat 7有一个处理此问题的功能:


否则,您可能需要使用多部分库来提取参数

我希望您清楚请求是
转发还是重定向的概念
如何从Regi.java重定向到Imgu.jsp,转发/包含/重定向?因为
用户名
不再在请求范围内,如果您使用sendredirect()这将不起作用。因为只有当您提交到另一个页面或使用请求分派器时,响应才会被发送,这两个页面都会发送响应对象。不过,如果您想实现这一点,可以使用request.setAttribute(“,”);设置值和request.getAttribute(“”);要获取值,请给出servlet和JSP之间的精确交互。正如目前所写,这是不清楚的。