读书人

servlet取值的纳闷

发布时间: 2013-03-01 18:33:02 作者: rapoo

servlet取值的疑惑
本帖最后由 showbo 于 2012-07-19 14:51:56 编辑 最近研究 jquery和ajax时发现一个让我很疑惑的问题,也就是servlet取值的问题,一般在java代码里面通过String name = request.getParameter("name"); 其中括号里面的那个name应该和前台页面的值对应,也就是input type="text" name = "name" 应该和name里面的值name相对应,可是我用jquery的时候,写了一个测试demo

测试ajax.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>itcast.cn用户校验的ajax</title>

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">

<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
<script type="text/javascript" src="jslib/jquery.js"></script>
<script type="text/javascript" src="jslib/verify.js">
</script>
</head>

<body>
用户名校验的ajax实例,请输入用户名:<br/>
<input type="text" id="userName"/>
<input type="button" value="校验" onclick="verify()"/>

<div id="result">
</div>
</body>
</html>


测试verify.js

function verify()
{
//document.getElementsByName("userName");
// document.getElementById("userName");
//alert("userName)");
// jquery的查找节点的值的方式
var jqueryObj = $("#userName");
var userName = jqueryObj.val();
//alert(userName);

$.get("AJAXServer?name=" +userName,null,callback);
}

function callback(data)
{
//alert("服务器端的数据回来了");
//alert(data);
var resultObj = $("#result");
resultObj.html(data);
alert("");
}

AjaxServlet.java
package cn.itcast.project;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;

public class AjaxServlet extends HttpServlet{

/**
*
*/
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
try
{
// request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");

PrintWriter out = response.getWriter();


String name = request.getParameter("name");

if(name == null || name.length() == 0)
{
out.println("用户名不能为空");
}else
{
if(name.equals("wujunjie"))
{
out.println("用户名["+name+"]已经存在,请使用其他账户登录");
}else
{
out.println("用户名["+name+"]尚未存在,可以使用该用户登录");
}
}

}catch(Exception ex)
{
ex.printStackTrace();
}

}

protected void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
doGet(request,response);
}


}


一样可以正确运行,所以我现在搞的很疑惑
[解决办法]
你在这个地方定了name $.get("AJAXServer?name=" +userName,null,callback);
在AjaxServlet中当然用
String name = request.getParameter("name");取值。
如果你这样写:
$.get("AJAXServer?test=" +userName,null,callback);
你在
在AjaxServlet中当然用
String name = request.getParameter("test");取值。
[解决办法]
这个和ajax和jquery没有关系。是传值和取值的关系。
[解决办法]
jsp中,如果是一般的form submit,servlet中是通过标签对应的name属性取值的;
像你写的使用ajax get时,向服务器提交的参数就是你的url中“?”后边的内容,参数名可以任意定义的,servlet中取值也是取你定义的参数名,你url中写的是name 自然取值也是用name取了。
[解决办法]
你看看jquery 的API就知道了。->jQuery.get(url, [data], [callback], [type])

function verify()
{
// document.getElementsByName("userName");
// document.getElementById("userName");
// alert("userName)");
// jquery的查找节点的值的方式
var jqueryObj = $("#userName");
var userName = jqueryObj.val();
// alert(userName);

var params = {"name":userName };
//$.get("AJAXServer?name=" +userName,null,callback);
$.get("AJAXServer",params,callback,"json");

}

function callback(data)
{
// alert("服务器端的数据回来了");
// alert(data);
var resultObj = $("#result");


resultObj.html(data);
alert("");
}

读书人网 >Ajax

热点推荐