随笔 - 7  文章 - 3  trackbacks - 0
<2011年10月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

常用链接

留言簿

随笔档案

文章分类

文章档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

     摘要: 首先我们需要一个被加载的js文件,我在一个固定文件夹下创建了一个package.js,打开后在里面写一个方法functionOne,很简单,代码如下:function functionOne(){ alert("成功加载"); }后面的html文件都创建在同一个目录下。方法一:直接document.write在同一个文件夹下面创建一个function1.html,代码如下:<ht...  阅读全文
posted @ 2013-06-01 09:19 Tomas 阅读(379) | 评论 (0)编辑 收藏


多文件上传 jquery的插件
使用的方法  导入 jquery.js 及 jquery.MultiFile.js ,
方式一: 后台是文件数组  
 private File[] upload; // 与jsp表单中的名称对应
 private String[] uploadFileName;
 private String[] uploadContentType;
在 form 中加入 <input type="file" name="upload[]" class="multi" /> 即可。

方式二:后台是List<File>
 private List<File> upload; // 与jsp表单中的名称对应
 private List<String> uploadFileName;
 private List<String> uploadContentType;

jquery.MultiFile.js  将选中的文件列在From中,名字为upload的<input>,所以要用 name="upload[]"(方法一)或者name="upload" (方法二) 来接收
class="multi" 是 jQuery 用来作的文件类型,HTML 部份代码如下:

<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<title>Untitled Document</title>
<script src="/multiple-file-upload/jquery.js" type="text/javascript" language="javascript"></script>
<script src="/multiple-file-upload/jquery.MultiFile.js" type="text/javascript" language="javascript"></script>

</head>
<body>

<form enctype="multipart/form-data" action="<?php $_SERVER['PHP_SELF'] ?>" method="POST">
<input type="file" name="upload[]" class="multi" maxlength="2"/>
//<input type="file" name="upload" class="multi" />

<input type="submit" value="Upload File" />
</form>

</body>

参数说明:

参数 说明 说明
class="multi" maxlength="2" Limit: 2 files.
Allowed extensions: any.
限制数量2
class="multi" accept="gif|jpg" Limit: no limit.
Allowed extensions: gif and jpg.
格式只能 gif  jpg
class="multi" accept="gif|jpg" maxlength="3" Limit: 3 files
Allowed extensions: gif, jpg.
限制数量3,格式只能 gif  jpg


主页:http://www.fyneworks.com/jquery/multiple-file-upload/

下载:http://www.fyneworks.com/jquery/multiple-file-upload/#tab-Download

示例:http://www.fyneworks.com/jquery/multiple-file-upload/#tab-Examples

posted @ 2013-05-17 15:56 Tomas 阅读(4154) | 评论 (2)编辑 收藏
/**
 * 数字转换为大写人民币计数
 * @author 王代军
 * @since Dec 16,2011
 */

public class Num2Rmb
{
    private String[] hanArr = {"零" , "壹" , "贰" , "叁" , "肆" ,
        "伍" , "陆" , "柒" , "捌" , "玖"};
    private String[] unitArr = {"拾","百","千","万"};

    /**
     * 把一个四位的数字字符串变成汉字字符串
     * @param numStr 需要被转换的四位的数字字符串
     * @return 四位的数字字符串被转换成的汉字字符串。
     */
    private String toHanStr(String numStr)
    {
        String result = "";
        int numLen = numStr.length();
        //依次遍历数字字符串的每一位数字
        for (int i = 0 ; i < numLen ; i++ )
        {
            //把char型数字转换成的int型数字,因为它们的ASCII码值恰好相差48
            //因此把char型数字减去48得到int型数字,例如'4'被转换成4。
            int num = numStr.charAt(i) - 48;
            //如果不是最后一位数字,而且数字不是零,则需要添加单位(千、百、十)
            if ( i != numLen - 1 && num != 0)
            {
                result += hanArr[num] + unitArr[numLen - 2 - i];
            }
            //否则不要添加单位
            else
            {
                
                //上一个数是否为“零”,不为“零”时就添加
                if(result.length()>0 && hanArr[num].equals("零") && result.charAt(result.length()-1)=='零')
                    continue;
                result += hanArr[num];
            }
        }
        //只有个位数,直接返回
        if(result.length()==1)
            return result;
        
        int index=result.length()-1;
        while(result.charAt(index)=='零'){
            index--;
        }
        if(index!=result.length()-1)
            return result.substring(0,index+1);
        else {
            return result;
        }
    }
    /**
     * 把一个输入的数字字符串变成汉字字符串
     * @param numStr 需要被转换得到数字字符串
     * @return 数字字符串被转换成的汉字RMB字符串。
     */
    private String toRmbStr(String numStr){
        //获取字符串长度
        int numLen = numStr.length();
        //判断长度小于4(一万以内~0-9999) 调用toHanStr();
        if(numLen<=4){
            return toHanStr(numStr);
        }
        //4<长度<=8 (一亿以内 1000-99999999)
        else if(numLen>4&&numLen<=8){
            String[] subArr={numStr.substring(0, numLen-4),numStr.substring(numLen-4, numLen)};
            return toHanStr(subArr[0])+"万"+toHanStr(subArr[1]);
        }
        //8<长度<=10 (百亿以内 一亿-9999999999)
        else if(numLen>8&&numLen<=10){
            String[] subArr={numStr.substring(0,numLen-8),numStr.substring(numLen-8,numLen-4),numStr.substring(numLen-4,numLen)};
            return toHanStr(subArr[0])+"亿"+toHanStr(subArr[1])+"万"+toHanStr(subArr[2]);
        }
        else return "输入有误!";    
    }          
    public static void main(String[] args)
    {        
        Num2Rmb nr = new Num2Rmb();
        System.out.println("只支持整数(0~99亿)");
        //测试把一个四位的数字字符串变成汉字字符串
        System.out.println(nr.toRmbStr("1"));
        System.out.println(nr.toRmbStr("10"));
        System.out.println(nr.toRmbStr("15"));
        System.out.println(nr.toRmbStr("110"));
        System.out.println(nr.toRmbStr("123"));
        System.out.println(nr.toRmbStr("105"));
        System.out.println(nr.toRmbStr("1000"));
        System.out.println(nr.toRmbStr("1101"));
        System.out.println(nr.toRmbStr("1110"));
        System.out.println(nr.toRmbStr("1005"));
        System.out.println(nr.toRmbStr("101105"));
        System.out.println(nr.toRmbStr("1011109"));
        System.out.println(nr.toRmbStr("9999999999"));
    }
}

posted @ 2011-12-26 13:26 Tomas 阅读(551) | 评论 (0)编辑 收藏
通用的增删该查工具类  可在dao层 new一个
CommonCrudUtil(本类)实例  实现对数据的增删改查




package com.XXXXX.util;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.*;
/**
 * 通用增删改查工具类
 * @author 王代军
 * @since Dec 19,2011
 * @version 1.0
 */
@SuppressWarnings("unchecked")
public class CommonCrudUtil<T> {
    /**
     * 添加功能
     * @param obj 要保存的对象
     */
    public boolean create(Object obj){
        Session session=HibernateSessionFactory.getSession();
        Transaction tx=null;
        boolean flag=false;
        try{
            tx=session.beginTransaction();
            session.persist(obj);
            tx.commit();
            flag=true;
        }catch(Exception e){
            e.printStackTrace();
            if(tx!=null){        
                tx.rollback();
            }
        }finally{
            session.close();
        }    
        return flag;
    }
    /**
     * 查询功能
     * @param clazz 要查询对象的类型  obj 要查询的对象的 可序列化的字段 (本设计指主键 id)
     */
    public Object retrieve(Class clazz,Object obj){
        Session session=HibernateSessionFactory.getSession();
        Transaction tx=null;
        try{
            tx=session.beginTransaction();
            Object object=session.get(clazz,(Serializable) obj);
            tx.commit();
            return object;
        }catch(Exception e){
            e.printStackTrace();
            if(tx!=null){        
                tx.rollback();
            }
            return null;
        }finally{
            session.close();
        }        
    }    
    /**
     * 查询全部功能
     * @param clazz 要查询的对象的类型
     */
    public List<T> retrieve(Class clazz){
        Session session=HibernateSessionFactory.getSession();
        List<T> list=new ArrayList<T>();
        Transaction tx=null;
        try{
            tx=session.beginTransaction();
            Criteria cr=session.createCriteria(clazz);
            list=cr.list();
            tx.commit();
            return list;
        }catch(Exception e){
            e.printStackTrace();
            if(tx!=null){            
                tx.rollback();
            }
            return null;
        }finally{
            session.close();
        }
    }
    /**
     * 更新功能
     * @param obj 要更新的对象
     */
    public boolean update(Object obj){
        Session session=HibernateSessionFactory.getSession();
        boolean flag=false;
        Transaction tx=null;
        try{
            tx=session.beginTransaction();
            session.update(obj);
            tx.commit();
            flag=true;
        }catch(Exception e){
            e.printStackTrace();
            if(tx!=null){            
                tx.rollback();
            }
        }finally{
            session.close();
        }
        return flag;
    }
    /**
     * 删除功能
     * @param clazz 要删除的对象的类型 obj 要删除的对象的 唯一标识(可序列化)字段 (指主键 id)
     */
    public boolean delete(Class clazz,Object obj){
        Session session=HibernateSessionFactory.getSession();
        Transaction tx=null;
        boolean flag=false;
        try{
            tx=session.beginTransaction();
            Object object=session.get(clazz,(Serializable) obj);
            session.delete(object);
            tx.commit();
            flag=true;
        }catch(Exception e){
            e.printStackTrace();
            if(tx!=null){        
                tx.rollback();
            }
        }finally{
            session.close();
        }    
        return flag;
    }
    
}



调用实现   dao层的实现类调用 
   CommonCrudUtil  的方法实现增删改查

import java.util.Date;
import java.util.List;

import org.hibernate.Query;
import com.zhongyou.bean.IDCard;
import com.zhongyou.util.CommonCrudUtil;

public class IDCardDaoImpl implements IDCardDaoIf {

    
     CommonCrudUtil crud=new CommonCrudUtil<IDCard>();
   
     public int addInformation(IDCard card) {

     IDCard card=new IDCard();
     card.setId(16);
     card.setName("xiaoxiao");
     card.setAddress("xiaoxiao");
     card.setBirthday(new Date());
     card.setNumber("29472398734");
     card.setSex("男");


     crud.create(card);//增加.......

}
 
     。。。。。。查询。。。。。
     crud.retrieve(IDCard.class,3);
    。。。。。。查询全部。。。。。
     crud.retrieve(IDCard.class);

    。。。。。。修改。。。。
     crud.update(card);
    。。。。。。删除。。。。
     crud.delete(IDCard.class,3);
。。。。。。。。。



写的简陋些  只是些想法可借鉴而已 同志们 可以自己完善。。。。




posted @ 2011-12-26 13:22 Tomas 阅读(1992) | 评论 (1)编辑 收藏

Oracle的默认服务一共有5个:

1.OracleDBConsoleorcl oem控制台的服务进程

2.OracleJobSchedulerORCL 定时器的服务进程

3.OracleOraDb10g_home1iSQL*Plus isql*plus的服务进程

4.OracleOraDb10g_home1TNSListener 监听器的服务进程


5.OracleServiceORCL 数据库服务进程

要查看系统中已启动的服务,我们可以在“开始→控制面板→管理工具”中双击“服务”,或者直接

在“运行”中输入 “Services.msc”打开服务设置对话框,就可以看到每一个服务都有以下几个属

性:名称、描述、状态、启动类型、登录身份、依存关系。

OracleDBConsoleorcl --可以不启动,用于管理Oracle的企业管理器的服务.

OracleJobSchedulerORCL --通常不启动,用于定期操作任务的服务

OracleOraDb10g_home1iSQL*Plus --可以不启动,这是isqlplus服务,用于用网页执行sql执行,11g已

经取消了这个功能

OracleOraDb10g_home1TNSListener --必须启动,这是临听,用于远程客户端连接你的Oracle

OracleServiceORCL --必须启动,这是Oracle数据库的服务

可以用命令启动:

#启动listener:

lsnrctl start

#启动数据库

net start OracleServiceORCL

只有这两项是必须启动的:

OracleOraDb10g_home1TNSListener

OracleServiceORCL

为什么OracleJobSchedulerORCL会显示禁用?

数据库工作日程调度,一般没有安排工作日程就不需要启动,为什么默认是禁用?因为启动后会占用很大的系统资源。

(1)OracleServiceSID                    

数据库服务,这个服务会自动地启动和停止数据库。如果安装了一个数据库,它的缺省启动类型为自动。服务进程为Oracle.EXE,参数文件initSID.ora,日志文件SIDALRT.log,控制台SVRMGRL.EXE、SQLPLUS.EXE。

(2)OracleHOME_NAMETNSListener

监听器服务,服务只有在数据库需要远程访问时才需要(无论是通过另外一台主机还是在本地通过 SQL.Net 网络协议都属于远程访问),不用这个服务就可以访问本地数据库,它的缺省启动类型为自动。服务进程为TNSLSNR.EXE,参数文件 Listener.ora,日志文件listener.log,控制台LSNRCTL.EXE,默认端口1521、1526。

(3)OracleHOME_NAMEAgent

OEM代理服务,接收和响应来自OEM控制台的任务和事件请求,只有使用OEM管理数据库时才需要,它的缺省启动类型为自动。服务进程为DBSNMP.EXE,参数文件snmp_rw.ora,日志文件nmi.log,控制台LSNRCTL.EXE,默认端口1748。

(4)OracleHOME_NAMEClientCache      

名字缓存服务,服务缓存用于连接远程数据库的Oracle Names 数据。它的缺省启动类型是手动。然而,除非有一台Oracle Names 服务器,否则没有必要运行这个服务。服务进程为ONRSD.EXE,参数文件NAMES.ORA,日志文件ONRSD.LOG,控制台 NAMESCTL.EXE。

(5)OracleHOME_NAMECMAdmin                    

连接管理服务,是构建Connection Manager服务器所用,只有服务器作为Connection Manager才需要,它的缺省启动类型是手动。服务进程为CMADMIN.EXE,参数文件CMAN.ORA,日志文件CMADM_PID.TRC,控 制台CMCTL.EXE,默认端口1830。

(6)OracleHOME_NAMECMan                    

连接网关服务,是构建Connection Manager服务器所用,只有服务器作为Connection Manager才需要,它的缺省启动类型是手动。服务进程为CMGW.EXE,参数文件CMAN.ORA,日志文件CMAN_PID.TRC,控制台 CMCTL.EXE,默认端口1630。

(7)OracleHOME_NAMEDataGatherer

性能包数据采集服务,除非使用Oracle Capacity Planner 和 Oracle Performance Manager,否则不需要启动,它的缺省启动类型是手动。服务进程为VPPDC.EXE,日志文件alert_dg.log,控制台 vppcntl.exe。

(8)OracleHOME_NAMEHTTPServer

Oracle提供的WEB服务器,一般情况下我们只用它来访问Oracle Apache 目录下的Web 页面,比如说JSP 或者modplsql 页面。除非你使用它作为你的HTTP服务,否则不需要启动(若启动它会接管IIS的服务),它的缺省启动类型是手动。服务进程为APACHE.EXE,参 数文件httpd.conf,默认端口80。

(9)OracleHOME_NAMEPagingServer

通过一个使用调制解调器的数字传呼机或者电子邮件发出警告(没试过),它的缺省启动类型是手动。服务进程PAGNTSRV.EXE,日志文件paging.log。

(10)OracleHOME_NAMENames

Oracle Names服务,只有服务器作为Names Server才需要,它的缺省启动类型是手动。服务进程NAMES.EXE,参数文件NAMES.ORA,日志文件NAMES.LOG,控制台NAMESCTL.EXE,默认端口1575。

(11)OracleSNMPPeerMasterAgent

SNMP服务代理,用于支持SNMP的网管软件对服务器的管理,除非你使用网管工具监控数据库的情况,否则不需要启动,它的缺省启动类型是手动。服务进程为AGNTSVC.EXE,参数文件MASTER.CFG,默认端口161。

(12)OracleSNMPPeerEncapsulater

SNMP协议封装服务,用于SNMP协议转换,除非你使用一个不兼容的SNMP代理服务,否则不需要启动,它的缺省启动类型是手动。服务进程为ENCSVC.EXE,参数文件ENCAPS.CFG,默认端口1161。

(13)OracleHOME_NAMEManagementServer

OEM管理服务,使用OEM时需要,它的缺省启动类型是手动。服务进程为OMSNTSVR.EXE,日志文件oms.nohup。

OracleServiceMYDB

OracleOraHome92TNSListener

别的一般不用开,有需要再开






附(批处理)

:doit

  @echo off

  set /p xz=按"kq"键启动服务------按"gb"关闭服务

  if %xz%==kq goto kq

  if %xz%==gb goto gb

  goto doit

  :kq

  @echo off

  echo 正在启动oracle服务,请稍等......

  net start OracleServiceORCL

  net start OracleDBConsoleorcl

  net start OracleOraDb10g_home1TNSListener

  net start OracleOraDb10g_home1iSQL*Plus

  echo 启动oracle服务完成

  echo. & pause

  goto doit

  :gb

  @echo off

  echo 正在关闭oracle服务,请稍等.......

  net stop OracleServiceORCL

  net stop OracleDBConsoleorcl

  net stop OracleOraDb10g_home1TNSListener

  net stop OracleOraDb10g_home1iSQL*Plus

  echo 关闭oracle服务完成

  echo. & pause

  goto doit

把代码复制 保存  修改后缀名为.bat 执行即可;

posted @ 2011-11-09 11:50 Tomas 阅读(148) | 评论 (0)编辑 收藏





会话跟踪,其原理是什么。

我们都知道,为了在WEB服务器中识别发出请求的用户,对于每一个访问者WEB服


务器都会给其创建一个session。在会话的创建于使用中,比较容易犯错误的地


方主要是当我们需要读取出保存在session的数据时,没有转化为相应的格式,


导致程序出错。比如:

HttpSession session=request.getSession();


|\\\\\\\\\\


注意Session在为进行HttpSession session=request.getSession();之前


out.println(request.getSession());


HttpSession hs=request.getSession();
out.println(hs);
两者执行的结果相同;


第一个是获得Tomcat内置的默认Session (就是会话建立时自动生成的Session唯一标记本次会话)


第二次 是把 唯一的标识Session 通过request.getSession()获取内存地址 给hs 然后hs


会获取Session 然后对其操作  其实本质上是对本次会话的唯一Session进行操作.


\\\\\\\\\\\\\\

String MyName="Hello Accp";

session.setAttribute("name",MyName);

String name=seeeion.getAttribute("name");//错误的

String name=(String)seeeion.getAttribute("name");//正确的

由于WEB服务器为用户创建的Session会占用系统内存,所以通常服务器都需要及


时的删除Session信息以释放资源,方法有:

①关闭浏览器,关闭Session。

②调用HttpSession的invalidate()方法,删除HttpSession对象和数据。

③两次访问时间间隔大于Session定义的非活动时间。

在Servlet中的HttpRequestServlet对象创建HttpSession对象有两种方法:

①HttpSession session=request.getSession(boolean value);

②HttpSession session=request.getSession();

第一中方法中,布尔值为true时,如果存在于当前请求相关联的会话,就返回该


会话,否则就返回一个新会话。反之,布尔值为false时,如果存在当前请求相


关联的会话,就返回该会话,否则就返回null。

第二种方法与第一种方法的第一种情况相同。通常我们都喜欢使用第二种方法。

posted @ 2011-10-16 21:29 Tomas 阅读(218) | 评论 (0)编辑 收藏