Java doPost()在使用getParameter()时工作,但doGet()总是抛出null..为什么
Java doPost() works when using getParameter(),but doGet() always throws null... WHY?
我有一个servlet与doGet()和doPost()函数。当我使用getParameter()上doPost()它工作完美,但是当我使用getParameter()内部doGet()它不能得到参数…它说它们是空的。这些是我的代码。
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>
JavaScript (ajaxfunctions.js):
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);
}
}
}
}
Java (Messages.java):
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之前对它们进行编码。
相关文章:
- 数组在递归方法中设置为null
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 无法获取属性'selectedIndex'的未定义引用或null引用
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- 来自文本输入null的html javascript变量
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- php代码在textbox更改事件上显示null
- 相同的RegExp返回不同的结果-第一次是正确的结果,第二次是null
- 在php中提交数据时,如果某些值为null,而某些值为非null,如何进行查询
- 未捕获的类型错误:无法读取属性'addEventListener'的null chrome扩展名
- 为什么localStorage[“..”]未定义,而localStorage.getItem(“..”)为null
- ajax在输入等于null时进行检查
- html+javascript:如何在某些条件下禁用dropdownlist中的null选项
- 未捕获的类型错误:无法读取属性'状态'在react中为null
- contentWindow.document.body is null
- 在经过DATE验证的列中创建null值
- 为什么是文档.旧版应用程序中的DOM-object.properties为null
- if(foo!==null)的计算结果为true,即使foo为null
- php函数的ajax html$_POST值返回null
- Java doPost()在使用getParameter()时工作,但doGet()总是抛出null..为什么