【公司动态添加行】前台穿一个json的字符串到后台,并解析
<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>代码自动转换</title>
   <link href="css/bootstrap.min.css" rel="stylesheet" type="text/css"/>
    <link href="css/base.css" rel="stylesheet" type="text/css"/>
    <link href="css/fistIndex.css" rel="stylesheet" type="text/css"/>
 </head>
 <body>
  <div id="header_s">
	<ol>
		<li><img src="">图片自己定义</li>
		<li class="back"><a href="daima.html" >通过类自动生成代码</a></li>
		<li class="back"><a href="daima2.html">通过SQL自动生成代码</a></li>
		<li class="back"><a href="daima3.html">使用说明</a></li>
	</ol>
</div>
  <div id="content_s" class="clear">
		<h4>表单输入和验证</h4>
			<form>
				<div  id="div_monad">
					<tr>
						<td>java类包路径</td>
						<td><input placeholder="请输入java类包路径" type="text" id="packeDir"/><span id="error1"></span> </td>
						<td>  <input placeholder="请输入类名" type="text" id="className"/><span id="error2"></span> </td>
</tr><br>
					<tr class="clear">
						<td><input type="button" value="添加" id="btn_addUpload"></td>
						<td><input type="button" value="生成代码" id="btn_creatCode"></td>
						<td><input type="button" value="保存" id="btn_save"></td>
					</tr><br>
					<tr id="table_s">
						<th>权限</th>
						<th>类型</th>
						<th>属性名</th>
						<th>主键</th>
						<th>备注</th>
					</tr>
				<div id="div_tab_first" ></div>
				</div>
			<table  id='tbody' align="center">
</table>
		</form>
	</div>
   <script src="js/jquery-2.1.4.min.js" type="text/javascript"></script>
   <script >
		$(".back").mousemove(function(){
			$(this).attr("style","background-color:#432;");
		});
		$(".back").mouseout(function(){
			$(this).attr("style","");
		});
var rLicNoKey = 'id';
       /*  var uploadControlString = '<tr class="even">'
                + '<td align="center"><input id="spCodeFile_{index}" type="text" validators="validators:required,maxLength=10,pattern=regex[数据格式不正确]" regex="^((\-)?\d*(\.)?\d*)$" maxlength="10" name="{spCode}"></input>'
                + '<td align="center"><input id="spNameFile_{index}" type="text" style="width: 95%;" maxlength="60" name="{spName}"></input></td>'
                + '</tr>'; */
         var uploadControlString = '<tr><td><select name="spLimit" id="spLimit_{index}"><option value="private">private</option><option value="public">public</option></select></td>'
					+'<td><select name="spNature" id="spNature_{index}"><option value="String">String</option><option value="int">int</option><option value="char">char</option><option value="byte">byte</option><option value="shot">shot</option><option value="long">long</option><option value="float">float</option><option value="double">double</option><option value="boolean">boolean</option></select></td>+'
					+'<td><input type="text" id="spAttName_{index}"></td>'
					+'<td><input id="sppriKey_{index}" type="checkbox"/></td>'
					+'<td><input type="text" id="spRemark_{index}"></td>'
                	+'<td><a href="#" id="remove_{index}">删除</a></td>'
					+'</tr>';
var uploadGlobalArray = new Array();
        var uploadGlobalMap = {};
        var rowSelects = {};
        var uploadTab = $('#div_tab_first');
        var indexGlobal = 0;
        var countGlobal = 0;
addUpload();
function addUpload() {
            indexGlobal = indexGlobal + 1;
            var t = $(this);
            var u = '' + uploadControlString;
            var index = indexGlobal;
            //--修改新增控件的名称、ID和题头
            u = u.replace('{index}', index).replace('{index}', index).replace('{index}', index).replace('{index}', index).replace('{index}', index).replace('{index}', index);
       /*      u = u.replace('{spName}', index);
u = u.replace('{spCode}', index); */
            var $upload = $(u);
//                uploadGlobalArray.push($upload);
            uploadGlobalMap[index] = $upload;
            uploadTab.append($upload);
            var ctlUploadNewId = "select_" + index;
            $("#" + ctlUploadNewId).html($("#listSample").html());
            rowSelects[index] = index;
            var id_remove = "#remove_" + index;
            //                alert(id_remove);
            $(id_remove).bind('click', {
                'index': index
            }, function (e) {
                removeOne(e);
            });
            countGlobal = countGlobal + 1;
        }
          function removeUpload() {
            if (countGlobal > 0) {
                var t = $(this);
//                var temp = uploadGlobalArray.pop();
                var temp = uploadGlobalMap[indexGlobal];
                delete uploadGlobalMap[indexGlobal];
                delete rowSelects[indexGlobal];
                temp.remove();
                countGlobal = countGlobal - 1;
            }
        }
           function removeOne(that) {
            var index = that.data.index;
            var temp = uploadGlobalMap[index];
//                uploadGlobalArray.pop();
            delete uploadGlobalMap[index];
            delete rowSelects[index];
            temp.remove();
            countGlobal = countGlobal - 1;
            return false;
        }
         function save() {
         /*    if (countGlobal <= 0) {
                alert("数据输入不完整");
                return false;
            } else { */
                var jsonItemsString = "";
				for ( var i in rowSelects) {
						var spLimit = $("#spLimit_" + rowSelects[i]).val();
						var spNature = $("#spNature_" + i).val(); //
						var spAttName = $("#spAttName_" + i).val(); //
						var sppriKey = $("#sppriKey_" + i).val(); //
						var spRemark = $("#spRemark_" + i).val(); //
if (spNature == "") {
							alert("属性名不能为空");
							return false;
						}
						if (spNature != "") { //-- HS编号与品名都未录入的行忽略掉,只保存都录入的行
							var tempString = '{"spLimit":"' + spLimit 
							+ '","spNature":"' + spNature    + '","spAttName":"' + spAttName 
							 + '","sppriKey":"' + sppriKey   + '","spRemark":"' + spRemark+'"}';
							if (jsonItemsString.length > 0){
								jsonItemsString = jsonItemsString + "," + tempString;
							} else {
								jsonItemsString = tempString;
							}
						}
					}
					var packeDir=$("#packeDir").val();
					var className=$("#className").val();
					var nameTotle='{"classDir":"'+packeDir+'","className":"'+className+'"}';
					if (jsonItemsString.length > 0) { //--判断是否有需要保存的数据
						jsonItemsString = "[" + jsonItemsString + "]";
						nameTotle = "[" + nameTotle + "]";
						//ajax  请求
						$.post('insert', {
									'nameTotle':nameTotle,
									'jsonItemsString' : jsonItemsString
								}, function(data) {
									change();
									alert(data);
								});
					} else {
						return false;
					}
}
$('#btn_addUpload').bind('click', addUpload);
				$('#removeUpload').bind('click', removeUpload);
				$('#btn_save').bind('click', save);
			</script>
 </body>
</html>
package com.feiyx.autojcode;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.feiyx.bean.BigEntity;
import com.feiyx.bean.ClassName;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;
/**
 * @author 【狒狒Q:9715234】
 * @time  2016-1-27 下午5:41:45
 *
 * @motto 既然笨到家,就要努力到家...
 * 
 */
public class FeiTotalManager extends HttpServlet {
	private static final long serialVersionUID = 1L;
public void service(HttpServletRequest request,
			HttpServletResponse response)
			throws ServletException, IOException {
		PrintWriter out = response.getWriter();
		response.setContentType("text/html;charset=utf-8");
String className = request.getParameter("nameTotle");
		List<ClassName> classNameList = JsonUtil.getJavaCollection(
				new ClassName(), className);
//		ClassName classNam=(ClassName)classNameList.get(0);
		System.out.println(className.toString());
String jsonItemsString = request.getParameter("jsonItemsString");
		List<BigEntity> bigEntityList = JsonUtil.getJavaCollection(
                new BigEntity(), jsonItemsString);
		System.out.println(jsonItemsString);
try {
			FeiTotalManager.beanTool(bigEntityList,classNameList);
		} catch (Exception e) {
			e.printStackTrace();
		}
		int i = 0;
		if (i == 1) {
			out.print("O(∩_∩)O 提交成功!"+i);
		} else {
			out.print("o(︶︿︶)o 唉!失败了!");
		}
	}
	/**
	 * 
	 * @param classes
	 * @param entryPath
	 * @param tarPath
	 * @param templateName
	 * @throws Exception
	 */
	public static void createBeanService(List<BigEntity> bigEntity,List<ClassName> className,String templateName) throws Exception{
		String cName=className.get(0).getClassName();   
		String classDir=className.get(0).getClassDir();
/**	SRC的目录  **/
		String PathSrc=Constants.PATH_PROJECT_SRC; 
		/**模板的目录**/
		String templatePath=Constants.PATH_PROJECT_TEMP;
/** 导出的目标路径 **/
File tarfile=new File(PathSrc,cName+"Service.java");
		FileWriter fw = new FileWriter(tarfile);  //导出的目录
File file = new File(templatePath); //模板文件路径
//		String templateName=cName+"service.java";
		String templateEncoding="UTF-8";
Map<String, List> map = new HashMap<String, List>();
map.put("classList", bigEntity); 
		map.put("className", className); 
		createJava(file,templateName, templateEncoding, map , fw);
	}
	/**
	 * 
	 * @param file
	 * @param templateName
	 * @param templateEncoding
	 * @param root
	 * @param fw
	 */
public static void createJava(File file, String templateName,String templateEncoding,Map<?,?> root ,FileWriter fw) {
		 try {
			 Configuration config=new Configuration();
//设置要解析的模板所在的目录,并加载模板文件
		      config.setDirectoryForTemplateLoading(file);
		      //设置包装器,并将对象包装为数据模型
		      config.setObjectWrapper(new DefaultObjectWrapper());
		      config.setDefaultEncoding(templateEncoding);
		      //获取模板,并设置编码方式,这个编码必须要与页面中的编码格式一致
		      Template template=config.getTemplate(templateName,templateEncoding);
		      template.setEncoding(templateEncoding);
template.process(root, fw);
		      fw.flush();
		      fw.close();
		    } catch (IOException e) {
		      e.printStackTrace();
		    }catch (TemplateException e) {
		      e.printStackTrace();
		    }
}
	/**
	 * 
	 * @param c
	 * @param EntryPath
	 * @param tarPath
	 * @throws Exception
	 */
	public static void beanTool(List<BigEntity> list,List<ClassName> className)throws Exception{
		createBeanService(list,className,"temp_inface.ftl");
	}
}
commons-beanutils-1.7.0.jar
commons-collections-3.1.jar
commons-httpclient-3.0.jar
commons-lang-2.3.jar
commons-logging-1.0.4.jar
ezmorph-1.0.4.jar
freemarker.jar
hibernate-annotations.jar
json-lib-2.4-jdk15.jar
mysql-connector-java-5.1.30-bin.jar
rapid-generator-4.0.jar
servlet-api.jar
需要这些jar包
/**得到javaCoolection
	 * List<SafePlan> javaCollection = JsonUtil.getJavaCollection(new SafePlan(), s);
	 * @param clazz
	 * @param jsons
	 * @return
	 */
	public static  <T> List<T> getJavaCollection(T clazz, String jsons) {
		if(StringUtils.isBlank(jsons))
			return null;
		List<T> objs = null;
		JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(jsons);
		if (jsonArray != null) {
			objs = new ArrayList<T>();
			List list = (List) JSONSerializer.toJava(jsonArray);
			for (Object o : list) {
				JSONObject jsonObject = JSONObject.fromObject(o);
				T obj = (T) JSONObject.toBean(jsonObject, clazz.getClass());
				objs.add(obj);
			}
		}
		return objs;
	}
/**
	 * 转换LIST为 jsonStr
	 * @param list
	 * @return
	 */
	public static String getJavaCollectionJsonStr(List list){
		JSONArray jsonArray3 = JSONArray.fromObject( list );       
		return jsonArray3.toString();
	}
public static String getJavaObjectJsonStr(Object list){
          JSONObject fromObject = JSONObject.fromObject(list );       
        return fromObject.toString();
    }
【公司动态添加行】前台穿一个json的字符串到后台,并解析的更多相关文章
- js实现配置菜品规格时,向后台传一个json格式字符串
		
由于本公司做的是订餐平台,那么在上传菜品时,需要配置菜品规格,比如份量(大中小),味道(猛辣,中辣,微辣) 由于这些数据,在表的设计时 没有保存到菜品表,那么在点击保存菜品数据时,配置规格这块数据,我 ...
 - 【spring boot】spring boot 前台GET请求,传递时间类型的字符串,后台无法解析,报错:Failed to convert from type [java.lang.String] to type [java.util.Date]
		
spring boot 前台GET请求,传递时间类型的字符串,后台无法解析,报错:Failed to convert from type [java.lang.String] to type [jav ...
 - 如何在前台脚本通过json传递数据到后台(使用微软自带的ajax)
		
首先,我们要在前台引入json的脚本,以便于把js对象序列化 <script type="text/javascript" src="/js/jquery.json ...
 - 前台页面中json和字符串相互转化
		
比如我有两个变量,我要将a转换成字符串,将b转换成JSON对象: var a={"name":"tom","sex":"男&quo ...
 - 玩转Web之Json(三)-----easy ui怎么把前台显示的dataGird中的所有数据序列化为json,返回到后台并解析
		
最近做一个项目时,需要在dataGird中插入<input>,即文本输入框,当点击提交时,需要把文本框里填的数据返以及其他列的一些信息以json数组的格式返回到后台,虽然我实现了该功能,但 ...
 - JSON格式字符串作为存储过程参数解析
		
1.新建可编程性的表值函数(SQLSERVER) USE [xxxx] GO /****** Object: UserDefinedFunction [dbo].[parseJSON] Script ...
 - asp.net MVC 给Controler传一个JSon集合,后台通过List<Model>接收
		
需求情景 View层经常需要通过Ajax像后台发送一个json对象的集合,但是在后台通过List<Model>无法接收,最后只能通过妥协的方式,在后台获取一个json的字符串,然后通过Js ...
 - 关于json和字符串之间的转换
		
在最近的工作中,使用到JSON进行数据的传递,特别是从前端传递到后台,前台可以直接采用ajax的data函数,按json格式传递,后台Request即可,但有的时候,需要传递多个参数,后台使用requ ...
 - JavaScript Json对象和Json对象字符串的关系 jsonObj<->JsonString
		
JavaScript Json对象和Json对象字符串的关系 jsonObj<->JsonString 如下示例: 直接写的a1就是一个Json对象,a2 就是一个Json对象字符串; 通 ...
 
随机推荐
- codechef Transform the Expression 转换成逆波兰式
			
版权声明:本文作者靖心,靖空间地址:http://blog.csdn.net/kenden23/.未经本作者同意不得转载. https://blog.csdn.net/kenden23/article ...
 - JDBC(4)PreparedStatement
			
PreparedStatement: 是一个预编译对象 是Statement的子接口 允许数据库预编译SQL 执行SQL的时候,无需重新传入SQL语句,它们已经编译SQL语句 执行SQL语句 :exe ...
 - nginx/apache连接数梳理
			
统计连接数,使用netstat命令或ss命令都可以1)统计连接数(80端口) [root@wang ~]# netstat -nat|grep -i "|wc -l 或者:netstat - ...
 - 【Javascript-ECMA6-Fetch详解】
			
Fetch 由于Fetch API是基于Promise设计,因此旧的浏览器并不支持该API,需要引用时引用es6-promise. 基本知识 fetch请求返回response格式 body Fetc ...
 - NopCommerce学习(2) EntityFramework
			
NopCommerce-EntityFramework开发:主要是Controller-Service-Repository的开发方式 操作数据库,主要对象是BaseEntity,IDbContext ...
 - DQL-子查询
			
一:含义 嵌套在其他语句内部的select语句称之为子查询或内查询 外套的语句还可以是 insert,update,delete,一般用select比较多 外面如果是select语句,我们称之为外查询 ...
 - C++笔记008:C++对C的扩展——命名空间 namespace基础
			
原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 第一, 命名空间的意义 命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突. 我认识两位叫“A”的朋友,一 ...
 - .Net core使用Quartz.Net 实现定时任务
			
很多情况下,我们需要完成一些定时执行的功能,用很多定时工具,像:hangfire,TimeJob,以及Quartz.net,不过quartz.net 比较精确一些,功能也比较强大,所以我选择了Quar ...
 - python函数名应用
			
函数名的应用 函数名 的应用分类: 函数就是一个特殊的变量(可以看成一个变量来用) *函数名对应函数的内存地址 *函数名可以做为容器类数据的元素 *函数名可以作为函数的参数 *函数名可以作为函数的返回 ...
 - 浅谈Django的中间件与Python的装饰器
			
浅谈Django的中间件 与Python的装饰器 一.原理 1.装饰器是Python的一种语法应用,利用闭包的原理去更改一个函数的功能,即让一个函数执行之前先到另外一个函数中执行其他需求语句,在执行该 ...