JSP如何将HTML的表单数据提交生成一个XML文件

求思路和具体编程语句,可以加分!!!急求!!!

JSP将HTML的表单数据提交生成一个XML文件的方法:
1、定义表单,封装id,firstName和lastName
<form:form modelAttribute="person">
<form:hidden path="id" />
<fieldset>
<div class="form-row">
<label for="firstName"><fmt:message key="person.form.firstName"/>:</label>
<span class="input"><form:input path="firstName" /></span>
</div>
<div class="form-row">
<label for="lastName"><fmt:message key="person.form.lastName"/>:</label>
<span class="input"><form:input path="lastName" /></span>
</div>
<div class="form-buttons">
<div class="button">
<input type="submit" id="save" name="_eventId_save" value="<fmt:message key="button.save"/>"/> 
<input type="submit" name="_eventId_cancel" value="Cancel"/> 
</div>
</div>
</fieldset>
</form:form>

2、提交到servlet后,调用构造xml的java方法:
try {

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();

// root elements
Document doc = docBuilder.newDocument();
Element rootElement = doc.createElement("company");
doc.appendChild(rootElement);

// staff elements
Element staff = doc.createElement("Staff");
rootElement.appendChild(staff);

// set attribute to staff element
Attr attr = doc.createAttribute("id");
attr.setValue("1");
staff.setAttributeNode(attr);

// shorten way
// staff.setAttribute("id", "1");

// firstname elements
Element firstname = doc.createElement("firstname");
firstname.appendChild(doc.createTextNode("yong"));
staff.appendChild(firstname);

// lastname elements
Element lastname = doc.createElement("lastname");
lastname.appendChild(doc.createTextNode("mook kim"));
staff.appendChild(lastname);

// nickname elements
Element nickname = doc.createElement("nickname");
nickname.appendChild(doc.createTextNode("mkyong"));
staff.appendChild(nickname);

// salary elements
Element salary = doc.createElement("salary");
salary.appendChild(doc.createTextNode("100000"));
staff.appendChild(salary);

// write the content into xml file
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("d:\\person.xml"));
transformer.transform(source, result);
System.out.println("File saved!");
} catch (ParserConfigurationException pce) {
pce.printStackTrace();
} catch (TransformerException tfe) {
tfe.printStackTrace();
}

3、构造完成:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<company>
<staff id="1">
<firstname>yong</firstname>
<lastname>mook kim</lastname>
<nickname>mkyong</nickname>
<salary>100000</salary>
</staff>
</company>
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-04-28
  
  使用JavaServer Pages有三种不同的方法用于处理XML文档,每种方法都有利于提高分离页面代码与XML数据的水平,有利于简化开发网页的复杂度并且改善提高组件与页面代码的可重用性。
  1.JSP可以读取XML文件并且基于这些数据执行动作。例如:一应用程序可以读取具有某些特定结构的数据的XML文件。
  2. JSP可以创建XML文件以发送数据到客户程序或其它的应用程序。 JSP可以转换XML文件,这个变换可以是交给XSLT处理,由JSP作为控制器,或者通过非XSLT解决方案来完成。 在这两种情况下,JSP的作用都是读取XML文件,转换它并生成一个输出。
  因为JSP包含内嵌的Java程序,所以它可以直接地调用一个分析程序来读/写xml数据。 这是非常不合理的方法,因为数据和代码逻辑并不能很好的被分离开。 另外,这样的程序也很难读得懂
  3. 每个标记都相当于一个相同名称的Java类。 这个类必须实现TagSupport接口,包含捕获事件触发器方法作为处理这个页面的JSP引擎。 当它第一次遇到这个标记的时候,引擎就会调用doStartTag ()方法。 可以使这个方法为空或者当需要的时候才执行应用程序逻辑。 当该方法返回SKIP_BODY时,那么引擎跳过这个标记体。 当它返回EVAL_BODY_INCLUDE时,引擎将会处理这个标记以及它的子标记。 类似地,JSP引擎在分析了结束标记之后就会调用doEndTag ()方法。 doAfterBody ()方法让你可以在引擎处理元素体之后执行动作,但是必须在doEndTag ()方法作用之前。
相似回答