【公司动态添加行】前台穿一个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对象字符串; 通 ...
随机推荐
- bzoj2331 [SCOI2011]地板
Description lxhgww的小名叫“小L”,这是因为他总是很喜欢L型的东西.小L家的客厅是一个的矩形,现在他想用L型的地板来铺满整个客厅,客厅里有些位置有柱子,不能铺地板.现在小L想知道,用 ...
- BZOJ 3289: Mato的文件管理 【莫队 + 树状数组】
任意门:https://www.lydsy.com/JudgeOnline/problem.php?id=3289 3289: Mato的文件管理 Time Limit: 40 Sec Memory ...
- 可枚举接口的知识点(IEnumerable 接口)要使用foreach,就必须实现可枚举接口
- 集合HashMap和HashSet中迭代器的使用
package setTest; import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import ...
- sqoop 1.99.7 安装及配置
一 下载sqoop 1.99.7 http://mirror.bit.edu.cn/apache/sqoop/1.99.7/ 二 解压安装文件 三 配置Sqoop 环境变量 最后把mysql的驱动j ...
- C#发送邮件类库
public class Email { #region 发送邮件 /// <summary> /// 发送邮件 /// </summary> /// <param na ...
- java从mysql读写数据乱码问题
mysql默认使用latin(ISO-8859-1),而java默认使用unicode编码.因此在JAVA中向MYSQL数据库插入数据时,或者读取数据时,都需要先转换一下编码方式. 1.首先查看数据库 ...
- React通过dva-model-extend实现 dva 动态生成 model
前言 实现通过单个component 单个router通过相应的标识对应产生不同model实现数据包分离,model namespce将会覆盖基础的Model,其中的model[state|subsc ...
- JQuery的焦点事件focus() 与按键事件keydown() 及js判断当前页面是否为顶级页面 子页面刷新将顶级页面刷新 window.top.location
相关代码如下,使用看注解 <script type="text/javascript"> if(window.self != window.top){ window.t ...
- 『ACM C++』 PTA 天梯赛练习集L1 | 040-41
近期安排 校赛3.23天梯赛3.30华工校赛 4.21省赛 5.12 ------------------------------------------------L1-040----------- ...