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


部分代码如下:
faces-config.xml
TracePnrBean.java
部分代码如下:
faces-config.xml
xml 代码
- xml version="1.0" encoding="UTF-8"?>
- >
- <faces-config>
- <application>
- <variable-resolver>
- org.springframework.web.jsf.DelegatingVariableResolver
- variable-resolver>
- <view-handler>com.sun.facelets.FaceletViewHandlerview-handler>
- <message-bundle>resources.messagesmessage-bundle>
- <locale-config>
- <default-locale>zhdefault-locale>
- <supported-locale>ensupported-locale>
- locale-config>
- application>
- <managed-bean>
- <managed-bean-name>tracePnrBeanmanaged-bean-name>
- <managed-bean-class>
- com.travelsky.analyze.action.TracePnrBean
- managed-bean-class>
- <managed-bean-scope>requestmanaged-bean-scope>
- managed-bean>
- <managed-bean>
- <managed-bean-name>tracePnrFltBeanmanaged-bean-name>
- <managed-bean-class>
- com.travelsky.analyze.action.TracePnrFltBean
- managed-bean-class>
- <managed-bean-scope>requestmanaged-bean-scope>
- managed-bean>
- <navigation-rule>
- <from-view-id>/login.xhtmlfrom-view-id>
- <navigation-case>
- <from-outcome>Okfrom-outcome>
- <to-view-id>/comein/AnalyzeMain.xhtmlto-view-id>
- <redirect>redirect>
- navigation-case>
- <navigation-case>
- <from-outcome>Ok2from-outcome>
- <to-view-id>/comein/AnalyzeTools.xhtmlto-view-id>
- navigation-case>
- navigation-rule>
- <navigation-rule>
- <from-view-id>/comein/AnalyzeMain.xhtmlfrom-view-id>
- <navigation-case>
- <from-outcome>Okfrom-outcome>
- <to-view-id>/comein/AnalyzeMain.xhtmlto-view-id>
- navigation-case>
- navigation-rule>
- <navigation-rule>
- <from-view-id>/comein/AnalyzeTools.xhtmlfrom-view-id>
- <navigation-case>
- <from-outcome>Okfrom-outcome>
- <to-view-id>/comein/AnalyzeTools.xhtmlto-view-id>
- navigation-case>
- navigation-rule>
- faces-config>
java 代码
- package com.travelsky.analyze.action;
- import java.io.BufferedWriter;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.Map;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- import javax.faces.context.FacesContext;
- import org.apache.commons.lang.StringUtils;
- import org.springframework.jdbc.datasource.DriverManagerDataSource;
- import com.travelsky.analyze.serviceimpl.TrancePnrManagerImpl;
- public class TracePnrBean {
- private String PnrNo;
- private String TextPath;
- private String InputPnrNo = "请输入PNR或REF号...";
- public String getInputPnrNo() {
- return InputPnrNo;
- }
- public void setInputPnrNo(String inputPnrNo) {
- InputPnrNo = inputPnrNo;
- }
- public String getPnrNo() {
- return RunTracePnr();
- }
- public void setPnrNo(String pnrNo) {
- PnrNo = RunTracePnr();
- }
- public String getTextPath() {
- return this.OutText(RunTracePnr());
- }
- public void setTextPath(String textPath) {
- TextPath = textPath;
- }
- public String RunTracePnr() {
- String TracePnrStr = "\n";
- DriverManagerDataSource ds = new DriverManagerDataSource();
- ds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
- ds.setUrl("jdbc:oracle:thin:@10.6.168.134:1521:dss9i");
- ds.setUsername("dss_pdata");
- ds.setPassword("dss_pdata");
- TrancePnrManagerImpl sp = new TrancePnrManagerImpl(ds, "tracepnr");
- sp.setParameter("pnr_nbr_in", java.sql.Types.VARCHAR);
- sp.setOutParameter("print_pnr", oracle.jdbc.OracleTypes.VARCHAR);
- sp.compile();
- TrancePnrManagerImpl sp2 = new TrancePnrManagerImpl(ds, "reftracepnr");
- sp2.setParameter("pnr_ref_in", java.sql.Types.VARCHAR);
- sp2.setOutParameter("print_pnr", oracle.jdbc.OracleTypes.VARCHAR);
- sp2.setOutParameter("print_pnr_sfx1", oracle.jdbc.OracleTypes.VARCHAR);
- sp2.compile();
- /**
- * 对输入的数据进行一次处理
- */
- StringUtils t1 = new StringUtils();
- String InputPnrNoList = this.getInputPnrNo();
- InputPnrNoList = t1.deleteWhitespace(InputPnrNoList);
- String[] SInputPnrNo = t1.split(InputPnrNoList, ",");
- for (int j = 0; j < SInputPnrNo.length; j++) {
- String PnrRef = SInputPnrNo[j];
- // 传入输入参数值
- if (PnrRef.length() == 9) {
- Map in = new HashMap(1);
- in.put("pnr_nbr_in", PnrRef);
- sp.SetInParam(in);
- // 执行存储过程
- Map m = sp.execute();
- Iterator i = m.keySet().iterator();
- while (i.hasNext()) {
- String key = i.next().toString();
- TracePnrStr += m.get(key);
- }
- }
- if (PnrRef.length() == 5) {
- Map in = new HashMap(1);
- in.put("pnr_ref_in", PnrRef);
- sp2.SetInParam(in);
- // 执行存储过程
- Map m = sp2.execute();
- // Map m = sp.set.get(0);// ReultSet的第一条记录
- // set定义为SpringStoredProcedure的属性用于接收回调时的数据
- // 如果有多个输出参数,应该在每个输出参数的回调方法中生成该输出
- // 参数对应的ArrayList,然后加到一个成员变量的数据结构中。
- Iterator i = m.keySet().iterator();
- while (i.hasNext()) {
- String key = i.next().toString();
- TracePnrStr += m.get(key);
- }
- }
- TracePnrStr = t1.replace(TracePnrStr, "<newline>"</newline>, "\n");
- TracePnrStr = TracePnrStr + "\n \n";// 最后一个加换行
- }
- //this.OutText(TracePnrStr);
- return TracePnrStr;
- }
- public String Finish(){
- return "Ok";
- }
- public String OutText(String TracePnrStr) {
- SimpleDateFormat myFmt=new SimpleDateFormat("yyyyMMddHHmmss");
- String PathText = myFmt.format(new Date());
- try {
- BufferedWriter out = new BufferedWriter(new FileWriter(
- "D:\\tomcat5523\\webapps\\analyze\\doc\\pnr"+PathText+".txt", true));// 主要就是这个true
- //out.newLine();// 如果不另起一行的话就注释掉
- out.write(TracePnrStr);
- out.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- return "pnr"+PathText+".txt";
- }
- }