📄 selectxml.java
字号:
package com.gzrealmap.oa.servlet;
import java.io.*;
import java.sql.*;
import java.util.*;
import javax.servlet.http.*;
import com.gzrealmap.lib.sys.*;
import com.gzrealmap.*;
public class selectxml
extends HttpServlet {
private String totrim(String temp) {
String result = "--";
if (temp != null) {
result = temp;
}
result = result.trim();
return result;
}
private String toISO(String str) {
String temp = "";
if (str != null) {
try {
temp = new String(str.getBytes("ISO-8859-1"), "GB2312");
}
catch (Exception e) {
temp = "";
}
}
return temp;
}
private String makestylesheet(String style) {
String typevalue = "text/css";
if ( (style.toLowerCase().endsWith(".xsl"))) {
typevalue = "text/xsl";
}
String result = "<?xml-stylesheet type='" + typevalue + "' href='" + style +
"'?>";
return result;
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
IOException {
final String REQ_SQL = "sql";
final String REQ_STYLE = "url";
final String REQ_TITLE = "titlename";
final String REQ_USEKEY = "mark";
final String REQ_HIDDEN = "hide";
final String REQ_ResultSetMaxCount = "ResultSetMaxCount";
response.setContentType("text/xml;charset=gb2312");
//ByteArrayOutputStream tempout=new ByteArrayOutputStream();
//PrintStream out=new PrintStream(tempout);
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
//输出title
{
//获取参数titlename
String titlename = request.getParameter(REQ_TITLE);
if (titlename != null) {
titlename = titlename.trim();
}
else {
titlename = "--";
}
titlename = toISO(titlename);
System.out.print(titlename);
//获取参数xsl
String stylesheet = request.getParameter(REQ_STYLE);
if (stylesheet == null) {
stylesheet = (String) session.getAttribute("url");
//意图:别人在返回的时候来到这一链接的时候,加上一个hisrtory.go(-1)
}
if (stylesheet == null) {
stylesheet = "./public/noxsl.xsl";
}
stylesheet = toISO(stylesheet);
System.out.print(stylesheet);
out.print("<?xml version='1.0' encoding='GB2312'?>\r\n");
out.print(makestylesheet(stylesheet));
out.print("\r\n<DataBase titlename='" + titlename + "'>\r\n");
}
//处理数据库的ResultSet
{
//获取参数Sql
String sql = request.getParameter(REQ_SQL);
if (sql == null) {
sql = (String) session.getAttribute(sql);
}
if (sql == null) {
sql = "";
}
if (sql != null) {
sql = sql.trim();
}
if (sql.equals("")) {
sql = "select * from sysobjects where (1=2)";
}
sql = toISO(sql);
System.out.print(sql);
//获取特殊的键
ArrayList fieldlist = null;
fieldlist = new ArrayList();
{
String markkey[] = request.getParameterValues(REQ_USEKEY);
if (markkey != null) {
for (int i = 0; i < markkey.length; i++) {
fieldlist.add(markkey[i].toLowerCase());
}
}
}
System.out.print("\n fieldlist:"+fieldlist.toString());
ArrayList hiddenlist = null;
//获取隐藏的键
hiddenlist = new ArrayList();
{
String hidekey[] = request.getParameterValues(REQ_HIDDEN);
if (hidekey != null) {
for (int i = 0; i < hidekey.length; i++) {
hiddenlist.add(hidekey[i].toLowerCase());
}
}
}
System.out.print("\n hiddenlist:"+hiddenlist.toString());
{
int rowOrderNo = 0;
com.gzrealmap.lib.jdbc.JDBCUtil logdb = null;
ResultSet rs = null;
ResultSetMetaData rsmd = null;
//获取ResultSet可以返回的最大条数
int ResultSetMaxCount = 200;
try {
}
catch (Exception excp) {
ResultSetMaxCount = 100;
}
//处理ResultSet
try {
logdb = com.gzrealmap.lib.jdbc.JDBCUtil.getInstance();
logdb.connect();
rs = logdb.query(sql);
rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount(); //ColName[i] = rsmd.getColumnName(i);
String elemname = "";
String elemvalue = "";
int marknum = 0;
while (rs.next()) {
if (ResultSetMaxCount <= rowOrderNo) {
out.print(" <RowEnd>" + ResultSetMaxCount + "</RowEnd>\r\n");
break;
}
marknum = 0;
out.print(" <row OrderNo='" + (rowOrderNo++) + "'>\r\n");
for (int columnIndex = 1; columnIndex <= numberOfColumns;
columnIndex++) {
elemname = totrim(rsmd.getColumnName(columnIndex));
elemvalue = totrim(rs.getString(columnIndex));
out.print(" <" + elemname);
//判断是否特殊键,是的话:做标记,不是的话,就忽略
if (fieldlist.contains(elemname.toLowerCase())) {
// elem.append (" mark"+marknum+"='"+elemvalue+"' ");
out.print(" mark" + (marknum++) + "='1' ");
}
//判断是否需要隐藏,是的话:做标记,不是的话,就忽略
if (hiddenlist.contains(elemname.toLowerCase())) {
// elem.append (" mark"+marknum+"='"+elemvalue+"' ");
out.print(" h='1' ");
}
out.print("><![CDATA[");
out.print(transformCDate(elemvalue));
out.print("]]></" + elemname + ">\r\n");
}
out.print(" </row>\r\n");
}
}
catch (Exception e) {
}
finally {
rsmd = null;
rs = null;
try {
logdb.disconnect();
}
catch (Exception e) {
logdb = null;
}
finally {
logdb = null;
}
}
fieldlist = null;
hiddenlist = null;
out.print(" <RowCount>" + rowOrderNo + "</RowCount>\r\n");
}
}
if (session != null) {
//处理Session
{
Enumeration Sessionenum = session.getAttributeNames();
out.print("\r\n <SessionInfo>\r\n");
String Sessionparaname = null;
while (Sessionenum.hasMoreElements()) {
Sessionparaname = (String) Sessionenum.nextElement();
out.print(" <" + Sessionparaname + "><![CDATA[");
out.print(transformCDate(session.getAttribute(Sessionparaname)));
out.print("]]></" + Sessionparaname + ">\r\n");
}
out.print(" </SessionInfo>\r\n");
}
//处理userinfo
{
{
out.print("\r\n <UserInfo>\r\n");
out.print(" <UserID><![CDATA[" + "admin" +
"]]></UserID>\r\n");
out.print(" </UserInfo>\r\n");
}
}
}
else {
out.print(" <SessionInfo/>\r\n");
out.print(" <UserInfo/>\r\n");
}
//处理ReqInfo
{
Enumeration enum = request.getParameterNames();
String paraname = null;
out.print("\r\n <ReqInfo>\r\n");
while (enum.hasMoreElements()) {
paraname = (String) enum.nextElement();
String[] paravalues = request.getParameterValues(paraname);
if (paravalues != null) {
for (int i = 0; i < paravalues.length; i++) {
out.print(" <" + paraname + "><![CDATA[");
out.print(transformCDate(toISO(paravalues[i])));
out.print("]]></" + paraname + ">\r\n");
}
}
}
out.print(" </ReqInfo>\r\n");
}
out.print(" <DataOK/>\r\n");
out.print("\r\n</DataBase>");
//session.setAttribute("xml",out.toString());
out = null;
}
private String transformCDate(String elemvalue) {
return elemvalue.replaceAll("]]>", "]] >");
}
private Object transformCDate(Object elemvalue) {
try {
return transformCDate(elemvalue.toString());
}
catch (Exception ex) {
return elemvalue;
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
IOException {
doGet(request, response);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -