近一周写了一个简单的工具,本工具是通过Spring调用ORACLE的存贮过程,然后返回一个结果集合.用到的技术有JSF\AJAX4JSF\SPRING\facelet和进度条的控制\代码着色(codepress)等.其实现页面可以参考如下:


         部分代码如下:
    faces-config.xml

xml 代码
  1. xml version="1.0" encoding="UTF-8"?>
  2. >
  3. <faces-config>
  4. <application>
  5. <variable-resolver>
  6. org.springframework.web.jsf.DelegatingVariableResolver
  7. variable-resolver>
  8. <view-handler>com.sun.facelets.FaceletViewHandlerview-handler>
  9. <message-bundle>resources.messagesmessage-bundle>
  10. <locale-config>
  11. <default-locale>zhdefault-locale>
  12. <supported-locale>ensupported-locale>
  13. locale-config>
  14. application>
  15. <managed-bean>
  16. <managed-bean-name>tracePnrBeanmanaged-bean-name>
  17. <managed-bean-class>
  18. com.travelsky.analyze.action.TracePnrBean
  19. managed-bean-class>
  20. <managed-bean-scope>requestmanaged-bean-scope>
  21. managed-bean>
  22. <managed-bean>
  23. <managed-bean-name>tracePnrFltBeanmanaged-bean-name>
  24. <managed-bean-class>
  25. com.travelsky.analyze.action.TracePnrFltBean
  26. managed-bean-class>
  27. <managed-bean-scope>requestmanaged-bean-scope>
  28. managed-bean>
  29. <navigation-rule>
  30. <from-view-id>/login.xhtmlfrom-view-id>
  31. <navigation-case>
  32. <from-outcome>Okfrom-outcome>
  33. <to-view-id>/comein/AnalyzeMain.xhtmlto-view-id>
  34. <redirect>redirect>
  35. navigation-case>
  36. <navigation-case>
  37. <from-outcome>Ok2from-outcome>
  38. <to-view-id>/comein/AnalyzeTools.xhtmlto-view-id>
  39. navigation-case>
  40. navigation-rule>
  41. <navigation-rule>
  42. <from-view-id>/comein/AnalyzeMain.xhtmlfrom-view-id>
  43. <navigation-case>
  44. <from-outcome>Okfrom-outcome>
  45. <to-view-id>/comein/AnalyzeMain.xhtmlto-view-id>
  46. navigation-case>
  47. navigation-rule>
  48. <navigation-rule>
  49. <from-view-id>/comein/AnalyzeTools.xhtmlfrom-view-id>
  50. <navigation-case>
  51. <from-outcome>Okfrom-outcome>
  52. <to-view-id>/comein/AnalyzeTools.xhtmlto-view-id>
  53. navigation-case>
  54. navigation-rule>
  55. faces-config>

TracePnrBean.java

java 代码
  1. package com.travelsky.analyze.action;
  2. import java.io.BufferedWriter;
  3. import java.io.FileWriter;
  4. import java.io.IOException;
  5. import java.text.SimpleDateFormat;
  6. import java.util.Date;
  7. import java.util.HashMap;
  8. import java.util.Iterator;
  9. import java.util.Map;
  10. import java.util.regex.Matcher;
  11. import java.util.regex.Pattern;
  12. import javax.faces.context.FacesContext;
  13. import org.apache.commons.lang.StringUtils;
  14. import org.springframework.jdbc.datasource.DriverManagerDataSource;
  15. import com.travelsky.analyze.serviceimpl.TrancePnrManagerImpl;
  16. public class TracePnrBean {
  17. private String PnrNo;
  18. private String TextPath;
  19. private String InputPnrNo = "请输入PNR或REF号...";
  20. public String getInputPnrNo() {
  21. return InputPnrNo;
  22. }
  23. public void setInputPnrNo(String inputPnrNo) {
  24. InputPnrNo = inputPnrNo;
  25. }
  26. public String getPnrNo() {
  27. return RunTracePnr();
  28. }
  29. public void setPnrNo(String pnrNo) {
  30. PnrNo = RunTracePnr();
  31. }
  32. public String getTextPath() {
  33. return this.OutText(RunTracePnr());
  34. }
  35. public void setTextPath(String textPath) {
  36. TextPath = textPath;
  37. }
  38. public String RunTracePnr() {
  39. String TracePnrStr = "\n";
  40. DriverManagerDataSource ds = new DriverManagerDataSource();
  41. ds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
  42. ds.setUrl("jdbc:oracle:thin:@10.6.168.134:1521:dss9i");
  43. ds.setUsername("dss_pdata");
  44. ds.setPassword("dss_pdata");
  45. TrancePnrManagerImpl sp = new TrancePnrManagerImpl(ds, "tracepnr");
  46. sp.setParameter("pnr_nbr_in", java.sql.Types.VARCHAR);
  47. sp.setOutParameter("print_pnr", oracle.jdbc.OracleTypes.VARCHAR);
  48. sp.compile();
  49. TrancePnrManagerImpl sp2 = new TrancePnrManagerImpl(ds, "reftracepnr");
  50. sp2.setParameter("pnr_ref_in", java.sql.Types.VARCHAR);
  51. sp2.setOutParameter("print_pnr", oracle.jdbc.OracleTypes.VARCHAR);
  52. sp2.setOutParameter("print_pnr_sfx1", oracle.jdbc.OracleTypes.VARCHAR);
  53. sp2.compile();
  54. /**
  55. * 对输入的数据进行一次处理
  56. */
  57. StringUtils t1 = new StringUtils();
  58. String InputPnrNoList = this.getInputPnrNo();
  59. InputPnrNoList = t1.deleteWhitespace(InputPnrNoList);
  60. String[] SInputPnrNo = t1.split(InputPnrNoList, ",");
  61. for (int j = 0; j < SInputPnrNo.length; j++) {
  62. String PnrRef = SInputPnrNo[j];
  63. // 传入输入参数值
  64. if (PnrRef.length() == 9) {
  65. Map in = new HashMap(1);
  66. in.put("pnr_nbr_in", PnrRef);
  67. sp.SetInParam(in);
  68. // 执行存储过程
  69. Map m = sp.execute();
  70. Iterator i = m.keySet().iterator();
  71. while (i.hasNext()) {
  72. String key = i.next().toString();
  73. TracePnrStr += m.get(key);
  74. }
  75. }
  76. if (PnrRef.length() == 5) {
  77. Map in = new HashMap(1);
  78. in.put("pnr_ref_in", PnrRef);
  79. sp2.SetInParam(in);
  80. // 执行存储过程
  81. Map m = sp2.execute();
  82. // Map m = sp.set.get(0);// ReultSet的第一条记录
  83. // set定义为SpringStoredProcedure的属性用于接收回调时的数据
  84. // 如果有多个输出参数,应该在每个输出参数的回调方法中生成该输出
  85. // 参数对应的ArrayList,然后加到一个成员变量的数据结构中。
  86. Iterator i = m.keySet().iterator();
  87. while (i.hasNext()) {
  88. String key = i.next().toString();
  89. TracePnrStr += m.get(key);
  90. }
  91. }
  92. TracePnrStr = t1.replace(TracePnrStr, "<newline>"</newline>, "\n");
  93. TracePnrStr = TracePnrStr + "\n \n";// 最后一个加换行
  94. }
  95. //this.OutText(TracePnrStr);
  96. return TracePnrStr;
  97. }
  98. public String Finish(){
  99. return "Ok";
  100. }
  101. public String OutText(String TracePnrStr) {
  102. SimpleDateFormat myFmt=new SimpleDateFormat("yyyyMMddHHmmss");
  103. String PathText = myFmt.format(new Date());
  104. try {
  105. BufferedWriter out = new BufferedWriter(new FileWriter(
  106. "D:\\tomcat5523\\webapps\\analyze\\doc\\pnr"+PathText+".txt", true));// 主要就是这个true
  107. //out.newLine();// 如果不另起一行的话就注释掉
  108. out.write(TracePnrStr);
  109. out.close();
  110. } catch (IOException e) {
  111. e.printStackTrace();
  112. }
  113. return "pnr"+PathText+".txt";
  114. }
  115. }

JSF+A4J+Spring调用ORACLE存贮过程的拙作相关推荐

  1. C# + MySql 存贮过程开发示例

    MySql 发展至今,已经不是当初那个只依靠免费和速度取胜的开源数据库服务器了,它提供的一系列 GUI 工具,以及加入商业数据库的一些特性,依然免费并且开源,让我们实在无法拒绝它的魅力. 很多人在谈及 ...

  2. spring+springMvc+mybatis 调用oracle 存储过程

    最近在项目中遇到在mybatis中调用oracle存储过程的问题,网上各种查询,最终解决了问题,在我们项目中我只需要oracle 的存储过程返回一个字符串用来存入数据库作为表数据的主键, 接下来整理代 ...

  3. java c3p0 存储过程_JAVA Spring 连接池 调用 Oracle 存储过程的问题?

    求助,JAVA Spring 连接池 调用 Oracle 存储过程的问题?在Spring中配置了c3P0的连接池,在调用Oracle的存储过程时,报错[code]java.lang.ClassCast ...

  4. java调用oracle过程,JAVA调用ORACLE存储过程报错

    当前位置:我的异常网» Java Web开发 » JAVA调用ORACLE存储过程报错 JAVA调用ORACLE存储过程报错 www.myexceptions.net  网友分享于:2015-07-1 ...

  5. Spring 容器的启动过程

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 本文来源:http://r6f.cn/b47K 一. 前言 ...

  6. C#调用Oracle存储过程分页

    直接调用Oracle中的存储过程完成对表的分页,对代码封闭程度高,执行高效.以下为C#分页类代码,包括Oracle数据库 端存储过程PLSQL代码. //    程序调用示例: // int tota ...

  7. Spring装配Bean的过程

    首先说一个概念:"懒加载" 懒加载:就是我们在spring容器启动的是先不把所有的bean都加载到spring的容器中去,而是在当需要用的时候,才把这个对象实例化到容器中. spr ...

  8. Spring源码系列(十二)Spring创建Bean的过程(二)

    1.写在前面 上篇博客主要Spring在创建Bean的时候,第一次调用的Bean的后置处理器的过程,同时笔者也打算将整个Spring创建的Bean的过程,通过这个系列,将Bean的创建过程给讲清楚,废 ...

  9. Spring Bean生命周期过程

    Spring Bean生命周期过程 Spring Bean生命周期指的是Bean加载Spring容器的过程,单例的Bean与多例的Bean加载过程是不一样的.这里指的是单例Bean的加载过程. 图:S ...

最新文章

  1. linux如何关闭防火墙
  2. Lidar-RCNN:基于稀疏点云的3D目标检测网络(CVPR2021)
  3. 禁用/启用按钮和链接的最简单方法是什么(jQuery + Bootstrap)
  4. 如何解决大量样本标注问题
  5. 利用局域网测试仪进行网络性能测试
  6. P4396 [AHOI2013]作业
  7. 如何以10倍速加速Apache Xalan的XPath处理器
  8. python3 ftp.mlsd,python3中的ftp目录
  9. 如何在oracle中查询所有用户表的表名、主键名称、索引、外键等 - Oracle   基础和管理_files...
  10. C++ undefined reference to `__imp_WSACleanup‘解决方案
  11. python基础到实践教程_Python从入门到实践案例教程(21世纪高等学校计算机教育实用规划教材)...
  12. jmeter之线程组间变量的传递二
  13. 从 0 开始机器学习 - 机器学习系统的设计与误差分析
  14. Linux的java配置及tomcat的启动
  15. 新手学习Linux之grep
  16. 参数化CFAR的FPGA实现
  17. 批量下载全国县级行政区划geojson格式数据,将下载的geojson数据批量转为shapefile格式,在arcgis中可视化
  18. 图像处理(十一)高斯差分算法(边缘检测)
  19. 【开源许可协议】常见开源许可协议的核心内容(思维导图版本)
  20. 转发和重定向的区别(forward和redirect的区别)

热门文章

  1. FANUC机器人开平方
  2. Java实现腾讯云COS高级(大文件)上传,不考虑分块
  3. 文学专业发语言学c刊,投c刊一般需要多少时间才回复
  4. (三)inkscape基础 裁剪图片
  5. STM32H750VBT6驱动程控增益放大模块PGA113——基于CubeMX的Hal库
  6. 5G真的有那么好吗?4G+5G多网聚合才是优秀执行方案
  7. JVM内存模型和性能调优:JVM内存分配与回收:Minor GC后存活的对象Survivor区放不下- 第26篇
  8. 菜鸟也疯狂!8分钟用Python做一个酷炫的家庭随手记
  9. 点云学习【1.2】法向量计算
  10. 诺基亚c6-01支持java吗,简约但很不简单 诺基亚C6-01到站评测