<!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的字符串到后台,并解析的更多相关文章

  1. js实现配置菜品规格时,向后台传一个json格式字符串

    由于本公司做的是订餐平台,那么在上传菜品时,需要配置菜品规格,比如份量(大中小),味道(猛辣,中辣,微辣) 由于这些数据,在表的设计时 没有保存到菜品表,那么在点击保存菜品数据时,配置规格这块数据,我 ...

  2. 【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 ...

  3. 如何在前台脚本通过json传递数据到后台(使用微软自带的ajax)

    首先,我们要在前台引入json的脚本,以便于把js对象序列化 <script type="text/javascript" src="/js/jquery.json ...

  4. 前台页面中json和字符串相互转化

    比如我有两个变量,我要将a转换成字符串,将b转换成JSON对象: var a={"name":"tom","sex":"男&quo ...

  5. 玩转Web之Json(三)-----easy ui怎么把前台显示的dataGird中的所有数据序列化为json,返回到后台并解析

    最近做一个项目时,需要在dataGird中插入<input>,即文本输入框,当点击提交时,需要把文本框里填的数据返以及其他列的一些信息以json数组的格式返回到后台,虽然我实现了该功能,但 ...

  6. JSON格式字符串作为存储过程参数解析

    1.新建可编程性的表值函数(SQLSERVER) USE [xxxx] GO /****** Object: UserDefinedFunction [dbo].[parseJSON] Script ...

  7. asp.net MVC 给Controler传一个JSon集合,后台通过List<Model>接收

    需求情景 View层经常需要通过Ajax像后台发送一个json对象的集合,但是在后台通过List<Model>无法接收,最后只能通过妥协的方式,在后台获取一个json的字符串,然后通过Js ...

  8. 关于json和字符串之间的转换

    在最近的工作中,使用到JSON进行数据的传递,特别是从前端传递到后台,前台可以直接采用ajax的data函数,按json格式传递,后台Request即可,但有的时候,需要传递多个参数,后台使用requ ...

  9. JavaScript Json对象和Json对象字符串的关系 jsonObj<->JsonString

    JavaScript Json对象和Json对象字符串的关系 jsonObj<->JsonString 如下示例: 直接写的a1就是一个Json对象,a2 就是一个Json对象字符串; 通 ...

随机推荐

  1. 编程三基:cpu:算法,总线(io):一切皆文件;内存:运行空间

    编程三基:cpu:算法,总线:一切皆文件:内存:数据.运行空间 原文找不到了.

  2. 图片验证码——base64编码的使用

    一.介绍: 1.base64编码简介: Base64就是一种编码格式.Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成 ...

  3. 面试准备——(二)专业知识(2)Python

    面试遇到的问题: 滴滴: 1. Python的数据结构 2. list和tuple的区别 3. list中有哪些操作?append和extend的区别? 4. list和dict的却别?dict是有序 ...

  4. Advanced Plugin Concepts

    Provide Public Access to Default Plugin Settings An improvement we can, and should, make to the code ...

  5. RockBrain USB Server- 云计算虚拟化USB设备集中管理、远程共享解决方案(涉及银企直联)

    RockBrain USB Server- 云计算虚拟化USB设备集中管理.远程共享解决方案(涉及银企直联) 技术需求: 1.企业员工的大量USB Key,需要将key接入USB Server虚拟池, ...

  6. 轻量ORM-SqlRepoEx (七)AspNetCore应用

    ORM-SqlRepoEx 是 .Net平台下兼容.NET Standard 2.0,一个实现以Lambda表达式转转换标准SQL语句,使用强类型操作数据的轻量级ORM工具,在减少魔法字串同时,通过灵 ...

  7. ajax 与 axios区别

    Ajax: Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术. Ajax = 异步 J ...

  8. VMware10安装CentOS7

    先去网上下载一个VMware的破解版或者激活版,安装配置这里就不介绍了自行下载安装,基本过程相当于windows下安装个软件而已. CentOS7镜像下载就下阿里云站点的这是链接 http://mir ...

  9. npm安装包时 --save 和 --save-dev 的区别

    以npm 安装 vue为例 1.npm install vue: 会把vue包安装到node_modules目录中: 不会修改package.json文件: 之后运行npm install命令时,不会 ...

  10. 浅谈HTML5中canvas中的beginPath()和closePath()的重要性

    beginPath的作用很简单,就是开始一段新的路径,但在使用canvas绘图的过程中却非常重要 先来看一小段代码: var ctx=document.getElementById("can ...