Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在servlet中将HahMap数组转换为json对象并在jsp页面中显示_Java_Javascript_Jquery_Json_Jsp - Fatal编程技术网

Java 在servlet中将HahMap数组转换为json对象并在jsp页面中显示

Java 在servlet中将HahMap数组转换为json对象并在jsp页面中显示,java,javascript,jquery,json,jsp,Java,Javascript,Jquery,Json,Jsp,我想获取所有表行并将它们添加到hashmap数组中,然后将它们转换为json对象,使用ajax和jquery发送到jsp页面。我在jsp页面中显示内容时遇到问题。 我已经成功地编写了下面的代码,需要帮助来纠正/改进它,我不知道如何在jsp页面中显示它。我是jquery和json的初学者 try { String res = request.getParameter("hello"); String user = ""; String pass =

我想获取所有表行并将它们添加到hashmap数组中,然后将它们转换为json对象,使用ajax和jquery发送到jsp页面。我在jsp页面中显示内容时遇到问题。 我已经成功地编写了下面的代码,需要帮助来纠正/改进它,我不知道如何在jsp页面中显示它。我是jquery和json的初学者

   try {
       String res = request.getParameter("hello");
       String user = "";
       String pass = "";
       String port = "";
       String dbname = "";
       String host = "";
       String driver = "oracle.dbc.driver.OracleDriver";
       Connection con;
       PreparedStatement ps;
       ResultSet rs;
       String json = null;
       String url = "jdbc:oracle:thin:@"+host+":"+port+":"+dbname;

       Map<String,String> map = new HashMap<String,String>();
       List<Map<String,String>> list = new ArrayList<Map<String,String>>();

       try{
            Class.forName(driver).newInstance();
            con = DriverManager.getConnection(url,user,pass);
            ps = con.prepareStatement("select * from employee");

            rs = ps.executeQuery();
            while(rs.next()){
                map.put("name", rs.getString(1));
                map.put("id", rs.getString(2));
                map.put("salary",rs.getString(3));
                list.add(map);
            }                
            json = new Gson().toJson(list);
            response.setContentType("application/json");
            response.setCharacterEncoding("UTF-8");
            response.getWriter().write(json);
       }catch(Exception e){               
       }


    } finally {            
        out.close();
    }
index.jsp

<script src="http://code.jquery.com/jquery-latest.js"></script>
    <script>
        $(document).ready(function(){
            $("#push").click(function(){
               var value = $("#t").val();
               $.post('jsonServlet',{hello:value},function(data){

             //     ??
              //    ??
              //    ??

               });
            });            
        });
    </script>
</head>
<body  style="position: absolute;min-height: 700px;min-width: 1300px">
    <form>
        <input type="button" value="PushMe" id="push">
        <input type="text" id="t" value="my data">
        <div style="position: absolute;height: 50%;width: 60%;" id="myDiv">

        </div>
    </form>        
</body>
需要jsp页面中的帮助以显示div中哈希映射的内容。。。 稍后,我将使用文本框更改div以存储各个列的值,以便用户可以修改表的内容并再次更新表行


需要帮助

使用地图,改为创建类:

class Person{
    public final String name;
    public final String id;
    public final String salary;
    public Person(String name, String id, String salary){
        this.name=name;
        this.id=id;
        this.salary=salary;
    }
}
不需要是公共类,您可以将其放在servlet java文件中。Gson知道如何将类序列化为json

从数据库读取:

while(rs.next()){
    list.add(new Person(rs.getString(1),rs.getString(2),rs.getString(3)));
}  
在javascript中,如下所示:

$.post(
    'jsonServlet', // <- may screw up path here
    { hello: value },
    function(data){
        var table = '<table>';
        for(var i = data.length, l = data.length; i>0; i--){
            // one of over 9000 ways to make js loops work faster
            var person = data[l-i]; // <- this one also does not screw up order
            var row = '<tr>';
            row +='<td>'+person.name+'</td>';
            row +='<td>'+person.id+'</td>';
            row +='<td>'+person.salary+'</td>';
            row +='</tr>';
            table += row;
        }
        table += '</table>';
        $('#myDiv').html(table);
    },
    'json'
);  

您可能希望在jsp中的某个地方预先准备好表,可能是在一个隐藏的div中,并将其用作模板。

关于此设计:到目前为止,javascript向下循环比向前循环快几百倍,在所有浏览器中都是一致的。缓存数组的长度几乎没有任何影响。谢谢,先生,真的很有帮助。您好,先生,我知道我已将其标记为已解决,但仍然存在一个问题。我没有从jsp中的servlet获取值。甚至不是一个简单的字符串。我的gson方法或ajax调用中的url模式有问题吗?请尝试在浏览器开发工具>网络控制台中检查服务器的响应。若它是404错误,而你们实际上看到完整的url是错误的,那个么它的url。如果是空响应或500个内部请求头,那么您的java是错误的。我不会猜的。