jsp中form表單post方式提交而后臺獲取值為null的一種不可忽視的原因

在一次web項目demo中,發(fā)現(xiàn)jsp中的form表單提交數(shù)據(jù)到servlet的時候,用request.getParameter("String")方法獲取到的值全部為null,沒有一個例外,然后百度了一下原因(當(dāng)時不知道什么原因,就搜索的“jsp中form表單提交到servlet獲取不到值”,其實并不具體),很多都是說檢查form表單額提交方式method和servlet的doPost方法有沒有對應(yīng)這種常識錯誤,當(dāng)時也是檢查了好幾遍,但仔細(xì)一想,我servlet都能在控制臺輸出null了,肯定不是這個原因。

以下為jsp段代碼(代碼本身沒有問題):

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<body>
    <h2>Hello World!</h2>
    <div>
        <form action="test" method="post">
            <input type="text" name="name"/><br/>
            <input type="text" name="pwd"/><br/>
            <input type="submit" value="提交"/>
        </form>
    </div>
</body>
</html>

以下為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方式提交成功之后,發(fā)現(xiàn)了是post方式提交的問題,遂在百度進一步搜索(大概是“jsp中form表單post方式提交到servlet”),看了幾篇文章之后就發(fā)現(xiàn)有人提到了TomCat的設(shè)置問題:

tomcat6.0的文檔里說maxPostSize不限制的設(shè)置是小于等于0

tomcat7.0的文檔里面說maxPostSize不限制的設(shè)置是小于0
該屬性設(shè)置位于tomcat文件下的conf文件夾下的server.xml文件里(比如---D:\Java\TomCat\apache-tomcat-9.0.16\conf\server.xml)

 <Connector connectionTimeout="20000" connectionUploadTimeout="36000000" disableUploadTimeout="false" maxHttpHeaderSize="102400" maxPostSize="-1" maxSwallowSize="-1" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

以前的版本是小于等于0都是無限制大小,現(xiàn)在是小于0是無限制大小,所以如果還是maxPostSize="0"的話,就代表限制post提交數(shù)據(jù)大小為0,(數(shù)據(jù)大小為0能傳輸什么數(shù)據(jù)呢),所以就出現(xiàn)了一開始出現(xiàn)的問題,獲取數(shù)據(jù)為null,因為沒有數(shù)據(jù)傳輸過來。把maxPostSize="0"設(shè)置為maxPostSize="-1",則是不限制傳輸數(shù)據(jù)大小,自然就沒有問題了,還是那兩段代碼,idea控制臺輸出了相應(yīng)的數(shù)據(jù)。

以前的maxPostSize="0"也是不限制大小的設(shè)置,只是tomcat修改了定義而已,我們要用人家的技術(shù),就必須遵循人家的設(shè)置,謝謝。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容