Jquery ajax request works in tomcat 8.5 but same is not works in tomcat10

Viewed 37

I have a dynamic web application which is now deployed on tomcat8.5. I have planned to upgrade my tomcat from version 8.5 to tomcat 10. I am facing very weird issue. I have a form which sends a jquery ajax request to a servlet. Following is my ajax request code.

  function resetApplicationLogin( unlockapplogin) { 
    if($("#idusername").val()!=""){
    var forminputdata = new FormData();
    
    
    forminputdata.append("username",$("#idusername").val());
    forminputdata.append("unlockapplogin",unlockapplogin);

    $.ajax({
         xhr: function() {
             var req = $.ajaxSettings.xhr();
             if (req) {
                 req.upload.addEventListener('progress', function(event) {
                     if (event.lengthComputable) {
                         //$("#id"+i+"-p-"+file_data[i].name.replace(".","-")).html(event.loaded); // = 'test'; //event.loaded + ' / ' + event.total;
                     }
                 }, false);
             }
             return req;
         },
         url: 'ResetUserApplicationLogin',
         data: forminputdata,
         contentType: false,
         processData: false,
         dataType: 'json',
         type: 'POST',
         beforeSend: function(){                 
         },          
         success: function(data, textStatus, jqXHR){
             
             var objlstProjectDetails=data.objlstProjectDetails;
             if(data.reply=="success"){
                 alert("Application login reset successfull!");
                 
                 
                
             }else if(data.reply=="invalidsession"){
                //alert(data.message);  
                window.location.replace("Logout");
             }else if(data.reply=="failed"){
                 alert(data.message); 
             }
             
         },
         error: function(xhr, errDesc, exception) {
             
         }
     }); 
    
}else{
    alert("Please select username!");
}

}

The above ajax request works perfect in tomcat 8.5 environment and sent username get received in the respective servlet.

But when I deploy same code on tomcat10 problem starts. When ajax request got fired in development tool of chrome I found that the data is sent properly.

Snippet of my servlet code protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); }

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
 *      response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    // TODO Auto-generated method stub

    // TODO Auto-generated method stub

    response.setHeader("Pragma", "no-cache"); // HTTP 1.0
    response.setHeader("Cache-Control", "no-cache"); // HTTP 1.1
    response.setDateHeader("Expires", 0); // prevents caching at the proxy server
    response.setHeader("Cache-Control", "private"); // HTTP 1.1
    response.setHeader("Cache-Control", "no-store"); // HTTP 1.1
    response.setHeader("Cache-Control", "max-stale=0"); // HTTP 1.1
    response.setHeader("Cache-Control", "must-revalidate"); // HTTP 1.1
    response.setContentType("text/html");
    // System.out.println("in Stop Delete Batch");

    HttpSession session = request.getSession(false);

    JsonObject objJsonObject = new JsonObject();
    PrintWriter out = response.getWriter();
    
    System.out.println("username : "+request.toString());
    String strUserName = request.getParameter("username").toString().split("~")[1];//Exception comes on this line

But in Servlet I get following exception

Sep 08, 2022 11:00:16 AM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [com.techspeed.ode.admin.user.ResetUserApplicationLogin] in context with path [/onlinedataentryexpress10] threw exception java.lang.NullPointerException: Cannot invoke "String.toString()" because the return value of "jakarta.servlet.http.HttpServletRequest.getParameter(String)" is null at com.techspeed.ode.admin.user.ResetUserApplicationLogin.doPost(ResetUserApplicationLogin.java:71) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:694) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:777) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:223) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:119) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:356) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:867) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1762) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:833)

Please guide me friends what going wrong in above code.

UPDATE New Findings are as follows

When I have put following code in servlet and tried to print request params

    System.out.println();
    System.out.println("request param");

    Enumeration<String> params = request.getParameterNames(); 
    while(params.hasMoreElements()){
     String paramName = params.nextElement();
     System.out.println("Parameter Name - "+paramName+", Value - "+request.getParameter(paramName));
    }

I got following out on console

------WebKitFormBoundaryoQ3orjimC9f9fVmv Content-Disposition: form-data; name="username"

3~sandip

------WebKitFormBoundaryoQ3orjimC9f9fVmv Content-Disposition: form-data; name="unlockapplogin"

Reset Application Login

------WebKitFormBoundaryoQ3orjimC9f9fVmv--

Watchin above values I feel that my form data parameters either not sent properly to servlet or there is problem in server who is not able to parse the request parameters. Please guide!

0 Answers
Related