This question already has answers here:
Difference between getAttribute() and getParameter()
(10个答案)
5年前关闭。
在doPost方法的顶部,我获取了一些以前使用基本形式在JSP中设置的参数:
在doPost方法的末尾,我使用setAttribute将它们添加回请求对象中:
然后我再次通过request.getParameter将它们放入我的JSP中:
除非我已经通过doPost方法重写了它的值,否则这将起作用。如果是这种情况,那么我必须在JSP中使用request.getAttribute来检索它,因为request.getParameter将检索在doPost方法顶部定义的值,而忽略在顶部和底部之间进行的任何更改。底部。
有人对此有解释吗?我已经完成了所有工作,但是我想了解为什么我要花几个小时沮丧地弄清楚问题出在哪里。
(10个答案)
5年前关闭。
在doPost方法的顶部,我获取了一些以前使用基本形式在JSP中设置的参数:
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String serverName = request.getParameter("serverName");
String destFileName = request.getParameter("destFileName");
String userName = request.getParameter("userName");
String Message= request.getParameter("Message");
在doPost方法的末尾,我使用setAttribute将它们添加回请求对象中:
request.setAttribute("userName ", userName );
request.setAttribute("destFileName", destFileName);
request.setAttribute("serverName", serverName);
request.setAttribute("Message", Message);
request.getRequestDispatcher(page).forward(request, response);
然后我再次通过request.getParameter将它们放入我的JSP中:
<% /** if the parameters are already in place, grab them **/
String destFileName = request.getParameter("destFileName");
String user = request.getParameter("user");
String serverName = request.getParameter("serverName");
String Message = request.getParameter("Message");
%>
除非我已经通过doPost方法重写了它的值,否则这将起作用。如果是这种情况,那么我必须在JSP中使用request.getAttribute来检索它,因为request.getParameter将检索在doPost方法顶部定义的值,而忽略在顶部和底部之间进行的任何更改。底部。
有人对此有解释吗?我已经完成了所有工作,但是我想了解为什么我要花几个小时沮丧地弄清楚问题出在哪里。
最佳答案
getParameter
和getAttribute
完全无关。getParameter
以String的形式返回请求参数的值;如果
参数不存在。请求参数是额外的信息
与请求一起发送。对于HTTP Servlet,参数包含在
查询字符串或已过帐的表单数据。getAttribute
以Object的形式返回指定属性的值;如果没有,则返回null
给定名称的属性存在。
换句话说,返回使用setAttribute()
设置的值。
10-06 00:38