servlet和jsp数据交互七:JSON字符串
作者:强哥   类别:Web前端    日期:2017-12-08 17:20:36    阅读:3024 次   消耗积分:0 分

某公司由于业务需要,新招聘一批员工。员工的信息全部是以纸质简历的形式呈现,这批员工信息需要公司人事部录入公司系统。现在人事工作人员有两种可以选择的操作方式,第一种:打开员工信息录入页面,添加一条员工信息,点击提交按钮,等待页面提交完成和刷新,然后再次打开员工信息录入页面继续添加,如此反复操作,直到完成全部数据录入;第二种:人事工作人员打开员工信息录入页面,输入一个员工信息,然后点击“添加一条记录”按钮,继续录入下一个员工信息,直到全部员工信息录入完成后,点击“提交”按钮,一次保存所有员工信息。我们分析第一种方式,工作人员需要多次打开信息录入页面,需要多次提交单个员工信息和等待页面跳转;第二种方式只需要打开一次员工信息录入页面,只需要提交一次录入的员工信息,只等待一次页面跳转,相比之下,方式二更节约时间。下面针对第二种操作方式的实现做个演示。

前端页面代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>


<%@ page language="java" import="wnxy.javaweb.demo.dao.po.*" %>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<base href="<%=basePath%>">

 

<title>json数组演示</title>

 

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<!--

<link rel="stylesheet" type="text/csshref="styles.css">

-->

<script type="text/javascript" charset="utf-8" src="js/jquery-1.8.2.min.js"></script>

 

<script type="text/javascript">

        var rowNum = 1;  // 行号

/**

*   添加一行输入框

*/

        function addRow(){

rowNum += 1;

var row = '<tr> ' +

'<td>' + rowNum + '</td>' +

'<td><input type="text" name="name"  /></td>' +

'<td><input type="text" name="sex" /></td>' +

'<td><input type="text" name="addr" /></td>' +

'<td><input type="text" name="age" /></td>' +

'</tr>';

$("#info > tbody").append(row);

}

 

/**

* table标签必须有 <tbody> 标签此方法才适用

@param tabId

*/

        function tableInput2JsonArr(tabId){

var objArr = new Array();  // 对象数组

            var $rows = $("#" + tabId + " > tbody > tr");

$rows.each(function (tr_i, tr){  // 遍历行, rows是jquery对象

                var obj = new Object();  // 单个对象 / 行

                var tds = tr.getElementsByTagName("input");  // dom元素数组

//var tds = tr.getElementsByTagName("td");

                for(var i = 0; i < tds.length; i++){  // 遍历单元格中的输入框

//var inp = tds[i].getElementsByTagName("input")[0];

                    var inp = tds[i];  // 单个input输入框

// 如果 inp 不是未定义和空

                    if(inp != undefined && inp != null){

obj[inp.name] = inp.value; // 设置属性名和值

}

}

objArr[tr_i] = obj;

});

return JSON.stringify(objArr);

}

 

/**

*  提交表单

*/

        function submitForm(){

var tabId = "info";  // 表格的id

            var jsonArrStr = tableInput2JsonArr(tabId);

var url = "jsonDemo?param=" + jsonArrStr;

$.ajax({

url: url,

type:"get",  // 请求方式

async: true,

cache: false,

dataType:"text", // 预期服务器返回数据的类型

success:function(data){

alert(data);  //

$("#msg").html(data);

}

});

}

</script>

</head>

 

<body>

<form id="form" >

<table id="info" >

<thead>

<tr><th>编号</th> <th>姓名</th><th>性别</th> <th>地址</th> <th>年龄</th> </tr>

</thead>

<tbody>

<tr>

<td>0</td>

<td><input type="text" name="name" value="" /></td>

<td><input type="text" name="sex" value="" /></td>

<td><input type="text" name="addr" value="" /></td>

<td><input type="text" name="age" value="" /></td>

</tr>

</tbody>

</table>

</form>

<input type="button" value="  " onClick="submitForm()" />

<input type="button" name="name" onclick="addRow()" value="添加一条记录" />

<span id="msg"></span>

</body>

</html>

 

Servlet代码如下:

response.setContentType("text/json");


// 避免中文取值和传输乱码

request.setCharacterEncoding("utf-8");

response.setCharacterEncoding("utf-8");

 

String arrStr = request.getParameter("param");

System.out.println("提交数据: " + arrStr);

// 使用三方包处理json数组格式字符串

JSONArray jsonArr = JSONArray.fromObject(arrStr);

List<People> list = (List<People>)JSONArray.toList(jsonArr, People.class);

PrintWriter out = response.getWriter();

out.print("保存成功");

该例中,关键点在于灵活的使用JavaScript和jQuery实现JSON数组格式字符串。借此例也向大家介绍下JSON数据格式在后台的一般处理方式。这种处理方式在开发过程中有其使用价值,特别是在上述场景中,页面录入的数据量不小,但是又不是非常大时尤其明显。当然,条条大路通罗马,也还有其他的方案可以处理上述场景,大家可以发散思维,想一套自己的解决方案。最后附上JSON后台处理索依赖的三方包,大家可以到蜗牛学院官方的学院专属QQ群里下载jar包。json三方包

 

 


这样创新的模式,值得你的选择!

蜗牛学院,只为成就更好的你!

还在等什么,赶快关注蜗牛学院官方微信,加入到蜗牛学院的大家庭中来吧!

20181009_153045_341.jpg

   
版权所有,转载本站文章请注明出处:蜗牛笔记, http://www.woniunote.com/article/40
上一篇: 深入理解JVM(一) --内存區域與內存溢出
下一篇: 狂风暴雨也阻挡不了他们坚定的学习信念,蜗牛学院迎来27期新朋友啦!
提示:登录后添加有效评论可享受积分哦!
最新文章
    最多阅读
      特别推荐
      回到顶部