jsp中form表单post方式提交而后台获取值为null的一种不可忽视的原因

在一次web项目demo中,发现jsp中的form表单提交数据到servlet的时候,用request.getParameter("String")方法获取到的值全部为null,没有一个例外,然后百度了一下原因(当时不知道什么原因,就搜索的“jsp中form表单提交到servlet获取不到值”,其实并不具体),很多都是说检查form表单额提交方式method和servlet的doPost方法有没有对应这种常识错误,当时也是检查了好几遍,但仔细一想,我servlet都能在控制台输出null了,肯定不是这个原因。

以下为jsp段代码(代码本身没有问题):

<%@ page contentType="text/html;charset=UTF-8" language="java" %>



    

Hello World!



以下为servlet段代码(代码本身没有问题):

package com.bdqn.zxw.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.event.PaintEvent;
import java.io.IOException;

/**
 * Created with IntelliJ IDEA.
 * User: ChaW
 * Date: 2019/5/12
 * Time: 17:14
 * Description: No Description
 */
@WebServlet("/test")
public class Servlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        request.setCharacterEncoding("utf-8");
        String name = request.getParameter("name");
        String pwd = request.getParameter("pwd");

        System.out.println(name);
        System.out.println(pwd);
    }

}

后来就一直检查,直到把post方式改为get方式提交成功之后,发现了是post方式提交的问题,遂在百度进一步搜索(大概是“jsp中form表单post方式提交到servlet”),看了几篇文章之后就发现有人提到了TomCat的设置问题:

tomcat6.0的文档里说maxPostSize不限制的设置是小于等于0

tomcat7.0的文档里面说maxPostSize不限制的设置是小于0
该属性设置位于tomcat文件下的conf文件夹下的server.xml文件里(比如---D:\Java\TomCat\apache-tomcat-9.0.16\conf\server.xml)

 

以前的版本是小于等于0都是无限制大小,现在是小于0是无限制大小,所以如果还是maxPostSize="0"的话,就代表限制post提交数据大小为0,(数据大小为0能传输什么数据呢),所以就出现了一开始出现的问题,获取数据为null,因为没有数据传输过来。把maxPostSize="0"设置为maxPostSize="-1",则是不限制传输数据大小,自然就没有问题了,还是那两段代码,idea控制台输出了相应的数据。

以前的maxPostSize="0"也是不限制大小的设置,只是tomcat修改了定义而已,我们要用人家的技术,就必须遵循人家的设置,谢谢。

你可能感兴趣的:(jsp中form表单post方式提交而后台获取值为null的一种不可忽视的原因)