ajax实现无刷新获取数据javascript+jsp+serverlet

jsp页面通过ajax获取后台serverlet传来的数据

serverlet页面代码

package com.shxt.lesson16homework.Servlets;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class SelStudent extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3308/lingyun1", "root", "mysql");
            Statement stmt = conn.createStatement();
            ArrayList<Map<String, String>> aList = new ArrayList<Map<String, String>>();
            ResultSet rs = stmt.executeQuery("select * from student");
            ResultSetMetaData rsmd = rs.getMetaData();
            String xx="[";            //xx用于将结果集转化为json数据格式必须为[{"":"","":""},{"":"","":""},{"":"","":""}]
            while (rs.next()) {
            //    Map<String, String> hmap = new HashMap<String, String>();
                xx+="{";
                for (int i = 1; i <= rsmd.getColumnCount(); i++) {
                    String key = rsmd.getColumnName(i);
                    xx+="\""+rsmd.getColumnName(i)+"\""+":"+"\""+rs.getString(key)+"\""+",";

                    //String value = rs.getString(key);
                    //hmap.put(key, value);
                }
                xx=xx.substring(0,xx.length()-1)+"},";
                //aList.add(hmap);
            }
            xx=xx.substring(0,xx.length()-1);
            xx+="]";
            response.setContentType("text/html; charset=utf-8");
            //String xx =aList.toString();
            PrintWriter out = response.getWriter();
            //xx = xx.substring(1, xx.length()-1);
            System.out.println(xx);            //将得到的数据输出
            out.print(xx);
            out.flush();
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

jsp页面代码

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
<script type="text/javascript">
    function loadStudent() {
        var req = new XMLHttpRequest();
        req.onreadystatechange = function() {
            if (req.readyState == 4) {
                var data = req.responseText;
                //alert(data);
                var myObj = eval(‘(‘+data+‘)‘);                //其中data必须为json格式的数据格式如[{"":"","":""},{"":"","":""},{"":"","":""}]                //不然eval函数会报错
                alert(myObj.length);
                for ( var i = 0; i < myObj.length; i++) {
                    var selObj = document.getElementById("bodyId");
                    var newTr = document.createElement("TR");

                    var newTd1 = document.createElement("TD");
                    newTd1.innerHTML = "<input type=‘radio‘ id=‘sf"+myObj[i].code+"‘  name=‘sfxz‘ value=‘" +myObj[i].code + "‘ />";
                    var newTd2 = document.createElement("TD");
                    newTd2.innerHTML = "<span align=‘center‘ id=‘dhh"+myObj[i].code+"‘>" + myObj[i].tele+ "<span>";
                    var newTd3 = document.createElement("TD");
                    newTd3.innerHTML = "<span align=‘center‘ id=‘jg"+myObj[i].code+"‘>"+  myObj[i].region + "<span>";
                    var newTd4 = document.createElement("TD");
                    newTd4.innerHTML = "<span align=‘center‘ id=‘xm"+myObj[i].code+"‘>" +  myObj[i].name+ "<span>";
                    var newTd5 = document.createElement("TD");
                    newTd5.innerHTML = "<span align=‘center‘ id=‘xh"+myObj[i].code+"‘>" +  myObj[i].code+ "<span>";
                    newTr.appendChild(newTd1);
                    newTr.appendChild(newTd5);
                    newTr.appendChild(newTd4);
                    newTr.appendChild(newTd3);
                    newTr.appendChild(newTd2);
                    selObj.appendChild(newTr);
                }
            }
        };
        req.open("post", "selStu", true);
        req.send(null);
    }
    function updatestu()
    {
        var stuid="";
        var rdsObj = document.getElementsByName("sfxz");    //一组对象
        for (var i = 0; i < rdsObj.length; i++) {
            if (rdsObj[i].checked == true) {
                //alert(rdsObj[i].value + " 被选中");
                stuid=rdsObj[i].value
            }
        }

        var resultObj = window.showModalDialog("stuupdate.jsp", stuid);         //产生模式对话框
        document.getElementById("xh"+stuid).innerHTML = resultObj.code;
        document.getElementById("xm"+stuid).innerHTML = resultObj.name;
        document.getElementById("jg"+stuid).innerHTML = resultObj.region;
        document.getElementById("dhh"+stuid).innerHTML = resultObj.tele;

    }
    function deletestu()
    {
        var stuid="";
        var rdsObj = document.getElementsByName("sfxz");    //一组对象
        for (var i = 0; i < rdsObj.length; i++) {
            if (rdsObj[i].checked == true) {
                //alert(rdsObj[i].value + " 被选中");
                stuid=rdsObj[i].value
            }
        }
        document.getElementById("xh"+stuid).innerHTML ="";
        document.getElementById("xm"+stuid).innerHTML = "";
        document.getElementById("jg"+stuid).innerHTML = "";
        document.getElementById("dhh"+stuid).innerHTML = "";
        //document.getElementById("sf"+stuid)
    }
</script>
</head>
<body >
    <table>
        <thead>
            <tr>
                <td align="center" width="100px" height="100px">选择</td>
                <td align="center" width="100px" height="100px">学号</td>
                <td align="center" width="100px" height="100px">姓名</td>
                <td align="center" width="100px" height="100px">籍贯</td>
                <td align="center" width="200px" height="100px">电话</td>
            </tr>
        </thead>
        <tbody id="bodyId">
        </tbody>
        <tfoot>
            <input type="button" value="修改数据" onclick="updatestu()"/>
            <input type="button" value="删除" onclick="deletestu()" />
        </tfoot>
    </table>
</body>
</html>

模式对话框中的jsp页面代码

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
<script type="text/javascript">
//【重点】:onload事件自动执行一个javascript代码,以获取到模态参数
function loadParam() {
    //对话参数
    var loadParamObj = window.dialogArguments; //parameter / properties / attribute

        var req = new XMLHttpRequest();
        req.onreadystatechange = function() {
            if (req.readyState == 4) {
                var data = req.responseText;
                //alert(data);
                var myObj = eval(‘(‘+data+‘)‘);

                document.getElementById("xm").value =  myObj[0].name;
                document.getElementById("xh").value =   myObj[0].code;
                document.getElementById("jg").value =   myObj[0].region;
                document.getElementById("dhh").value =  myObj[0].tele;

            }
        };
        req.open("post", "selStu?stuid="+loadParamObj, true);
        req.send(null);

    //alert(loadParamObj);
}

function updateInfo() {
    //如何将信息返回给模态窗体的调用者
    var reObj = new Object();
    reObj.code = document.getElementById("xh").value;
    reObj.name = document.getElementById("xm").value;
    reObj.region =document.getElementById("jg").value;
    reObj.tele =document.getElementById("dhh").value;
    window.returnValue = reObj;    //returnValues会将信息返回给模态窗体的调用者(打开模态的页面)
    window.close();    //关闭当前的窗体
}
</script>
</head>
<body >

学号:<input id="xh" readonly="readonly"/><br />
姓名:<input id="xm" /><br />
籍贯<input id="jg" /><br />
电话号<input id="dhh" /><br />
<input type="button" value="修改" onclick="updateInfo()" />
</body>
</html>

ajax实现无刷新获取数据javascript+jsp+serverlet

时间: 2024-08-25 16:32:55

ajax实现无刷新获取数据javascript+jsp+serverlet的相关文章

window.history.pushState与ajax实现无刷新更新页面url

ajax能无刷新更新数据,但是不能更新url HTML5的新API: window.history.pushState, window.history.replaceState 用户操作history,点击前进后退按钮会触发popstate事件. 这些方法可以协同window.onpopstate事件一起工作. 改变url的demo 本页是foo.html,url改变成bar.html,内容却不变 <!DOCTYPE html> <html> <head> <me

ajax无刷新获取php后台数据

1 $.ajax({ 2 url:"result.php", 3 //data:{"page":i}, 4 dataType:"json", 5 beforeSend:function(){ 6 $("#load").append("<div id='loading'><img src='loading.gif'></div>"); 7 }, 8 success:func

struts2+jquery 实现ajax无刷新更新数据

前几天为了实现一个struts 的 ajax无刷新更新数据的例子,发现网上资料很少,很多已经过时或者链接都失效了 不过整合他们的资料,加上自己的研究,终于实现了效果 要求:1.各个学院提交学生数据到服务器,要求ajax 无刷新更新数据, 2.服务器端返回"更新成功"的提示窗口: 3.之后,使用jquery 更新input输入框的value值,为实现jquery 打印页面局部数据做准备. 此处使用struts2的第二种方法,(修改struts 配置文件,增加ajax package 的方

jsp+ajax实现无刷新

jsp+ajax实现无刷新,鼠标离开文本框即验证用户名 jsp+ajax实现无刷新,鼠标离开文本框即验证用户名(本功能多用于注册) input.jsp(表单提交页面): %@ page contentType=text/html; charset=GBK % html style type=text/css !-- @import url(../aqgc/style_c.css); --jsp+ajax实现无刷新,鼠标离开文本框即验证用户名(本功能多用于注册) input.jsp(表单提交页面)

jsp+ajax实现无刷新鼠标离开文本框即验证用户名

欢迎大牛提意见 jsp+ajax实现无刷新,鼠标离开文本框即验证用户名,操作如下:新建一个输入页面,起名为input.jsp, [java] <%@ page contentType="text/html; charset=utf-8"%> <html> <head> <title>jsp+ajax实现无刷新_鼠标离开文本框即验证用户名</title> <meta http-equiv="Content-Typ

Ajax实现无刷新分页

注:本文中使用到的一些类库在前面文章都能找到源代码,我会在文中指明链接所在,为了缩短文章篇幅,由此带来的阅读不便,敬请谅解. 本文讲解 Ajax 实现无刷新分页.实现原理.代码展示.代码下载. 这里需要说明一些知识: 1.Ajax 无刷新页面的好处:提供良好的客户体验,通过 Ajax 在后台从数据库中取得数据并展示,取缔了等待加载页面而出现的空白状态: 2.那么,Ajax 无刷新页面是运行在动态页面(.PHP)?还是静态页面(.html/.htm/.shtml)?答案是:静态页面: 3.实现原理

AJAX PHP无刷新form表单提交的简单实现(推荐)

下面小编就为大家带来一篇AJAX PHP无刷新form表单提交的简单实现(推荐).小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 ajax.php <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head>

使用ajax实现无刷新改变页面内容

如何使用ajax实现无刷新改变页面内容(也就是ajax异步请求刷新页面),下面通过一个小demo说明一下,前端页面代码如下所示 1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="p_tg.aspx.cs" Inherits="p_tg" %> 2 3 <!DOCTYPE html> 4 5 <html> 6 <head&

使用AjaxPro实现无刷新更新数据

需求 在一个页面动态无刷新的更新后台得到的数据.要想无刷新的更新数据,需要使用Javascript能够获取后台返回的数据,然后通过第三方Javascript库(JQuery等)动态更新web页面DOM对应的数值即可,而AjaxPro库恰恰具有使用Javascript语句获取后台方法返回的数据的功能,问题就这样迎刃而解,顿时感觉萌萌哒. 流程 整个过程如下图所示: 详细操作 首先下载AjaxPro库(点击此处下载AjaxPro库),下载后解压得到两个dll文件,如下所示: 其中AjaxPro.2.