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 ...
随机推荐
- 1、JDK自带注解
1.何为注解? 概念:注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在同一个层次.它可以声明在包.类.字段.方法.局部变量. ...
- Linux下tar.gz 安装
将安装文件拷贝至你的目录中 如果是以root身份登录上的,就将软件拷贝至/root中. cp xxx.tar.gz /root 解压缩包 tar xvzf xxx.tar.gz 切换到安装目录下 cd ...
- tf.random_normal()
tf.random_normal()函数用于从服从指定正太分布的数值中取出指定个数的值. tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf. ...
- 【校招面试 之 C/C++】第16题 C++ new和delete的实现原理
1.new new操作针对数据类型的处理,分为两种情况: (1)简单数据类型(包括基本数据类型和不需要构造函数的类型) 代码实例: int* p = new int; 汇编码如下: int* p = ...
- Excel单元格内容批量加前缀
比如83190001在A1单元格,要在A列单元内容前面批量加0,在B1输入公式="0"&A1然后向下复制再把B列复制的结果再复制一下:然后到新的一列粘贴,在“粘贴选项”中选 ...
- phpstorm2018.3的安装和激活和汉化
安装 第一步:解压并打开文件,运行安装程序,点击Next进入下一步, 第二步:选择软件安装目录,自定义选择安装根目录--> 注意!后面还需要找安装目录里的文件,所以记住安装到一个比较容易查看的目 ...
- linux中的hosts文件
1.主机名: 无论在局域网还是INTERNET上,每台主机都有一个IP地址,是为了区分此台主机和彼台主机,也就是说IP地址就是主机的门牌号. 公网:IP地址不方便记忆,所以又有了域名.域名只是在公网( ...
- ZOJ 3946.Highway Project(The 13th Zhejiang Provincial Collegiate Programming Contest.K) SPFA
ZOJ Problem Set - 3946 Highway Project Time Limit: 2 Seconds Memory Limit: 65536 KB Edward, the ...
- 解决 cmake_symlink_library: System Error: Operation not supported
在编译uchardet时遇到这个错误: cmake_symlink_library: System Error: Operation not supported 创建链接不成功,要确认当前帐户下是否有 ...
- cmake重新编译
删除文件夹下的文件 rm CMakeCache.txt 重新编译即可 安装g++ yum install gcc-c++