java web 通过前台输入的数据(name-value)保存到后台 xml文件中
一:项目需求,前端有一个页面,页面中可以手动输入一些参数数据,通过点击前端的按钮,使输入的数据保存到后台生成的.xml文件中
二:我在前端使用的是easyui的propertygrid,这个能通过data-options中的URL:
'/task1/com/guodiantong/servlet/JsonToJspServlet.action'这个地址对应后台的servlet,要求在对应的servlet中必须有json格式的字符串输出:
String ss=javaToGson.javaToString(list);//这个里面用到的是com.google.gson.Gson这个jar包,这个jar包是实现json格式数据到字符串或javabean转换很好的包
response.setContentType("application/json");
response.getWriter().write(ss);
效果图如下:
三:项目架构:自己写的一个httpservlet
四:上代码:
1):先看从前台到后台写入xml文件代码:
前端的代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="easyui.css"> <link rel="stylesheet" type="text/css" href="demo.css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.easyui.min.js"></script> </head>
<body> <div style="margin:20px 0;"></div>
<table id="pg" class="easyui-propertygrid" style="width:300px" data-options="
url: '/task1/com/guodiantong/servlet/JsonToJspServlet.action',
method: 'get',
showGroup: true,
scrollbarSize: 0,
columns: mycolumns
">
</table>
<a href="javascript:void(0)" class="easyui-linkbutton" onclick="transferData()" >向XML文件中传递数值</a>
<br>
<a href="javascript:void(0)" class="easyui-linkbutton" onclick="transferDataToJsp()" >从XML文件中向前台传递数值</a> <script type="text/javascript">
function transferData(){
var opt=$('#pg').propertygrid('getData');
//console.log(opt);
var row=opt.rows;
//console.log(row);
var as=[];
var temp=[];
for(var i=0;i<row.length;i++){
var a=row[i].name;
temp.push('{"name":'+'"' +a+'"'+ ',');
// console.log(a);
var b=row[i].value;
if(i==row.length-1){
temp.push('"value":'+ '"'+b+'"');
temp.push('}');
}else{
temp.push('"value":'+ '"'+b+'"');
temp.push('}'+'_');
}
//console.log(b); } as.push(temp.join(""));
console.log(as);
jQuery.ajax({
url:"/task1/com/guodiantong/servlet/xmlServlet.do",
type:"POST",
data:{aa:as}
})
} function transferDataToJsp(){ jQuery.ajax({
url:"/task1/com/guodiantong/servlet/JsonToJspServlet.action",
type:"POST",
success:function(data){ alert(1);
},
error:function(XMLHttpRequest, textStatus, errorThrown){
console.log(errorThrown);
}
})
$('#pg').propertygrid('reload');
} </script> </body>
</html>
接受前台数据用到的javabean:
package com.guodiantong.domain; public class PropertyGrid {
public String name;
public String value;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public PropertyGrid(String name, String value) { this.name = name;
this.value = value;
}
public PropertyGrid() { }
@Override
public String toString() {
return "PropertyGrid [name=" + name + ", value=" + value + "]";
} }
1.1从前台到后台写入xml文件的过程涉及到的代码:servlet代码
package com.guodiantong.servlet; import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.guodiantong.domain.PropertyGrid;
import com.guodiantong.logicmethod.GsonToJava;
import com.guodiantong.xmlparse.CreateXmlNode; public class xmlServlet extends HttpServlet { /**
*
*/
private static final long serialVersionUID = 1L; @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String filePath="/propertygrid.xml";
String[] obj= request.getParameterValues("aa[]");
String as[]=obj[0].split("_");
System.out.println(obj[0]);
System.out.println(as.length);
List<PropertyGrid> list=new ArrayList<PropertyGrid>();
GsonToJava gsonToJava=new GsonToJava();
list=gsonToJava.springToJava(as);
for(PropertyGrid pro:list){ System.out.println(pro);
System.out.println(pro.getValue());
} System.out.println(request.getContextPath());
CreateXmlNode createXmlNode=new CreateXmlNode();
try {
createXmlNode.createXmlWithNode(list, filePath);
} catch (Exception e) { e.printStackTrace();
}
//System.out.println(request.getRealPath(null));
}
}
servlet中涉及到的方法代码:
package com.guodiantong.logicmethod; import java.util.ArrayList;
import java.util.List; import com.google.gson.Gson;
import com.guodiantong.domain.PropertyGrid; public class GsonToJava {
private void GsonToJava() { }
public List<PropertyGrid> springToJava(String[] s){
Gson gson=new Gson();
List<PropertyGrid> list=new ArrayList<PropertyGrid>();
PropertyGrid propertyGrid=new PropertyGrid();
for(int i=0;i<s.length;i++){
propertyGrid=gson.fromJson(s[i], PropertyGrid.class);
list.add(propertyGrid);
}
return list; } }
写入xml文件数据的方法:注意到,在这个代码中我是把前台的数据写到了e盘下的.Person.xml文件里了
package com.guodiantong.xmlparse; import java.io.FileOutputStream;
import java.io.StringWriter;
import java.util.List; import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter; import com.guodiantong.domain.PropertyGrid; public class CreateXmlNode {
public CreateXmlNode() {
// TODO Auto-generated constructor stub
} public boolean createXmlWithNode(List<PropertyGrid> list,String filePath) throws Exception{
Document document=DocumentHelper.createDocument();
Element root=document.addElement("parameters");
for(int i=0;i<list.size();i++){ Element param=root.addElement(list.get(i).getName());
param.addText(list.get(i).getValue()); }
StringWriter stringWriter=new StringWriter(); OutputFormat xmlFormat=new OutputFormat();
xmlFormat.setEncoding("UTF-8");
xmlFormat.setNewlines(true);
xmlFormat.setIndent(true);
xmlFormat.setIndent(" "); XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("e:/Person.xml"),xmlFormat);
//写入文件
xmlWriter.write(document);
//关闭
xmlWriter.close();
// 输出xml
System.out.println(stringWriter.toString()); return true;
}
}
1.2从前台从后台读取数据的过程代码:前提是我已经有一个Person.xml文件,然后把这些数据读到我前端的表格里面对应的字段去:
servlet代码:
package com.guodiantong.servlet; import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.dom4j.DocumentException; import com.guodiantong.domain.PropertyGrid;
import com.guodiantong.logicmethod.JavaToGson;
import com.guodiantong.xmlparse.ReadXmlNode; public class JsonToJspServlet extends HttpServlet { /**
*
*/
private static final long serialVersionUID = 1L; @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//System.out.println("hello dopost");
String fileName="e:/Person.xml";
ReadXmlNode readXmlNode=new ReadXmlNode();
JavaToGson javaToGson=new JavaToGson();
List<PropertyGrid> list=new ArrayList<PropertyGrid>();
try {
list=readXmlNode.xmlToList(fileName);
System.out.println(list);
String ss=javaToGson.javaToString(list);
int length=javaToGson.stringLength(list);
System.out.println(length);
System.out.println(ss);
File writeFile=new File("E:/2015/prj/task1/WebContent/propertygrid_data1.vm");
FileOutputStream fw=new FileOutputStream(writeFile);
String propertygrid_vm="{"+"\"total\":"+length+",\"rows\":" + ss + "}";
fw.write(propertygrid_vm.getBytes());
fw.flush();
fw.close();
response.setContentType("application/json"); response.getWriter().write(ss); } catch (DocumentException e) { e.printStackTrace();
} } @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doPost(request,response);
} }
涉及到的方法:
package com.guodiantong.logicmethod; import java.util.List; import com.google.gson.Gson;
import com.guodiantong.domain.PropertyGrid; public class JavaToGson {
public JavaToGson() {
// TODO Auto-generated constructor stub
} public String javaToString(List<PropertyGrid> list){
Gson gson=new Gson();
return gson.toJson(list);
/*String ss="";
for(int i=0;i<list.size();i++){
String temp;
temp=gson.toJson(list.get(i));
if(i==list.size()-1){
ss=ss+temp;
}else{
ss=ss+temp+",";
}
}
return ss;*/
} public int stringLength(List<PropertyGrid> list){
Gson gson=new Gson();
String ss="";
for(int i=0;i<list.size();i++){
String temp;
temp=gson.toJson(list.get(i));
if(i==list.size()-1){
ss=ss+temp;
}else{
ss=ss+temp+"_";
}
}
String ssArray[]=ss.split("_");
int length=ssArray.length;
return length;
}
}
package com.guodiantong.xmlparse; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; import com.guodiantong.domain.PropertyGrid; public class ReadXmlNode {
public ReadXmlNode() {
// TODO Auto-generated constructor stub
} public List<PropertyGrid> xmlToList(String fileName) throws DocumentException{
List<PropertyGrid> list=new ArrayList<PropertyGrid>();
System.out.println("进入了xmlToList方法");
SAXReader reader=new SAXReader();
Document doc=reader.read(fileName);
//System.out.println(doc);
Element root=doc.getRootElement(); for ( Iterator i = root.elementIterator(); i.hasNext(); ) {
PropertyGrid propertyGrid=new PropertyGrid();
Element element = (Element) i.next();
propertyGrid.setName(element.getName());
propertyGrid.setValue(element.getText());
// // do something
// System.out.println(element.getName());
// System.out.println(element.getText());
list.add(propertyGrid);
} return list;
}
}
后台的xml文件:
<?xml version="1.0" encoding="UTF-8"?> <parameters>
<Name1>Bill Smith</Name1>
<Address1></Address1>
<zst>27</zst>
<Age>40</Age>
<Birthday>01/02/2012</Birthday>
<SSN23>123-456-7890</SSN23>
<hhh>2334</hhh>
<Email>bill@gmail.com</Email>
<FrequentBuyer>false</FrequentBuyer>
<xiaopenghui>nb</xiaopenghui>
<lx1>nb</lx1>
<abc1>hhh</abc1>
<tx1>456</tx1>
<hello2>world</hello2>
<ag>lll</ag>
<qq>1032077316</qq>
</parameters>
java web 通过前台输入的数据(name-value)保存到后台 xml文件中的更多相关文章
- Android中通过代码获取arrays.xml文件中的数据
android工程res/valuse文件夹下的arrays.xml文件中用于放各种数组数据,比如字符串数组.整型数组等,数组中的数据可能是具体的值,也有可能是对资源数据的引用,下面针对这两种情况通过 ...
- Java从入门到精通——技巧篇之利用dom4j取出XML文件中的数据
在我们做项目的时候会经常用到XML文件用来配置系统,XML让系统更加的具有了灵活性,Java如何从XML中取出我们想要的数据呢?下面是我利用DOM4J来实现取出XML文件中的数据. XML文件 < ...
- web.xml文件中的web-app元素 部署
[转载]web.xml文件中的web-app元素 (2012-05-24 13:35:57) 转载▼ 标签: 转载 分类: java 挺全 的 呵呵呵 转了 原文地址:web.xml文件中的web-a ...
- web.xml文件中加载顺序的优先级
在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰. 首先可以肯定的是 ...
- 基于Java+Selenium的WebUI自动化测试框架(八)-----读取元素(XML文件)
我们继续回到自动化测试框架的主线上来,在前面的文章中,我们定义一个页面元素的主要参数有:路径,找寻方式,等待时间,名称,这个四个参数.另外,我们还需要考虑一个问题,就是网站的页面. 举个例子来说,如果 ...
- C#程序中:如何修改xml文件中的节点(数据)
要想在web等程序中实现动态的数据内容给新(如网页中的Flash),不会更新xml文件中的节点(数据)是远远不够的,今天在这里说一个简单的xml文件的更新,方法比较基础,很适合初学者看的,保证一看就懂 ...
- C#程序中:如何向xml文件中插入节点(数据)
向xml文件中动态的添加节点(数据)是一件很爽的事,可以给你的程序带来很多的方便,比如在web中,如果你的Flash用到了xml文件,这个方法可以让你在后台就轻轻松松的更新你的Flash内容哦!一起研 ...
- web.xml文件中的7个错误的安全配置
web.xml文件中的7个错误的安全配置 关于Java的web.xml文件中配置认证和授权有大 量 的 文章.本文不再去重新讲解如何配置角色.保护web资源和设置不同类型的认证,让我们来看看web.x ...
- 如何在web.xml文件中引入其他的xml文件(拆分web.xml)
转载自:http://www.blogjava.net/jiangjf/archive/2009/04/09/264685.html 最近在做一个Servlet+javaBean的项目,服务器用的是t ...
随机推荐
- MongoDB 数据查询
数据查询 基本查询 方法find():查询 db.集合名称.find({条件文档}) 方法findOne():查询,只返回第一个 db.集合名称.findOne({条件文档}) 方法pretty(): ...
- 查看android sha1
Android百度定位SDK自v4.0版本之后开始引入了百度地图开放平台的统一AK验证体系.通过AK机制,开发者可以更方便.更安全地配置自身使用的百度LBS资源(如设置服务配额等).随着LBS开放平台 ...
- 103041000997维护的是周批,按周合并后再考虑最小采购批量、舍入值、然后回写到SAP系统
描述:103041000997维护的是周批量,但最终没有按周批量来回写数据. 业务逻辑如下: 1.净需求考虑数量按周汇总(也有按日.按3天,具体 要根据物料主数据维护来判断) 2.第1点的结果再加上安 ...
- 双活部署前收集EMC存储设备信息
以0.68服务器为例 1.拷贝emcgrab_Linux_v4.7.10.tar到linux服务器并将其解压到/tmp目录下 tar -xvf emcgrab_Linux_v4.7.10.tar -C ...
- python没有switch,可以用字典来替代
python没有switch,是因为可以用字典来替代,具体方法如下: def add(x,y): print(x+y)def subtraction(x,y): print(x-y)def multi ...
- Python3使用csv模块csv.writer().writerow()保存csv文件,产生空行的问题
问题:csv.writer().writerow()保存的csv文件,打开时每行后都多一行空行 解决方法:在open()内增加一个参数newline='' 即可 问题现象: 1.代码 with ...
- python作业之用户管理程序
数据库的格式化如下 分别为姓名|密码|电话号码|邮箱|用户类型 admin|admin123.|28812341026|admin@126.com|1root|admin123.|1344566348 ...
- SSH三大框架的关系、使用到的jar包、配置文件图解
- MongoDb进阶实践之四 MongoDB查询命令详述
一.引言 上一篇文章我们已经介绍了MongoDB数据库的最基本操作,包括数据库的创建.使用和删除数据库,文档的操作也涉及到了文档的创建.删除.更新和查询,当然也包括集合的创建.重命名和删除.有了这些基 ...
- Debian Buster 配置 Laravel 运行环境(nginx + redis + supervisor)
1 目标 将开发完成的 Laravel 项目布署于 Debian 之上.由于项目要求使用 horizon 官方扩展,要求 PHP7.1+,故采用 Debian buster (下一版) 2 材料 IP ...