我正在使用小程序练习JSP并且遇到了小问题。
我的第一个jsp页面包含一个表单和一个设置请求属性的代码。
<form action="process.jsp" method="post">
User: <input type="text" name="userName">
<br/><br/>
<input type="submit" value="Submit"/>
</form>
<%request.setAttribute("sampleKey","myValue");%>
这就是process.jsp
的样子:
Welcome <%=request.getParameter("userName")%>
<br/>
The attribute is <%=request.getAttribute("sampleKey")%>
当我访问第一页并提交到process.jsp页面时,我希望请求属性具有其值,但我在这里得到null
。
这只是一个学习的示例程序,我知道我们不应该使用scriplets。
这里有什么问题,能告诉我吗?
答案 0 :(得分:2)
问题在于,当您提交<form>
时,它会向 process.jsp 发出新的POST
请求,因此会request
属性之前设置的已不再可用。您需要的是使用session
范围,这将保留其属性来自同一用户的多个请求。
因此,在JSP表单中,会话属性设置为
<% session.setAttribute("sampleKey","myValue"); %>
然后可以在 process.jsp 中将检索为
Welcome ${param.userName}
<br/>
The attribute is ${sampleKey}
答案 1 :(得分:0)
问题出在&lt;%request.setAttribute(&#34; sampleKey&#34;,&#34; myValue&#34;); %GT;此代码因为请求。使用
代替然后你可以通过这种类型进入process.jsp页面。
session.getAttribute(&#34; sampleKey&#34);
答案 2 :(得分:0)
问题是您是否使用html向process.jsp
提交请求。因此,您的请求属性会丢失。
选项1,在同一表单中使用hidden
字段,然后使用req.getParameter()
获取该字段。
选项2,使用session
属性而不是request
。