Javascript Java doPost()在使用getParameter()时工作,但doGet()总是抛出null。。。为什么?

Javascript Java doPost()在使用getParameter()时工作,但doGet()总是抛出null。。。为什么?,javascript,java,servlets,Javascript,Java,Servlets,我有一个带有doGet()和doPost()函数的servlet。当我在doPost()上使用getParameter()时,它工作得非常好,但当我在doGet()内部使用getParameter()时,它无法获取参数。。。上面说它们是空的。这是我的密码 HTML(index.HTML): <!DOCTYPE html> <html> <head> <meta charset="ISO-8859-1"> <title>J

我有一个带有doGet()doPost()函数的servlet。当我在doPost()上使用getParameter()时,它工作得非常好,但当我在doGet()内部使用getParameter()时,它无法获取参数。。。上面说它们是空的。这是我的密码

HTML(index.HTML):

<!DOCTYPE html>
<html>
<head>
    <meta charset="ISO-8859-1">
    <title>JAVA-AJAX Test</title>
    <script type="text/javascript" src="ajaxfunctions.js"></script>
</head>
<body>
    <h1>Enviar POST mediante AJAX</h1>
    <input type="text" id="username" name="username" value="Puma" />
    <input type="password" id="password" name="password" value="Bernal" />
    <input type="button" id="sendpost" name="sendpost" value="Send POST" />
    <hr/>
    <h1>Enviar GET mediante AJAX</h1>
    <input type="text" id="firstname" name="firstname" value="Jose" />
    <input type="text" id="lastname" name="lastname" value="Bernal" />
    <input type="button" id="sendget" name="sendget" value="Send GET" />
</body>
window.onload = function()
{
    xhr = new XMLHttpRequest();

    //*************************************POST FUNCTIONS************************************************

    var sendpost = document.getElementById("sendpost");

    sendpost.onclick = function()
    {
        var username = document.getElementById("username");
        var password = document.getElementById("password");

        if (username.value == "" || password.value == "")
            alert("Debe ingresar el usuario y la contraseña!");
        else
            enviarDatosPost(username, password);
    }

    function enviarDatosPost(username, password)
    {
        xhr.onreadystatechange = prepararRespuestaPost;
        xhr.open("POST", "Messages", true);
        var datosPost = crearDatosPost(username, password);
        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        alert("POST: " + datosPost);
        xhr.send(datosPost);
    }

    function crearDatosPost(username, password)
    {
        var datosPost = "username="+username.value+"&password="+password.value;
        return datosPost;
    }

    function prepararRespuestaPost()
    {
        if (xhr.readyState == 4)
        {
            if (xhr.status == 200)
            {
                alert("XHR responseText: " + xhr.responseText + "\nXHR statusText: " + xhr.statusText);
            }
        }
    }

    //*************************************GET FUNCTIONS************************************************

    var sendget = document.getElementById("sendget");

    sendget.onclick = function()
    {
        var firstname = document.getElementById("firstname");
        var lastname = document.getElementById("lastname");

        if (firstname.value == "" || lastname.value == "")
            alert("Debe ingresar el nombre y el apellido!");
        else
            enviarDatosGet(firstname, lastname);
    }

    function enviarDatosGet(firstname, lastname)
    {
        xhr.onreadystatechange = prepararRespuestaGet;
        xhr.open("GET", "Messages", true);
        var datosGet = crearDatosGet(firstname, lastname);
        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        alert("GET: " + datosGet);
        xhr.send(datosGet);
    }

    function crearDatosGet(firstname, lastname)
    {
        var datosGet = "firstname="+firstname.value+"&lastname="+lastname.value;
        return datosGet;
    }

    function prepararRespuestaGet()
    {
        if (xhr.readyState == 4)
        {
            if (xhr.status == 200)
            {
                alert("XHR responseText: " + xhr.responseText + "\nXHR statusText: " + xhr.statusText);
            }
        }
    }
}
package com.puma.servlets;

import java.io.IOException;
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.io.*;
/**
 * Servlet implementation class Messages
 */
@WebServlet(asyncSupported = true, urlPatterns = { "/Messages" })
public class Messages extends HttpServlet
{
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public Messages()
    {
        super();
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        String responseData = "";
        String firstname = request.getParameter("firstname");
        String lastname = request.getParameter("lastname"); 
        System.out.println("DATOS - First Name: " + firstname + " / Last name: " + lastname);
        if (firstname.equals("Jose") && lastname.equals("Bernal"))
            responseData = "USUARIO CONOCIDO - Name : " + firstname + " / Last name: " + lastname;
        else
            responseData = "USUARIO DESCONOCIDO - Name: " + firstname + " / Last name: " + lastname;

        System.out.println(responseData);

        OutputStream stream = response.getOutputStream();
        OutputStreamWriter writer = new OutputStreamWriter(stream, "UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/plain");
        writer.write(responseData);
        writer.flush();
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        String responseData = "";
        String user = request.getParameter("username");
        String pass = request.getParameter("password");
        if (user.equals("Puma") && pass.equals("Bernal"))
            responseData = "DATOS CORRECTOS - Username : " + user + " / Password: " + pass;
        else
            responseData = "DATOS INCORRECTOS - Username: " + user + " / Password: " + pass;

        System.out.println(responseData);

        OutputStream stream = response.getOutputStream();
        OutputStreamWriter writer = new OutputStreamWriter(stream, "UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/plain");
        writer.write(responseData);
        writer.flush();
    }
}
Java(Messages.Java):

<!DOCTYPE html>
<html>
<head>
    <meta charset="ISO-8859-1">
    <title>JAVA-AJAX Test</title>
    <script type="text/javascript" src="ajaxfunctions.js"></script>
</head>
<body>
    <h1>Enviar POST mediante AJAX</h1>
    <input type="text" id="username" name="username" value="Puma" />
    <input type="password" id="password" name="password" value="Bernal" />
    <input type="button" id="sendpost" name="sendpost" value="Send POST" />
    <hr/>
    <h1>Enviar GET mediante AJAX</h1>
    <input type="text" id="firstname" name="firstname" value="Jose" />
    <input type="text" id="lastname" name="lastname" value="Bernal" />
    <input type="button" id="sendget" name="sendget" value="Send GET" />
</body>
window.onload = function()
{
    xhr = new XMLHttpRequest();

    //*************************************POST FUNCTIONS************************************************

    var sendpost = document.getElementById("sendpost");

    sendpost.onclick = function()
    {
        var username = document.getElementById("username");
        var password = document.getElementById("password");

        if (username.value == "" || password.value == "")
            alert("Debe ingresar el usuario y la contraseña!");
        else
            enviarDatosPost(username, password);
    }

    function enviarDatosPost(username, password)
    {
        xhr.onreadystatechange = prepararRespuestaPost;
        xhr.open("POST", "Messages", true);
        var datosPost = crearDatosPost(username, password);
        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        alert("POST: " + datosPost);
        xhr.send(datosPost);
    }

    function crearDatosPost(username, password)
    {
        var datosPost = "username="+username.value+"&password="+password.value;
        return datosPost;
    }

    function prepararRespuestaPost()
    {
        if (xhr.readyState == 4)
        {
            if (xhr.status == 200)
            {
                alert("XHR responseText: " + xhr.responseText + "\nXHR statusText: " + xhr.statusText);
            }
        }
    }

    //*************************************GET FUNCTIONS************************************************

    var sendget = document.getElementById("sendget");

    sendget.onclick = function()
    {
        var firstname = document.getElementById("firstname");
        var lastname = document.getElementById("lastname");

        if (firstname.value == "" || lastname.value == "")
            alert("Debe ingresar el nombre y el apellido!");
        else
            enviarDatosGet(firstname, lastname);
    }

    function enviarDatosGet(firstname, lastname)
    {
        xhr.onreadystatechange = prepararRespuestaGet;
        xhr.open("GET", "Messages", true);
        var datosGet = crearDatosGet(firstname, lastname);
        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        alert("GET: " + datosGet);
        xhr.send(datosGet);
    }

    function crearDatosGet(firstname, lastname)
    {
        var datosGet = "firstname="+firstname.value+"&lastname="+lastname.value;
        return datosGet;
    }

    function prepararRespuestaGet()
    {
        if (xhr.readyState == 4)
        {
            if (xhr.status == 200)
            {
                alert("XHR responseText: " + xhr.responseText + "\nXHR statusText: " + xhr.statusText);
            }
        }
    }
}
package com.puma.servlets;

import java.io.IOException;
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.io.*;
/**
 * Servlet implementation class Messages
 */
@WebServlet(asyncSupported = true, urlPatterns = { "/Messages" })
public class Messages extends HttpServlet
{
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public Messages()
    {
        super();
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        String responseData = "";
        String firstname = request.getParameter("firstname");
        String lastname = request.getParameter("lastname"); 
        System.out.println("DATOS - First Name: " + firstname + " / Last name: " + lastname);
        if (firstname.equals("Jose") && lastname.equals("Bernal"))
            responseData = "USUARIO CONOCIDO - Name : " + firstname + " / Last name: " + lastname;
        else
            responseData = "USUARIO DESCONOCIDO - Name: " + firstname + " / Last name: " + lastname;

        System.out.println(responseData);

        OutputStream stream = response.getOutputStream();
        OutputStreamWriter writer = new OutputStreamWriter(stream, "UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/plain");
        writer.write(responseData);
        writer.flush();
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        String responseData = "";
        String user = request.getParameter("username");
        String pass = request.getParameter("password");
        if (user.equals("Puma") && pass.equals("Bernal"))
            responseData = "DATOS CORRECTOS - Username : " + user + " / Password: " + pass;
        else
            responseData = "DATOS INCORRECTOS - Username: " + user + " / Password: " + pass;

        System.out.println(responseData);

        OutputStream stream = response.getOutputStream();
        OutputStreamWriter writer = new OutputStreamWriter(stream, "UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/plain");
        writer.write(responseData);
        writer.flush();
    }
}

如果你看,POST和GET的结构完全相同。POST可以很好地工作,但GET不能。我做错什么了吗?提前谢谢

POST通过在请求主体中发送参数来工作。GET使用URL中编码的参数工作。因此,对于GET部分,您需要像下面这样将变量附加到URL:myurl?paramname=paramvalue¶mname2=paramvalue3


在将参数附加到URL之前,不要忘记对参数进行编码

POST通过在请求主体中发送参数来工作。GET使用URL中编码的参数工作。因此,对于GET部分,您需要像下面这样将变量附加到URL:myurl?paramname=paramvalue¶mname2=paramvalue3


在将参数附加到URL之前,不要忘记对参数进行编码

别忘了,如果答案回答了你的问题,你可以接受。好的,谢谢!我对stackoverflow还不熟悉,但我想是它做到了!别忘了,如果答案回答了你的问题,你可以接受。好的,谢谢!我对stackoverflow还不熟悉,但我想是它做到了!