Java servlet:request.getParameter和request.setAttribute以我不理解的方式连接

时间:2014-09-02 15:12:33

标签: java jsp servlets

在我的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方法顶部定义的值,忽略顶层和顶层之间所做的任何更改。底部。

有没有人对此有解释?我已经把一切都搞定了,但是我想明白为什么我花了几个小时的挫折来弄清楚出了什么问题。

1 个答案:

答案 0 :(得分:4)

getParametergetAttribute 完全无关。

getParameter

  

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

getAttribute

  

以Object形式返回指定属性的值,如果不为,则返回null   存在给定名称的属性。

换句话说,返回使用setAttribute()设置的值。