Struts中利用action来输出xml文件

      应一个同事的要求,要利用strtus的Action将一个数据库表的数据输出为xml格式的数据,方便导入使用。经研究Action还真能办到,实际上不是Action的功劳,而是JDOM的功劳,不说那么多了,给大家分享一下。

    我有一个测试表,有两个字段,一个是用户名,一个是密码,现将这个表的数据全部输出为xml格式的。首先给出我的Action,代码如下:

package com.yourcompany.struts.action;

import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.XMLOutputter;

import com.yourcompany.struts.form.User;

public class DisplayALL extends Action {
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		DataSource ds = getDataSource(request, "s9");
		Connection conn = ds.getConnection();
		Statement stmt = null;
		ResultSet rs = null;
		response.setContentType("text/xml;charset=utf-8");
		Element rootElement = new Element("users");
		Document users = new Document(rootElement);
		try {
			String ls_sql = "select * from dd ";
			stmt = conn.createStatement();
			rs = stmt.executeQuery(ls_sql);
			while (rs.next()) {
				Element user = new Element("user");
				user.setAttribute("username", rs.getString(1));
				user.setAttribute("password", rs.getString(2));
				rootElement.addContent(user);
			}
			XMLOutputter xout=new XMLOutputter();
			xout.output(users,response.getWriter());
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			rs.close();
			stmt.close();
			conn.close();
		}
		return null;
	}
}

接下来说一下要注意的地方:
    这里使用的JDOM的Document,要想使用JDOM,请在build Path中加入jdom.jar文件,否则找不到类。Document的构造函数的参数是一个 rootElement,
没有参数的构造函数不可见,Myeclipse提示:not visible.我参考一篇文档时,用的是不带参数的,不知道怎么回事?反正我测试时只有有参数的构造函数才能用。
关于strut中配置数据源的问题,我在以前的一篇文档中写过了,这里就不再啰嗦了。对了,一定要设置输出格式,为了防止中文乱码,最好给出字符集。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值