软体印象

Kavin
posts - 13, comments - 0, trackbacks - 0, articles - 0

2011年5月6日

 

DECLARE
  v_test_varray VARCHAR_VARRAY_TYPE := VARCHAR_VARRAY_TYPE('57610',
                                                           '61368',
                                                           '73111',
                                                           '37208',
                                                           '57639');
                                                           
V_SQL        VARCHAR2(32767);
    V_SQL_IN     VARCHAR2(32767);
    V_SQL_ROWNUM VARCHAR2(32767);
    V_ORDER      VARCHAR2(32767);
    TYPE number_index_by_string IS TABLE OF NUMBER INDEX BY VARCHAR2(10);
    v_evt_id_list  NUMBER_INDEX_BY_STRING;
    
Begin
  --orderArray VARCHAR_VARRAY_TYPE%type := VARCHAR_VARRAY_TYPE('11','22','33','44','55');

/*  
  FOR i IN v_test_varray.FIRST .. v_test_varray.LAST LOOP
    IF v_test_varray.EXISTS(i) THEN
      DBMS_OUTPUT.put_line(i);
    END IF;
  END LOOP;
  
*/
  
  V_ORDER := Func_LIST_TO_ORDER(v_test_varray, 'A.COL_NAME');
  DBMS_OUTPUT.put_line('V_ORDER='||V_ORDER);
  
  V_SQL := 'SELECT * FROM TABLEA A'
           || ' WHERE '
           || ''
           || ''
           || ''
           || ''
           ;
  V_SQL := V_SQL || ' ( ' ||
               FUNC_LIST_TO_IN_SQL(v_test_varray,
                                    'COL_NAME',
                                    ''''|| ')';
    V_SQL := V_SQL  ||
             ' ORDER by ( ' || V_ORDER || ')';
             
  DBMS_OUTPUT.put_line('V_SQL='||V_SQL);

--- SET v_evt_id_list number_index_by_string

FOR i IN v_test_varray.FIRST .. v_test_varray.LAST
  LOOP
     IF v_test_varray.EXISTS (i)
     THEN
        DBMS_OUTPUT.put_line (i);
        v_evt_id_list(v_test_varray(i)) := i;
     END IF;
  END LOOP;
  
--- TEST v_evt_id_list number_index_by_string
  FOR i IN v_evt_id_list.FIRST .. v_evt_id_list.LAST
  LOOP
     IF v_evt_id_list.EXISTS (i)
     THEN
        DBMS_OUTPUT.put_line (i||' = '||v_evt_id_list(i) );
     END IF;
  END LOOP;
  
-- GET v_evt_id_list number_index_by_string
  DBMS_OUTPUT.put_line (v_evt_id_list('73111') );

posted @ 2013-02-04 16:47 Kavin 阅读(226) | 评论 (0)编辑 收藏

1. config servlet in web.xml
 <servlet>
     <servlet-name>addressData</servlet-name>
     <servlet-class>com.xxx.webapp.AddressDataAutoCompleteServlet</servlet-class>
     <load-on-startup>1</load-on-startup>
    </servlet>
   
2. set autocomplete in JSP
$().ready(function() {
 
 $("#addressLine1").autocomplete("<%=StrUtils.filterStr(request.getContextPath())%>/servlet/addressData?paramName=addressLine");
 $("#addressLine2").autocomplete("<%=StrUtils.filterStr(request.getContextPath())%>/servlet/addressData?paramName=addressLine2");
 $("#addressLine3").autocomplete("<%=StrUtils.filterStr(request.getContextPath())%>/servlet/addressData?paramName=addressLine3");
 $("#addressCity").autocomplete("<%=StrUtils.filterStr(request.getContextPath())%>/servlet/addressData?paramName=addressCity");
 $("#addressPostCode").autocomplete("<%=StrUtils.filterStr(request.getContextPath())%>/servlet/addressData?paramName=addressPostCode");
 $("#firstFocusObj").focus();
});

<html:text name="" tabindex="9" style="color: grey;" onclick="clearAddressValue(this)" styleId="addressLine1" value='<%=request.getAttribute("postalAddress1") == null ? defalutAddressValue : (String)request.getAttribute("postalAddress1")%>' property="TLContactDetailForm.postalAddress1" size="50" maxlength="50" styleClass="inputText2"></html:text>

<input type="text" name="TLContactDetailForm.postalAddress1" maxlength="50" size="50" tabindex="9" value="Start typing your address and we will finish it for you" onclick="clearAddressValue(this)" id="addressLine1" style="color: grey;" class="inputText2">

3. return addresses in java class: AddressDataAutoCompleteServlet.java

 

package com.xxxxxx.webapp;

import com.xxxxxx.exception.ServiceException;
import com.xxxxxx.util.StrUtils;
import com.xxxxxx.webapp.context.ServiceLocator;
import com.xxxxxx.util.AddressShow;

import java.io.IOException;
import java.io.PrintWriter;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;


/**
 * Servlet implementation class AddressDataAutoCompleteServlet
 */
public class AddressDataAutoCompleteServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    public Logger LOG = Logger.getLogger(this.getClass().getName());

    /**
     * @see HttpServlet#HttpServlet()
     */
    public AddressDataAutoCompleteServlet() {
        super();
    }
   
    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
        String paramName = request.getParameter("paramName");
        String paramValue = request.getParameter("q");
        LOG.info(paramName);
        LOG.info(paramValue);

        List list = new ArrayList();

        try {
            list = ServiceLocator.getAddressService()
                                 .searchAddressList(paramName, paramValue);
        } catch (ServiceException e) {
         LOG.error(e.getMessage(),e);
        }

        PrintWriter t_PW = response.getWriter();
       
        for (int i = 0; i < list.size(); i++) {
            String address = StrUtils.toTitleCase((String) list.get(i));

            if (paramName.equals("addressLine")) {
             AddressShow.showAddress(t_PW,address);
            } else if (paramName.equals("addressLine1")) {
             AddressShow.showAddress(t_PW,address);
            } else if (paramName.equals("addressLine2")) {
             AddressShow.showAddress(t_PW,address);
            } else if (paramName.equals("addressLine3")) {
             AddressShow.showAddress(t_PW,address);
            } else if (paramName.equals("addressCity")) {
             AddressShow.showAddress(t_PW,address);
            } else if (paramName.equals("addressPostCode")) {
             AddressShow.showAddress(t_PW,address);
            }
        }
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

 

 


------
AddressShow.java

package com.intl.cigna.util;

import java.io.PrintWriter;

public class AddressShow
{
  public static void showAddress(PrintWriter pw, String input)
  {
    pw.write(input + "\n");

  }
}

posted @ 2012-06-07 22:39 Kavin 阅读(294) | 评论 (0)编辑 收藏

Unauthorized access to users data via Browser’s Cach

Solution:


1 <%  response.setHeader("Pragma""no-cache"); 
2                 response.setHeader("Cache-Control""no-store"); 
3                 response.setHeader("Expires""0"); 
4                 response.setDateHeader("Expires"-1); 
5 %>
6 

posted @ 2011-06-09 17:53 Kavin 阅读(237) | 评论 (0)编辑 收藏

SSH2中,直接获取SEQUENCE的NEXTVAL

使用Spring的 类 org.springframework.jdbc.support.incrementer.OracleSequenceMaxValueIncrementer

Spring配置文件:
 1     <bean id="userDao" class="com.xx.dao.impl.UserDAOImpl">
 2         <property name="sessionFactory" ref="sessionFactory" />
 3         <property name="seqGenerator" ref="seqDispGenerator"></property>
 5     </bean>
 6     
 7     <bean id="seqDispGenerator" class="org.springframework.jdbc.support.incrementer.OracleSequenceMaxValueIncrementer">
 8         <property name="dataSource" ref="dataSource"></property>
 9         <property name="incrementerName" ><value>SEQ_DISP_ID</value></property>
10     </bean>



UserDAOImpl.java中引用:
private OracleSequenceMaxValueIncrementer seqGenerator;
    
    

    
/**
     * 
@return the seqGenerator
     
*/
    
public OracleSequenceMaxValueIncrementer getSeqGenerator() {
        
return seqGenerator;
    }

    
/**
     * 
@param seqGenerator the seqGenerator to set
     
*/
    
public void setSeqGenerator(OracleSequenceMaxValueIncrementer seqGenerator) {
        
this.seqGenerator = seqGenerator;
    }

UserDAOImpl.java中调用:
1 System.out.println("---------------------- this.seqGenerator().nextIntValue="+this.seqGenerator.nextIntValue());


posted @ 2011-05-06 14:24 Kavin 阅读(2670) | 评论 (0)编辑 收藏

Hibernate ID generator 自定义主键生成器

/**
 * 
 
*/
package com.ge.hc.eapp.generator;


import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import org.hibernate.HibernateException;
import org.hibernate.MappingException;

import org.hibernate.dialect.Dialect;

import org.hibernate.engine.SessionImplementor;

import org.hibernate.id.Configurable;
import org.hibernate.id.IdentifierGenerator;
import org.hibernate.id.PersistentIdentifierGenerator;

import org.hibernate.type.Type;

import java.io.Serializable;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Properties;

/**
 * 
@author Kavin
 *
 
*/
public class DispNoGenerator implements IdentifierGenerator, Configurable {
    
private static final Log log = LogFactory.getLog(DispNoGenerator.class);

    
//存储最大值的数组的容量
    private static final int MAX_CAPACITY = 2000;

    
/* 同步锁 */
    
private static final Object lock = new Object();

    
//存储表存储在数组中的索引值
    private static Map map = new HashMap();

    
//最大值数组
    private static long[] seqs = new long[MAX_CAPACITY];

    
//最大值数组已经使用的容量
    private static int lastIndex;

    
//递增步长,默认加1
    private int step = 1;
    
private String key;
    
private String sql;
    
private Connection connection;
    
private Class returnClass;

    
public Serializable generate(SessionImplementor session, Object object)
        
throws HibernateException {
        
// TODO Auto-generated method stub
        connection = session.connection();

//        long seq = -1;

        
//找到索引值
//        int index = findIndex();

//        //把最大值加1
//        seqs[index] = seqs[index] + step;
//
//        seq = seqs[index];
        
        String strGenerateId 
= null;
        System.out.println(
"this.sql="+this.sql);
        
try {
            
long t_SeqNo = this.getSeqValue();
        
        System.out.println(
"t_SeqNo="+t_SeqNo);
       
        
//得到流水号,是自己写的工具类生成的.形式为000x
        String seqStr = String.valueOf(t_SeqNo);
        
//JspFormate.currentFormateORM(seq);
        
//得到yymmdd,是自己写的方法工具类生成的yymmdd
        String preDate = "20110506";
        
//得到hhmmss,是自己写的工具类获取的hhmmss
        
//String preHour = JspFormate.dateFormateOnlyHHMMSSORM(new Date());
        String preHour = "1035";
        strGenerateId 
= preDate + preHour + seqStr;
        } 
catch (SQLException e) {
            log.error(e);
            e.printStackTrace();
        }

        
return strGenerateId;
    }

    
/**
     * 找到表中自动增长字段存储在数组中的索引值
     * 
@return 索引值
     
*/
    
private int findIndex() {
        
int index = 0;

        
//首先中缓存中取出索引值
        Integer integer = (Integer) map.get(key);

        
//如果没有找到就从数据库中读出最大值并进行cache
        if (null == integer) {
            
//double check lock
            synchronized (lock) {
                integer 
= (Integer) map.get(key);

                
if (null == integer) {
                    
long maxvalue = 1;

                    
try {
                        maxvalue 
= this.getSeqValue();
                    } 
catch (SQLException e) {
                        log.error(e);
                    }
                    maxvalue 
= new Long(0).longValue();

                    integer 
= new Integer(lastIndex++);
                    seqs[integer.intValue()] 
= maxvalue;
                    map.put(key, integer);
                }
            }
        }

        index 
= integer.intValue();

        
return index;
    }

    
public void configure(Type type, Properties params, Dialect d)
        
throws MappingException {
        
//     取出table参数
        String table = params.getProperty("table");

        
if (table == null) {
            table 
= params.getProperty(PersistentIdentifierGenerator.TABLE);
        }

        
//取出column参数
        String column = params.getProperty("column");

        
if (column == null) {
            column 
= params.getProperty(PersistentIdentifierGenerator.PK);
        }

        
//表的sehcma参数
        String schema = params.getProperty(PersistentIdentifierGenerator.SCHEMA);

        returnClass 
= type.getReturnedClass();

        
//取出step参数
        String stepvalue = params.getProperty("step");

        
if ((null != stepvalue) && !"".equals(stepvalue.trim())) {
            
try {
                step 
= Integer.parseInt(stepvalue);
            } 
catch (Exception e) {
                log.error(e);
            }
        }

        
//构造存储在Map中的索引值的key name
        key = table + "_$_" + column;

        
//根据参数构造取最大值的SQL
        sql = "select SEQ_COMPANY_ID.nextval from dual";

        
    }

    
/**
     * 取指定SEQUENCE的值,不存在记录返回0
     * 
@return Sequence最大值
     * 
@throws SQLException if sql error occurs.
     
*/
    
private long getSeqValue() throws SQLException {
        
long maxvalue = 0;

        PreparedStatement st 
= connection.prepareStatement(sql);
        System.out.println(
"============================================" + sql);
        ResultSet rs 
= null;

        
try {
            rs 
= st.executeQuery();

            
if (rs.next()) {
                maxvalue 
= rs.getLong(1);
            }

            sql 
= null;
        } 
finally {
            
if (rs != null) {
                rs.close();
            }

            st.close();
        }

        
return maxvalue;
    }
    
    
/**
     * 取指定表中id字段的最大值,不存在记录返回0
     * 
@return 最大值
     * 
@throws SQLException if sql error occurs.
     
*/
    
private long getMaxvalue() throws SQLException {
        
long maxvalue = 0;

        PreparedStatement st 
= connection.prepareStatement(sql);
        System.out.println(
"============================================" + sql);
        ResultSet rs 
= null;

        
try {
            rs 
= st.executeQuery();

            
if (rs.next()) {
                maxvalue 
= rs.getLong(1);
            }

            sql 
= null;
        } 
finally {
            
if (rs != null) {
                rs.close();
            }

            st.close();
        }

        
return maxvalue;
    }
}

Hibernate 配置文件

<id name="userId" type="java.lang.String">
            
<column name="USER_ID" />
            
<generator class="com.xx.generator.DispNoGenerator" />
        
</id>


posted @ 2011-05-06 13:42 Kavin 阅读(2115) | 评论 (0)编辑 收藏