httpservlet参数为空

18 浏览
0 Comments

httpservlet参数为空

我有一个包含表单的jsp页面。在提交后,它调用了一个httpservlet类。但是所有的 getParamter() 操作都返回null。我做错了什么?

JSP

...

Servlet

@WebServlet(name = "GatherController", urlPatterns = { "/GatherController" })
public class GatherController extends HttpServlet {
    ...
    @Override
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        String a = request.getParameter("a");
        System.out.println(a);  
        ... 
    }
}

编辑

- 我使用的是Tomcat v8.0

- 执行了doPost(...)方法,使用System.out.println(a);得到的输出是null

0
0 Comments

从上面的内容可以看出,当用户在注册页面中填写完表单后,点击提交按钮,会将表单中的数据通过post请求发送到servlet的doPost方法中进行处理。然而,有时候会出现servlet中获取参数值为null的情况,导致无法正确处理用户提交的数据。

出现这个问题的原因可能有以下几种情况:

1. 表单中的name属性与servlet中getParameter方法中的参数名不一致,导致无法正确获取参数值。

2. 表单中的name属性没有设置或者设置错误,导致servlet无法获取表单中的参数值。

3. 表单中的method属性不是"post",而是"get",导致servlet无法获取表单中的参数值。

解决这个问题的方法如下:

1. 确保表单中的name属性与servlet中getParameter方法中的参数名一致,例如上述代码中的firstname、lastname和email。

2. 确保表单中的name属性正确设置,例如上述代码中的firstname、lastname和email。

3. 确保表单中的method属性设置为"post",例如上述代码中的method="post"。

通过以上的方法,可以解决servlet中获取参数值为null的问题,确保能够正确处理用户提交的数据。

0
0 Comments

当使用HttpServletRequest的getParameter方法获取参数时,却返回了null值。这个问题的出现原因是在表单中使用了单引号而不是双引号。

解决方法是将表单中的引号改为双引号,即将代码修改为:

<form action="GatherController" method="post"><input type="text" name="a"/>

这样就能够正确获取到参数的值了。

0
0 Comments

httpservlet参数为null的问题通常是由于在调用httpServletRequest的getReader()或getInputStream()方法之后尝试访问post参数导致的。在这些方法调用之后,post参数将不可访问。为了解决这个问题,需要确保在调用getReader()或getInputStream()方法之后不再访问post参数。

以下是一个示例代码,说明了如何避免这个问题:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    BufferedReader reader = request.getReader();
    String line;
    StringBuilder stringBuilder = new StringBuilder();
    while ((line = reader.readLine()) != null) {
        stringBuilder.append(line);
    }
    
    // 不要在这之后再访问post参数,否则会导致参数为null
    // 不推荐的做法:
    // String parameter = request.getParameter("parameter");
    
    // 在这之前处理post参数
    String parameter = stringBuilder.toString();
    // 处理参数的逻辑代码
}

通过按照上面的示例代码,在调用getReader()方法之后处理post参数,就可以避免httpservlet参数为null的问题。

0