⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 selectxml.java

📁 jdo开发实例,一个功能全面的oa系统
💻 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 + -