Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX发送某些字符串会在请求时导致NullPointerException.getParameter()_Javascript_Java_Ajax_Jsp - Fatal编程技术网

Javascript AJAX发送某些字符串会在请求时导致NullPointerException.getParameter()

Javascript AJAX发送某些字符串会在请求时导致NullPointerException.getParameter(),javascript,java,ajax,jsp,Javascript,Java,Ajax,Jsp,我使用AJAX将字符串从Javascript应用程序传递到Java服务器页面(JSP)进行处理。下面是AJAX代码的一个片段: var toSend = new String.builder(); toSend.append('submission=').append(encodeURIComponent(submissionStr)); toSend.append('&currentQNum=1&haveNewResponse=true' + '&eva

我使用AJAX将字符串从Javascript应用程序传递到Java服务器页面(JSP)进行处理。下面是AJAX代码的一个片段:

var toSend = new String.builder();
toSend.append('submission=').append(encodeURIComponent(submissionStr));
toSend.append('&currentQNum=1&haveNewResponse=true'
        + '&evaluate=').append(evaluate);
if (!isEmpty(selections)) toSend.append('&selections=').append(selections);
if (!isEmpty(rxnIds)) toSend.append('&rxnIds=').append(rxnIds);
callAJAX('answerframe.jsp', toSend.toString());

function callAJAX(url, toSend, method) {
    "use strict";
    xmlHttp.open('POST', url, true);
    xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    // set follow-up method when the server returns the page at URL
    xmlHttp.onreadystatechange = (!method ? updatePage : method);
    xmlHttp.setRequestHeader('Accept', 'message/x-jl-formresult');
    xmlHttp.send(toSend);
} // callAJAX()

function updatePage() {
    if (xmlHttp.readyState === 4) { // ready to continue
        var responsePage = xmlHttp.responseText;
        ....
在非常罕见(我发现了两个示例)但完全可重复的情况下,submissionStr的某些值会导致
xmlHttp.responseText
返回为空。日志显示在JSP页面的两行中的第二行抛出NullPointerException:

Utils.alwaysPrint("answerJava.jsp.h: request is ",
        request == null ? "" : "not ", "null."); /**/
final String prefersJavaParam = request.getParameter("prefersJava");
日志输出显示:

INFO: answerJava.jsp.h: request is not null.
java.lang.NullPointerException
    at java.lang.System.arraycopy(Native Method)
    at com.sun.crypto.provider.GCTR.reset(GCTR.java:125)
    at com.sun.crypto.provider.GCTR.doFinal(GCTR.java:116)
    at com.sun.crypto.provider.GaloisCounterMode.doLastBlock(GaloisCounterMode.java:343)
    at com.sun.crypto.provider.GaloisCounterMode.decryptFinal(GaloisCounterMode.java:511)
    at com.sun.crypto.provider.CipherCore.finalNoPadding(CipherCore.java:1023)
    at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:960)
    at com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:479)
    at javax.crypto.CipherSpi.bufferCrypt(CipherSpi.java:830)
    at javax.crypto.CipherSpi.engineDoFinal(CipherSpi.java:730)
    at javax.crypto.Cipher.doFinal(Cipher.java:2460)
    at sun.security.ssl.CipherBox.decrypt(CipherBox.java:535)
    at sun.security.ssl.EngineInputRecord.decrypt(EngineInputRecord.java:200)
    at sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:974)
    at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:907)
    at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:781)
    at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624)
    at org.apache.tomcat.util.net.SecureNioChannel.read(SecureNioChannel.java:362)
    at org.apache.tomcat.util.net.NioBlockingSelector.read(NioBlockingSelector.java:159)
    at org.apache.tomcat.util.net.NioSelectorPool.read(NioSelectorPool.java:229)
    at org.apache.tomcat.util.net.NioSelectorPool.read(NioSelectorPool.java:210)
    at org.apache.coyote.http11.InternalNioInputBuffer.readSocket(InternalNioInputBuffer.java:643)
    at org.apache.coyote.http11.InternalNioInputBuffer.fill(InternalNioInputBuffer.java:945)
    at org.apache.coyote.http11.InternalNioInputBuffer$SocketInputBuffer.doRead(InternalNioInputBuffer.java:969)
    at org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:116)
    at org.apache.coyote.http11.InternalNioInputBuffer.doRead(InternalNioInputBuffer.java:916)
    at org.apache.coyote.Request.doRead(Request.java:427)
    at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:304)
    at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:419)
    at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:327)
    at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:193)
    at org.apache.catalina.connector.Request.readPostBody(Request.java:2683)
    at org.apache.catalina.connector.Request.parseParameters(Request.java:2636)
    at org.apache.catalina.connector.Request.getParameter(Request.java:1106)
    at org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:355)
    at org.apache.jsp.homework.answerframe_jsp._jspService(answerframe_jsp.java:409)

这个问题的许多特点让我感到困惑。为什么System.arraycopy()会抛出一个NullPointerException,为什么它只会在
submission
的非常特定的值被发送到JSP页面时才会抛出?最后,我能做些什么来解决这个问题呢?

它似乎是一个标记为的副本(它又被标记为第一个的副本)。两者都列出了一种解决方法,一种是禁用AES/GCM密码,另一种是使用
-XX:CompileCommand=exclude,com/sun/crypto/provider/GCTR
禁用热点编译。禁用AES/GCM密码解决了问题。谢谢