httpservlet参数为空
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
。
从上面的内容可以看出,当用户在注册页面中填写完表单后,点击提交按钮,会将表单中的数据通过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的问题,确保能够正确处理用户提交的数据。
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的问题。