首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Ajax >

servlet取值的纳闷

2013-03-01 
servlet取值的疑惑本帖最后由 showbo 于 2012-07-19 14:51:56 编辑最近研究 jquery和ajax时发现一个让我很

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("");
}

热点排行