当用户填写注册表单(页面Reg.jsp
)时,数据会成功转发到servlet(Regi.java
),当我在其中一个jsp页面上使用<%=request.getParameter("username")%>
时(Imgu.jsp
- 要求用户上传图像)它工作正常但是当在另一个servlet(imgup.java
)上请求相同的数据时,参数username的值为null。
我无法理解为什么会发生这种情况我尝试创建一个会话但它没有用。
答案 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?
否则,您可能希望使用多部分库来提取参数。