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 ...
随机推荐
- 经典动态规划python实现
1.最长上升子序列 对于一个数字序列,请设计一个复杂度为O(nlogn)的算法,返回该序列的最长上升子序列的长度,这里的子序列定义为这样一个序列U1,U2...,其中Ui < Ui+1,且A[U ...
- c pointer
1. 定义数组后,数组名是一个常数, 而指针是一个变量 如下: int a[10]; int *p; p=a; \\ 与 p=&a[0]等价 则*p++表示 a[1] 而 a++ 则是错误的 ...
- linux下set命令的参数及用法
linux set 命令 功能说明:设置shell. 语 法:set [+-abCdefhHklmnpPtuvx] 补充说明:用set 命令可以设置各种shell选项或者列 出shell变量.单个选 ...
- SpringMVC 文件上传 MultipartFile
本的SpringMVC的搭建在我的上一篇文章里已经写过了,这篇文章主要说明一下如何使用SpringMVC进行表单上的文件上传以及多个文件同时上传的步骤 SpringMVC 基础教程 框架分析:http ...
- javascript 中 if (window != top) top.location.href = location.href;的意思
如果当前窗口不是顶级窗口,就强制修改为顶级窗口: 目的是为了不让别人用iframe嵌入你的页面
- 第八章 高级搜索树 (b1)B-树:动机
- 使用HttpModule实现网址重写和HttpHandler实现页面静态化冲突的解决办法
使用HttpModule实现网址重写和HttpHandler冲突的解决办法功能描述:1. 用HttpModule做了一个重写URL的功能,实现所有访问html的请求要经过httpModule处理,如果 ...
- centos云服务器安装Python3记录
题记 购买了一个月的服务器和公网ip,计划用Python与Nginx写一个web服务,于是踏上了漫漫的摸索之路. 行程 步骤 1.本地ssh连接. 2.mkdir /usr/local/python3 ...
- 关于weblogic报UnsatisfiedLinkError Native Library xxx.so already loaded
一.场景 最近写的一个系统,在Tomcat测试完后说要改使用weblogic,于是在服务器上安装了weblogic,捣鼓了半天,一个个问题冒了出来,其中就有个比较麻烦的报错:UnsatisfiedLi ...
- dede的cfg_keywords和cfg_description无法显示
问题:在生成html文件时,网页的keywords和description的content为空,但后台显示这两项是有值的. 解决方案: 1.设置 系统->系统基本参数->站点根网址 设 ...