请求.Getparameter不能在多个servlet上工作



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

我不明白为什么会发生这种情况,我已经尝试创建一个会话,但它没有工作。

试试这个:

Regi.java

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

Imgu.jsp

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

Regi.java

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

imgup.java

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

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

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

所以它与一个请求相关。除非您在请求的查询字符串或张贴表单中提供参数,否则其他servlet不会在那里。

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

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

如何在Tomcat上运行的servlet过滤器中使用HttpServletRequest#getParts() ?

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

最新更新