在JSP中访问请求属性

时间:2015-07-30 02:02:19

标签: java jsp

我正在使用小程序练习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。

这里有什么问题,能告诉我吗?

3 个答案:

答案 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