heting

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  40 随笔 :: 9 文章 :: 45 评论 :: 0 Trackbacks

2009年1月10日 #

 

create or replace package CARD_SERVICE_DAY_VIEW_PARAM  is 
   
function set_param(num varcharreturn varchar
   
function get_param  return varchar

   
end CARD_SERVICE_DAY_VIEW_PARAM; 
commit;
   
   
create or replace package body CARD_SERVICE_DAY_VIEW_PARAM is 
       paramValue 
varchar(10); 
       
function set_param(num varcharreturn varchar is 
       
begin 
         paramValue:
=num; 
         
return num; 
        
end;  
       
       
function get_param return varchar is 
       
begin 
         
return paramValue; 
       
end
       
   
end CARD_SERVICE_DAY_VIEW_PARAM;    
commit;

create or replace view CARD_SERVICE_DAY_VIEW as 
select
cs.id,
cs.card_id,
cs.lock_money,
to_char(cs.check_time,
'yyyy-MM-dd hh24:mi'as check_time,
cs.name,cs.phone,( months_between(to_date(CARD_SERVICE_DAY_VIEW_PARAM.get_param(),
'yyyyMMdd'),
to_date(to_char(cs.CHECK_TIME,
'yyyyMMdd'),'yyyyMMdd'))  ) as curr_batch,
(
select count(1from transaction where card_id=cs.card_id and tran_time between cs.check_time and to_date(CARD_SERVICE_DAY_VIEW_PARAM.get_param(),'yyyyMMdd'and (curr_bal-money)<cs.lock_money) as condition,
(
select count(1from service_transaction where batch=(months_between(to_date(CARD_SERVICE_DAY_VIEW_PARAM.get_param(),'yyyyMMdd'),to_date(to_char(cs.CHECK_TIME,'yyyyMMdd'),'yyyyMMdd'))) and s_id=cs.id) as hasAudit 
from card_service cs 
where cs.state='T' 
and 
months_between(to_date(CARD_SERVICE_DAY_VIEW_PARAM.get_param(),
'yyyyMMdd'),to_date(to_char(cs.CHECK_TIME,'yyyyMMdd'),'yyyyMMdd')) in (1,2,3,4,5,6
order by cs.card_id
commit;
posted @ 2010-10-11 15:26 贺挺 阅读(528) | 评论 (0)编辑 收藏

window.showdialog完全手册,解决模态窗口,传值和返回值问题2009-08-28 13:31基本介绍:
showModalDialog() (IE 4+ 支持)
showModelessDialog() (IE 5+ 支持)
window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框。
window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。

使用方法:
vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures])
vReturnValue = window.showModelessDialog(sURL [, vArguments] [,sFeatures])

参数说明:
sURL--必选参数,类型:字符串。用来指定对话框要显示的文档的URL。
vArguments--可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过window.dialogArguments来取

得传递进来的参数。
sFeatures--可选参数,类型:字符串。用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。
1.dialogHeight :对话框高度,不小于100px,IE4中dialogHeight 和 dialogWidth 默认的单位是em,而IE5中是px,为方便其见,

在定义modal方式的对话框时,用px做单位。
2.dialogWidth: 对话框宽度。
3.dialogLeft: 离屏幕左的距离。
4.dialogTop: 离屏幕上的距离。
5.center: {yes | no | 1 | 0 }:窗口是否居中,默认yes,但仍可以指定高度和宽度。
6.help: {yes | no | 1 | 0 }:是否显示帮助按钮,默认yes。
7.resizable: {yes | no | 1 | 0 } [IE5+]:是否可被改变大小。默认no。
8.status: {yes | no | 1 | 0 } [IE5+]:是否显示状态栏。默认为yes[ Modeless]或no[Modal]。
9.scroll:{ yes | no | 1 | 0 | on | off }:指明对话框是否显示滚动条。默认为yes。
下面几个属性是用在HTA中的,在一般的网页中一般不使用。
10.dialogHide:{ yes | no | 1 | 0 | on | off }:在打印或者打印预览时对话框是否隐藏。默认为no。
11.edge:{ sunken | raised }:指明对话框的边框样式。默认为raised。
12.unadorned:{ yes | no | 1 | 0 | on | off }:默认为no。

参数传递:
1.要想对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,最大为4096个字符。也可以传递对象,例如:


<script>
var obj = new Object();
obj.name="51js";
window.showModalDialog("modal.htm",obj,"dialogWidth=200px;dialogHeight=100px");
</script>
modal.htm
<script>
var obj = window.dialogArguments
alert("您传递的参数为:" + obj.name)
</script>


2.可以通过window.returnValue向打开对话框的窗口返回信息,当然也可以是对象。例如:

<script>
str =window.showModalDialog("modal.htm",,"dialogWidth=200px;dialogHeight=100px");
alert(str);
</script>
modal.htm
<script>
window.returnValue="/";
</script>
 

posted @ 2010-08-26 11:00 贺挺 阅读(240) | 评论 (0)编辑 收藏

AxWindowsMediaPlayer的详细用法
AxWindowsMediaPlayer的详细用法收藏
找我把,剛做過,相當熟悉


属性/方法名: 说明: 
[基本属性]   
URL:String; 指定媒体位置,本机或网络地址 
uiMode:String; 播放器界面模式,可为Full, Mini, None, Invisible 
playState:integer; 播放状态,1=停止,2=暂停,3=播放,6=正在缓冲,9=正在连接,10=准备就绪 
enableContextMenu:Boolean; 启用/禁用右键菜单 
fullScreen:boolean; 是否全屏显示 
[controls] wmp.controls //播放器基本控制 
controls.play; 播放 
controls.pause; 暂停 
controls.stop; 停止 
controls.currentPosition:double; 当前进度 
controls.currentPositionString:string; 当前进度,字符串格式。如“00:23” 
controls.fastForward; 快进 
controls.fastReverse; 快退 
controls.next; 下一曲 
controls.previous; 上一曲 
[settings] wmp.settings //播放器基本设置 
settings.volume:integer; 音量,0-100 
settings.autoStart:Boolean; 是否自动播放 
settings.mute:Boolean; 是否静音 
settings.playCount:integer; 播放次数 
[currentMedia] wmp.currentMedia //当前媒体属性 
currentMedia.duration:double; 媒体总长度 
currentMedia.durationString:string; 媒体总长度,字符串格式。如“03:24” 
currentMedia.getItemInfo(const string); 获取当前媒体信息"Title"=媒体标题,"Author"=艺术家,"Copyright"=版权信息,"Description"=媒体内容描述,"Duration"=持续时间(秒),"FileSize"=文件大小,"FileType"=文件类型,"sourceURL"=原始地址 
currentMedia.setItemInfo(const string); 通过属性名设置媒体信息 
currentMedia.name:string; 同 currentMedia.getItemInfo("Title") 
[currentPlaylist] wmp.currentPlaylist //当前播放列表属性 
currentPlaylist.count:integer; 当前播放列表所包含媒体数 
currentPlaylist.Item[integer]; 获取或设置指定项目媒体信息,其子属性同wmp.currentMedia 
AxWindowsMediaPlayer控件的属性收藏
MediaPlayer1.Play          播放  
MediaPlayer1.Stop          停止  
MediaPlayer1.Pause          暂停  
MediaPlayer1.PlayCount        文件播放次数  
MediaPlayer1.AutoRewind       是否循环播放  
MediaPlayer1.Balance         声道  
MediaPlayer1.Volume         音量  
MediaPlayer1.Mute          静音  
MediaPlayer1.EnableContextMenu    是否允许在控件上点击鼠标右键时弹出快捷菜单  
MediaPlayer1.AnimationAtStart    是否在播放前先播放动画  
MediaPlayer1.ShowControls      是否显示控件工具栏  
MediaPlayer1.ShowAudioControls    是否显示声音控制按钮  
MediaPlayer1.ShowDisplay       是否显示数据文件的相关信息  
MediaPlayer1.ShowGotoBar       是否显示Goto栏  
MediaPlayer1.ShowPositionControls  是否显示位置调节按钮  
MediaPlayer1.ShowStatusBar      是否显示状态栏  
MediaPlayer1.ShowTracker       是否显示进度条  
MediaPlayer1.FastForward       快进  
MediaPlayer1.FastReverse       快退  
MediaPlayer1.Rate          快进/快退速率  
MediaPlayer1.AllowChangeDisplaySize 是否允许自由设置播放图象大小  
MediaPlayer1.DisplaySize       设置播放图象大小  
    1-MpDefaultSize         原始大小  
    2-MpHalfSize           原始大小的一半  
    3-MpDoubleSize          原始大小的两倍  
    4-MpFullScreen          全屏  
    5-MpOneSixteenthScreen      屏幕大小的1/16  
    6-MpOneFourthScreen       屏幕大小的1/4  
    7-MpOneHalfScreen        屏幕大小的1/2  
MediaPlayer1.ClickToPlay       是否允许单击播放窗口启动Media Player  
 

http://blog.csdn.net/brouse8079/archive/2007/10/17/1829885.aspx

 

AxWindowsMediaPlayer常用属性
2008-03-18 21:28
2. Ctlcontrols属性

Ctlcontrols属性是AxWindowsMediaPlayer的一个重

要属性, 此控件中有许多常用成员。

(1) 方法play

用于播放多媒体文件,其格式为:

窗体名.控件名.Ctlcontrols.play()

如: AxWindowsMediaPlayer1.Ctlcontrols.play()

‘此处缺省窗体名是Me

(2) 方法pause

用于暂停正在播放的多媒体文件,其格式为:

窗体名.控件名.Ctlcontrols.pause()

如: AxWindowsMediaPlayer1.Ctlcontrols.pause()

(3) 方法stop

用于停止正在播放的多媒体文件,其格式为:

窗体名.控件名.Ctlcontrols.stop()

如: AxWindowsMediaPlayer1.Ctlcontrols.stop()

(4) 方法fastforward

用于将正在播放的多媒体文件快进,其格式为:

窗体名.控件名.Ctlcontrols.fastforward()

如:

AxWindowsMediaPlayer1.Ctlcontrols.forward()

(5) 方法fastreverse

窗体名.控件名.Ctlcontrols.fastreverse()

如:

AxWindowsMediaPlayer1.Ctlcontrols.fastreverse

()

6. 属性CurrentPosition

用于获取多媒体文件当前的播放进度,其值是数值类

型,使用格式为:

窗体名.控件名.Ctlcontrols.currentPosition

d1=AxWindowsMediaPlayer1.Ctlcontrols.currentPosi

tion

其中d1 是一个整型变量。

7. 属性Duration

用于获取当前多媒体文件的播放的总时间,其值为数

值类型,其使用格式为:

窗体名.控件名.currentMedia.duration

如:d2

=AxWindowsMediaPlayer1.currentMedia.duration

其中d2是一个整型变量。
controls.currentPositionString:string; 当前进

度,字符串格式。如“00:23”


属性/方法名: 说明: 
[基本属性]   
URL:String; 指定媒体位置,本机或网络地址 
uiMode:String; 播放器界面模式,可为Full, Mini,

None, Invisible 
playState:integer; 播放状态,1=停止,2=暂停,

3=播放,6=正在缓冲,9=正在连接,10=准备就绪

player.PlayStateChange += new AxWMPLib._WMPOCXEvents_PlayStateChangeEventHandler(player_PlayStateChange);

private void player_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
{
  // Test the current state of the player and display a message for each state.
  switch (e.newState)
  {
  case 0: // Undefined
  currentStateLabel.Text = "Undefined";
  break;

  case 1: // Stopped
  currentStateLabel.Text = "Stopped";
  break;

  case 2: // Paused
  currentStateLabel.Text = "Paused";
  break;

  case 3: // Playing
  currentStateLabel.Text = "Playing";
  break;

  case 4: // ScanForward
  currentStateLabel.Text = "ScanForward";
  break;

  case 5: // ScanReverse
  currentStateLabel.Text = "ScanReverse";
  break;

  case 6: // Buffering
  currentStateLabel.Text = "Buffering";
  break;

  case 7: // Waiting
  currentStateLabel.Text = "Waiting";
  break;

  case 8: // MediaEnded
  currentStateLabel.Text = "MediaEnded";
  break;

  case 9: // Transitioning
  currentStateLabel.Text = "Transitioning";
  break;

  case 10: // Ready
  currentStateLabel.Text = "Ready";
  break;

  case 11: // Reconnecting
  currentStateLabel.Text = "Reconnecting";
  break;

  case 12: // Last
  currentStateLabel.Text = "Last";
  break;

  default:
  currentStateLabel.Text = ("Unknown State: " + e.newState.ToString());
  break;
  }
}
 

 


enableContextMenu:Boolean; 启用/禁用右键菜单 
fullScreen:boolean; 是否全屏显示 
controls.currentPosition:double; 当前进度 
controls.fastForward; 快进 
controls.fastReverse; 快退 
controls.next; 下一曲 
controls.previous; 上一曲 
[settings] wmp.settings //播放器基本设置 
settings.volume:integer; 音量,0-100 
settings.autoStart:Boolean; 是否自动播放 
settings.mute:Boolean; 是否静音 
settings.playCount:integer; 播放次数 
[currentMedia] wmp.currentMedia //当前媒体属性 
currentMedia.duration:double; 媒体总长度 
currentMedia.durationString:string; 媒体总长度

,字符串格式。如“03:24” 
currentMedia.getItemInfo(const string); 获取当

前媒体信息"Title"=媒体标题,"Author"=艺术

家,"Copyright"=版权信息,"Description"=媒体内

容描述,"Duration"=持续时间(秒),"FileSize"=

文件大小,"FileType"=文件类型,"sourceURL"=原

始地址 
currentMedia.setItemInfo(const string); 通过属

性名设置媒体信息 
currentMedia.name:string; 同

currentMedia.getItemInfo("Title") 
[currentPlaylist] wmp.currentPlaylist //当前播

放列表属性 
currentPlaylist.count:integer; 当前播放列表所

包含媒体数 
currentPlaylist.Item[integer]; 获取或设置指定

项目媒体信息,其子属性同wmp.currentMedia
posted @ 2010-08-19 13:54 贺挺 阅读(1276) | 评论 (0)编辑 收藏

最近有个项目将要用到WebSphere,所以我提前来熟悉一下,在WebSphere7.0上安装完一个struts2的小项目测试,在tomcat下该项目没有任何问题,当我把tomcat下打包的war包在WebSphere中安装后,就只能访问html页面了,其余的struts2的请求,跟jsp页面都不能访问,提示您无权查看此页面,跑到日志文件中发现,启动时有如下错误:
[10-8-18 15:17:41:079 CST] 00000010 webapp        E com.ibm.ws.webcontainer.webapp.WebApp initializeExtensionProcessors SRVE0280E: 扩展处理器无法在工厂 [com.ibm.ws.jsp.webcontainerext.ws.WASJSPExtensionFactory@2bec2bec] 中进行初始化:java.lang.ClassCastException: com.sun.faces.application.WebappLifecycleListener incompatible with java.util.EventListener
        at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionProcessor.
<init>(AbstractJSPExtensionProcessor.java:250)
        at com.ibm.ws.jsp.webcontainerext.ws.WASJSPExtensionProcessor.
<init>(WASJSPExtensionProcessor.java:70)
        at com.ibm.ws.jsp.webcontainerext.ws.WASJSPExtensionFactory.createProcessor(WASJSPExtensionFactory.java:
251)
        at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionFactory.createExtensionProcessor(AbstractJSPExtensionFactory.java:
75)
        at com.ibm.ws.webcontainer.webapp.WebApp.initializeExtensionProcessors(WebApp.java:
1313)
        at com.ibm.ws.webcontainer.webapp.WebApp.commonInitializationFinish(WebApp.java:
360)
        at com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:
298)
        at com.ibm.ws.webcontainer.webapp.WebGroupImpl.addWebApplication(WebGroupImpl.java:
100)
        at com.ibm.ws.webcontainer.VirtualHostImpl.addWebApplication(VirtualHostImpl.java:
166)
        at com.ibm.ws.webcontainer.WSWebContainer.addWebApp(WSWebContainer.java:
731)
        at com.ibm.ws.webcontainer.WSWebContainer.addWebApplication(WSWebContainer.java:
616)
        at com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:
376)
        at com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:
668)
        at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:
1122)
        at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:
1315)
        at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:
619)
        at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:
940)
        at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:
725)
        at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:
2046)
        at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:
439)
        at com.ibm.ws.runtime.component.CompositionUnitImpl.start(CompositionUnitImpl.java:
123)
        at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:
382)
        at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.access$
300(CompositionUnitMgrImpl.java:110)
        at com.ibm.ws.runtime.component.CompositionUnitMgrImpl$CUInitializer.run(CompositionUnitMgrImpl.java:
949)
        at com.ibm.wsspi.runtime.component.WsComponentImpl$_AsynchInitializer.run(WsComponentImpl.java:
349)
        at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:
1550)

[
10-8-18 15:17:41:562 CST] 00000010 config        I   Initializing Sun's JavaServer Faces implementation (1.2_07-b03-FCS) for context '/cc'
[10-8-18 15:17:44:579 CST] 00000010 webapp        W com.ibm.ws.webcontainer.webapp.WebApp initializeTargetMappings SRVE0269W: 找不到用于处理 JSP 的扩展处理器。
[
10-8-18 15:17:44:584 CST] 00000010 webcontainer  I com.ibm.ws.wswebcontainer.VirtualHost addWebApplication SRVE0250I: Web 模块 null 已绑定到 default_host[*:9080,*:80,*:9443,*:5060,*:5061,*:443]。
[
10-8-18 15:17:44:616 CST] 0000000f webapp        I com.ibm.ws.webcontainer.webapp.WebGroupImpl WebGroup SRVE0169I: 正在装入 Web 模块:WIM。
[
10-8-18 15:17:44:793 CST] 0000000f WASSessionCor I SessionContextRegistry getSessionContext SESN0176I: 将为应用程序键 admin_host/wim 创建新的会话上下文
[
10-8-18 15:17:44:933 CST] 0000000f webcontainer  I com.ibm.ws.wswebcontainer.VirtualHost addWebApplication SRVE0250I: Web 模块 WIM 已绑定到 admin_host[*:9060,*:9043]。
[
10-8-18 15:17:45:194 CST] 00000011 webapp        I com.ibm.ws.webcontainer.webapp.WebGroupImpl WebGroup SRVE0169I: 正在装入 Web 模块:PlantsByWebSphere Sample Gallery Web Application。
[
10-8-18 15:17:45:262 CST] 00000010 ApplicationMg A   WSVR0221I: 应用程序已启动:StrutsTest_war
[
10-8-18 15:17:45:288 CST] 00000010 CompositionUn A   WSVR0191I: 已启动 BLA WebSphere:blaname=StrutsTest_war 中的组合单元 WebSphere:cuname=StrutsTest_war。

网上百度了一大堆都没有解决掉,
有的说在应用程序服务器 > WebSphere_Portal > Web 容器 > 定制属性->新建属性
com.ibm.ws.webcontainer.invokefilterscompatibility  true
添加以上属性,但是没有什么作用。

最后我将myeclipse中发布到WebSphere中的war包,去安装后,该问题消失了,一切访问都没问题。
比对一下里边的包,发下tomcat的war包多了三个jar包jsf-api.jar,jsf-impl.jar,jstl-1.2.jar,不管三七二十一,先删了再说,再次安装到WebSphere问题没在出现。
再次查看以前的错误信息原来说的是jsf-impl.jar包中的com.sun.faces.application.WebappLifecycleListener与java.util.EventListener不兼容导致。

 

posted @ 2010-08-17 16:24 贺挺 阅读(2967) | 评论 (0)编辑 收藏

ifconfig eth0 1.2.3.4(IP地址) netmask 255.0.0.0(网络掩码) up
posted @ 2010-08-16 10:17 贺挺 阅读(213) | 评论 (0)编辑 收藏

在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中的确是有vertical-align属性,但是它只对(X)HTML元素中拥有valign特性的元素才生效,例如表格元素中的<td>、<th>、<caption>等,而像<div>、<span>这样的元素是没有valign特性的,因此使用vertical-align对它们不起作用。

CSS网页布局DIV水平居中的各种方法

一、单行垂直居中

如果一个容器中只有一行文字,对它实现居中相对比较简单,我们只需要设置它的实际高度height和所在行的高度line-height相等即可。如:

imoker.cn(爱摩客)提供的代码片段:

div {  
  height:25px;  
  line-height:25px;  
  overflow:hidden;  
}
这段代码很简单,后面使用overflow:hidden的设置是为了防止内容超出容器或者产生自动换行,这样就达不到垂直居中效果了。

imoker.cn(爱摩客)提供的代码片段:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml">  
  <head>  
    <title> 单行文字实现垂直居中 </title>  
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
    <style type="text/css">  
      body { font-size:12px;font-family:tahoma;}  
      div {  
        height:25px;  
        line-height:25px;  
        border:1px solid #FF0099;  
        background-color:#FFCCFF;  
      }  
    </style>  
  </head>  
  <body>  
    <div>现在我们要使这段文字垂直居中显示!</div>  
  </body>  
</html>
不过在Internet Explorer 6及以下版本中,这和方法不支持对图片设置垂直居中。

二、多行未知高度文字的垂直居中

如果一段内容,它的高度是可变的那么我们就可以使用上一节讲到的实现水平居中时使用到的最后一种方法,就是设定Padding,使上下的padding值相同即可。同样的,这也是一种“看起来”的垂直居中方式,它只不过是使文字把<div>完全填充的一种方式而已。可以使用类似下面的代码:

imoker.cn(爱摩客)提供的代码片段:

div {  
  padding:25px;  
}
这种方法的优点就是它可以在任何浏览器上运行,并且代码很简单,只不过这种方法应用的前提就是容器的高度必须是可伸缩的。

imoker.cn(爱摩客)提供的代码片段:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml">  
  <head>  
    <title> 多行文字实现垂直居中 </title>  
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
    <style type="text/css">  
      body { font-size:12px;font-family:tahoma;}  
      div {  
        padding:25px;  
        border:1px solid #FF0099;  
        background-color:#FFCCFF;  
        width:760px;  
      }  
    </style>  
  </head>  
  <body>  
    <div><pre>现在我们要使这段文字垂直居中显示!  
      div {  
        padding:25px;  
        border:1px solid #FF0099;  
        background-color:#FFCCFF;  
      }  
    </pre></div>  
  </body>  
</html>
三、多行文本固定高度的居中

在本文的一开始,我们已经说过CSS中的vertical-align属性只会对拥有valign特性的(X)HTML标签起作用,但是在CSS中还有一个display属性能够模拟<table>,所以我们可以使用这个属性来让<div>模拟<table>就可以使用vertical-align了。注意,display:table和display:table-cell的使用方法,前者必须设置在父元素上,后者必须设置在子元素上,因此我们要为需要定位的文本再增加一个<div>元素:

imoker.cn(爱摩客)提供的代码片段:

div#wrap {  
  height:400px;  
  display:table;  
}  
div#content {  
  vertical-align:middle;  
  display:table-cell;  
  border:1px solid #FF0099;  
  background-color:#FFCCFF;  
  width:760px;  
}


imoker.cn(爱摩客)提供的代码片段:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   
<html xmlns="http://www.w3.org/1999/xhtml">   
  <head>   
    <title> 多行文字实现垂直居中 </title>   
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />   
    <style type="text/css">   
      body { font-size:12px;font-family:tahoma;}   
        div#wrap {   
        height:400px;   
        display:table;   
      }   
      div#content {   
        vertical-align:middle;   
        display:table-cell;   
        border:1px solid #FF0099;   
        background-color:#FFCCFF;   
        width:760px;   
      }   
    </style>   
  </head>   
  <body>   
    <div id="wrap">   
      <div id="content"><pre>现在我们要使这段文字垂直居中显示!   
        div#wrap {   
          height:400px;   
          display:table;   
        }   
        div#content {   
          vertical-align:middle;   
          display:table-cell;   
          border:1px solid #FF0099;   
          background-color:#FFCCFF;   
          width:760px;   
       }   
      </pre></div>   
    </div>   
  </body>   
</html>
这个方法应该是很理想了,但是不幸的是Internet Explorer 6 并不能正确地理解display:table和display:table-cell,因此这种方法在Internet Explorer 6及以下的版本中是无效的。嗯,这让人很郁闷!不过我们还其它的办法。

四、在Internet Explorer中的解决方案

在Internet Explorer 6及以下版本中,在高度的计算上存在着缺陷的。在Internet Explorer 6中对父元素进行定位后,如果再对子元素进行百分比计算时,计算的基础似乎是有继承性的(如果定位的数值是绝对数值没有这个问题,但是使用百分比计算的基础将不再是该元素的高度,而从父元素继承来的定位高度)。例如,我们有下面这样一个(X)HTML代码段:

imoker.cn(爱摩客)提供的代码片段:

<div id="wrap">  
  <div id="subwrap">  
    <div id="content">  
    </div>  
  </div>  
</div>
如果我们对subwrap进行了绝对定位,那么content也会继承了这个属性,虽然它不会在页面中马上显示出来,但是如果再对content进行相对定位的时候,你使用的100%分比将不再是content原有的高度。例如,我们设定了subwrap的position为40%,我们如果想使content的上边缘和wrap重合的话就必须设置top:-80%;那么,如果我们设定subwrap的top:50%的话,我们必须使用100%才能使content回到原来的位置上去,但是如果我们把content也设置50%呢?那么它就正好垂直居中了。所以我们可以使用这中方法来实现Internet Explorer 6中的垂直居中:

imoker.cn(爱摩客)提供的代码片段:

div#wrap {  
  border:1px solid #FF0099;  
  background-color:#FFCCFF;  
  width:760px;  
  height:400px;  
  position:relative;  
}  
div#subwrap {  
  position:absolute;  
  border:1px solid #000;  
  top:50%;  
}  
div#content {  
  border:1px solid #000;  
  position:relative;  
  top:-50%;  
}
当然,这段代码只能在Internet Exlporer 6等计算存在问题的浏览器中才会有作用。(不过我不解,我查阅了很多文章,不知道是因为出处相同还是什么原因,似乎很多人都不愿意去解释Internet Exlporer 6中这个Bug的原理,我也只是了解了一点皮毛,还要再研究)

imoker.cn(爱摩客)提供的代码片段:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml">  
  <head>  
    <title> 多行文字实现垂直居中 </title>  
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
    <style type="text/css">  
      body { font-size:12px;font-family:tahoma;}  
      div#wrap {  
        border:1px solid #FF0099;  
        background-color:#FFCCFF;  
        width:760px;  
        height:400px;  
        position:relative;  
      }  
      div#subwrap {  
        position:absolute;  
        top:50%;  
      }  
      div#content {  
          position:relative;  
          top:-50%;  
      }  
    </style>  
  </head>  
  <body>  
    <div id="wrap">  
      <div id="subwrap">  
        <div id="content"><pre>现在我们要使这段文字垂直居中显示!  
          div#wrap {  
            border:1px solid #FF0099;  
            background-color:#FFCCFF;  
            width:760px;  
            height:500px;  
            position:relative;  
          }  
          div#subwrap {  
            position:absolute;  
            border:1px solid #000;  
            top:50%;  
          }  
          div#content {  
            border:1px solid #000;  
            position:relative;  
            top:-50%;  
          } 
        </pre></div>  
      </div>  
    </div>  
  </body>  
</html>
五、完美的解决方案

那么我们综合上面两种方法就可以得到一个完美的解决方案,不过这要用到CSS hack的知识。对于如果使用CSS Hack来区分浏览器,你可以参考这篇“简单CSS hack:区分IE6、IE7、IE8、Firefox、Opera”:

imoker.cn(爱摩客)提供的代码片段:

div#wrap {  
  display:table;  
  border:1px solid #FF0099;  
  background-color:#FFCCFF;  
  width:760px;  
  height:400px;  
  _position:relative;  
  overflow:hidden;  
}  
div#subwrap {  
  vertical-align:middle;  
  display:table-cell;  
  _position:absolute;  
  _top:50%;  
}  
div#content {  
  _position:relative;  
  _top:-50%;  
}
至此,一个完美的居中方案就产生了。

imoker.cn(爱摩客)提供的代码片段:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml">  
  <head>  
    <title> 多行文字实现垂直居中 </title>  
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
    <style type="text/css">  
      body { font-size:12px;font-family:tahoma;}  
      div#wrap {  
        display:table;  
        border:1px solid #FF0099;  
        background-color:#FFCCFF;  
        width:760px;  
        height:400px;  
        _position:relative;  
        overflow:hidden;  
      }  
      div#subwrap {  
        vertical-align:middle;  
        display:table-cell;  
        _position:absolute;  
        _top:50%;  
      }  
      div#content {  
        _position:relative;  
        _top:-50%;  
      }  
    </style>  
  </head>  
  <body>  
    <div id="wrap">  
      <div id="subwrap">  
        <div id="content"><pre>现在我们要使这段文字垂直居中显示!  
          div#wrap {  
            border:1px solid #FF0099;  
            background-color:#FFCCFF;  
            width:760px;  
            height:500px;  
            position:relative;  
          }  
          div#subwrap {  
            position:absolute;  
            border:1px solid #000;  
            top:50%;  
          }  
          div#content {  
            border:1px solid #000;  
            position:relative;  
            top:-50%;  
          } 
        </pre></div>  
      </div>  
    </div>  
  </body>  
</html>
p.s. 垂直居中vertical-align的值是middle,而水平居中align的值是center,虽然同是居中但关键字不同。
posted @ 2010-08-06 10:32 贺挺 阅读(430) | 评论 (0)编辑 收藏

     摘要:   C++            C# ===================================== WORD           &nbs...  阅读全文
posted @ 2010-03-20 10:40 贺挺 阅读(7199) | 评论 (0)编辑 收藏

create table m_researcher_stock_rel(N_SEC_CODE  CHAR(6)
, C_RESEARCHER_CODE 
varchar(20))
drop table m_researcher_stock_rel
            
select * from m_researcher_stock_rel
insert into m_researcher_stock_rel values('000297''chenpeng');
insert into m_researcher_stock_rel values('000297''peopeo');
insert into m_researcher_stock_rel values('000297''aaa');
insert into m_researcher_stock_rel values('000297''bbb');
insert into m_researcher_stock_rel values('000297''ccc');
SELECT    n_sec_code, TRANSLATE (LTRIM (text'/'), '*/''*,') researcherList
    
FROM (SELECT ROW_NUMBER () OVER (PARTITION BY n_sec_code ORDER BY n_sec_code,
                   lvl 
DESC) rn,
                  n_sec_code, 
text
            
FROM (SELECT      n_sec_code, LEVEL lvl,
                              SYS_CONNECT_BY_PATH (c_researcher_code,
'/'text
                        
FROM (SELECT    n_sec_code, c_researcher_code as c_researcher_code,
                                        ROW_NUMBER () 
OVER (PARTITION BY n_sec_code ORDER BY n_sec_code,c_researcher_code) x
                                  
FROM m_researcher_stock_rel
                              
ORDER BY n_sec_code, c_researcher_code) a
                   CONNECT 
BY n_sec_code = PRIOR n_sec_code AND x - 1 = PRIOR x))
   
WHERE rn = 1
ORDER BY n_sec_code;

预想的结果成功出现,多行数据成功汇总到一行,特此分享与大家。对于你自己的应用中,只需要把SQL中“n_sec_code”
换为你的用来汇总的列,“c_researcher_code”替换为需合并文本的列,“m_researcher_stock_rel”替换为你的表名,就是这么简单。
posted @ 2010-03-03 17:49 贺挺 阅读(2179) | 评论 (0)编辑 收藏

Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06
Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16
Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06
Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06
Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06
Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06
Select CONVERT(varchar(100), GETDATE(), 7): 05 1606
Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM
Select CONVERT(varchar(100), GETDATE(), 10): 05-16-06
Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16
Select CONVERT(varchar(100), GETDATE(), 12): 060516
Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937
Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157
Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM
Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250
Select CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 101): 05/16/2006
Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16
Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006
Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006
Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006
Select CONVERT(varchar(100), GETDATE(), 106): 16 05 2006
Select CONVERT(varchar(100), GETDATE(), 107): 05 162006
Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
Select CONVERT(varchar(100), GETDATE(),109): 05 16 2006 10:57:49:437AM
Select CONVERT(varchar(100), GETDATE(), 110): 05-16-2006
Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
Select CONVERT(varchar(100), GETDATE(), 112): 20060516
Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513
Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49
Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700
Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827
Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM
Select CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM

posted @ 2009-11-10 11:06 贺挺 阅读(1181) | 评论 (0)编辑 收藏

<html><head>

<script language="javascript" type="text/javascript">
      
function MakeExcel() {

        
var i, j, n;

        
try {

          
var xls = new ActiveXObject("Excel.Application");

        }


        
catch(e) {

          alert( 
"要生成该表,您必须安装Excel电子表格软件,同时浏览器须使用“ActiveX 控件”,您的浏览器须允许执行控件。请点击【帮助】了解浏览器设置方法!");

            
return "";

        }


        xls.visible 
=true// 设置excel为可见

        
var xlBook = xls.Workbooks.Add;

        
var xlsheet = xlBook.Worksheets(1);

     
        xlsheet.Cells(
2,1).Value = "卡号";

        xlsheet.Cells(
2,2).Value = "密码";

        xlsheet.Cells(
2,3).Value = "计费方式";

        xlsheet.Cells(
2,4).Value = "有效天数";

        xlsheet.Cells(
2,5).Value = "金额";


        xlsheet.Range(xlsheet.Cells(
1,1),xlsheet.Cells(1,7)).mergecells=true;

        xlsheet.Range(xlsheet.Cells(
1,1),xlsheet.Cells(1,7)).value="发卡记录";
        
       
        
        xlBook.SaveAs(
"C:\\TEST.XLS");
        
        
// 用 Application 对象用 Quit 方法关闭 Excel。
        
        xlBook.Application.Quit();

        xls
=null;

        xlBook
=null;

        xlsheet
=null;

      }


    
    
</script>
</head><body><input type='button' value="生成" onclick='MakeExcel()'></body></html>


posted @ 2009-11-07 12:17 贺挺 阅读(666) | 评论 (0)编辑 收藏

     摘要:   1using System;   2using System.Collections.Generic;   3using System.Text;   4using System.Windows.Forms;   5using Syste...  阅读全文
posted @ 2009-09-19 09:46 贺挺 阅读(8474) | 评论 (8)编辑 收藏

     摘要:   1using System;   2   3using System.Text;   4   5using System.Collections;   6   7using System.Collecti...  阅读全文
posted @ 2009-08-06 17:31 贺挺 阅读(661) | 评论 (0)编辑 收藏

<script type="text/javascript">
        
        
//    function treeNodeSelected(arg) {
          //      alert(arg.source.title + ' selected');
            //}
            dojo.addOnLoad(function() {                
                
var s = dojo.widget.byId('parentId').selector;                
                dojo.event.connect(s, 'select', 'treeNodeSelected');
            }
);
        
</script>
        
<div style="float:left;">
            
<s:tree label="${certInfo.cn}.cer" id="parentId" theme="ajax"
                templateCssPath
="/struts/tree.css" showRootGrid="true"
                showGrid
="true">
                
<s:treenode theme="ajax" label="<a href='certificate/admin/queryCert.do?state=3'>吊销的证书</a>" id="child1Id" />                
                
<s:treenode  theme="ajax" label="<a href='certificate/admin/queryCert.do?state=2'>颁发的证书</a>" id="child2Id" />
                
<s:treenode theme="ajax" label="<a href='certificate/admin/queryCert.do?state=1'>挂起的申请</a>" id="child3Id" />
                
<s:treenode theme="ajax" label="<a href='certificate/admin/queryCert.do?state=0'>失败的申请</a>" id="child4Id" />
            
</s:tree>
        
</div>
posted @ 2009-07-10 10:33 贺挺 阅读(373) | 评论 (0)编辑 收藏

--创建job
begin
  sys.dbms_job.submit(job 
=> :job,
                      what 
=> 'begin  
pr_del_log;
end;
',
                      next_date 
=> to_date('03-05-2010 08:00:00''dd-mm-yyyy hh24:mi:ss'),
                      interval 
=> 'trunc(add_months(sysdate,10),''mm'')+7/3');
  
commit;
end;
/


--创建存储过程

CREATE OR REPLACE PROCEDURE PR_DEL_LOG IS
  tables_num  
number(3);
  tables_name 
varchar2(30);
BEGIN
  
select count(*)
    
into tables_num
    
from user_tables
   
where table_name = 'LOG_20090707';
  
if tables_num > 0 then
    tables_name :
= 'LOG' || '_' || to_char(sysdate, 'yyyymm');
  
else
    tables_name :
= 'LOG_20090707';
  
end if;
  
execute immediate 'CREATE table '||tables_name||' as select * from t_sys_log where log_time < add_months(sysdate, -10)';
  
delete from t_sys_log where log_time < add_months(sysdate, -10);
  
commit;
EXCEPTION
  
WHEN OTHERS THEN
    dbms_output.put_line(
'err:' || sqlerrm);
    
rollback;
END;
posted @ 2009-07-07 14:53 贺挺 阅读(861) | 评论 (0)编辑 收藏

 

  • chain   
  •   
  •     用来处理Action链   
  •   
  •     com.opensymphony.xwork2.ActionChainResult   
  •   
  • dispatcher   
  •   
  •     用来转向页面,通常处理JSP   
  •   
  •     org.apache.struts2.dispatcher.ServletDispatcherResult   
  •   
  • freemaker   
  •   
  •     处理FreeMarker模板   
  •   
  •     org.apache.struts2.views.freemarker.FreemarkerResult   
  •   
  • httpheader   
  •   
  •     控制特殊HTTP行为的结果类型   
  •   
  •     org.apache.struts2.dispatcher.HttpHeaderResult   
  •   
  • redirect   
  •   
  •     重定向到一个URL   
  •   
  •     org.apache.struts2.dispatcher.ServletRedirectResult   
  •   
  • redirectAction   
  •   
  •     重定向到一个Action   
  •   
  •     org.apache.struts2.dispatcher.ServletActionRedirectResult   
  •   
  • stream   
  •   
  •     向浏览器发送InputSream对象,通常用来处理文件下载,还可用于返回AJAX数据   
  •   
  •     org.apache.struts2.dispatcher.StreamResult   
  •   
  • velocity   
  •   
  •     处理Velocity模板   
  •   
  •     org.apache.struts2.dispatcher.VelocityResult   
  •   
  • xslt   
  •   
  •     处理XML/XLST模板   
  •   
  •     org.apache.struts2.views.xslt.XSLTResult   
  •   
  • plainText   
  •   
  •     显示原始文件内容,例如文件源代码   
  •   
  •     org.apache.struts2.dispatcher.PlainTextResult   
  •   
  • redirect-action   
  •   
  •     重定向到一个Action   
  •   
  •     org.apache.struts2.dispatcher.ServletActionRedirectResult   
  •   
  • plaintext   
  •   
  •     显示原始文件内容,例如文件源代码   
  •   
  •     org.apache.struts2.dispatcher.PlainTextResult 
  • posted @ 2009-05-18 09:11 贺挺 阅读(1105) | 评论 (0)编辑 收藏

    JAVA四种基本排序,包括冒泡法,插入法,选择法,SHELL排序法.其中选择法是冒泡法的改进,SHELL排序法是插入法的改进.所以从根本上来说可以归纳为两种不同的排序方法:即:插入法&冒泡法

    一插入法:遍历排序集合,每到一个元素时,都要将这个元素与所有它之前的元素遍历比较一遍,让符合排序顺序的元素挨个移动到当前范围内它最应该出现的位置。交换是相邻遍历移动,双重循环控制实现.这种排序法属于地头蛇类型,在我的地牌上我要把所有的东西按一定的顺序规整,过来一个,规整一个.
    处理代码如下:
    public void sort(int[] data) {
    int temp;
    for(int i=1; i〈data.length; i++){
    for(int j=i; (j〉0)&&(data[j]〉data[j-1]); j--){

    temp
    =date[j];
    data[j]
    =data[j-1];
    data[j
    -1]=temp; }

    }

    }

    二冒泡法:比较容易,它的内层循环保证遍历一次后,集合中最小(大)元素出现在它的正确位置,下一次就是次小元素。。。该方法在集合分布的各种情况下交换移动的次数基本不变,属于最慢的一种排序。实现也是双重循环控制。这种排序法属于过江龙,就是要找到极端,但是过奖龙也有大哥,二哥等,所以他们只能是大哥挑了二哥挑.
    处理代码如下:
    public static int [] maopao(int[] data) {
    int temp;
    for(int i=0; i〈data.length-1; i++){
    for(int j=i+1; j〈data.length; j++{
    if(data[i]〈data[j]〉{
    temp
    =data[i];
    data[i]
    =data[j];
    data[j]
    =temp;
    }




    return data;

    三选择法:该方法只是通过遍历集合记录最小(大)元素的位置,一次遍历完后,再进行交换位置操作,类似冒泡,但在比较过程中,不进行交换操作,只记录元素位置。一次遍历只进行一次交换操作。这个对与交换次序比较费时的元素比较适合。这种排序法比冒泡法要城府要深的多,我先记住极端数据,待遍历数据完了之后, 我再处理,不像冒泡法那样只要比自己极端一点的就要处理,选择法只处理本身范围内的最极端数据.
    public static void xuanze(int[] data) {
    int temp;
    for (int i = 0; i 〈 data.length; i++〉 {
    int lowIndex = i;
    for (int j = data.length - 1; j ) i; j--{
    if (data[j] ) data[lowIndex]) {
    lowIndex 
    = j;
    }

    }

    temp
    =data[i];
    data[i]
    =data[lowIndex];
    data[lowIndex]
    =temp;
    }

    }

    四 Shell排序:
    它是对插入排序的一种改进,是考虑将集合元素按照一定的基数划分成组去排序,让每一组在局部范围内先排成基本有序,最后在进行一次所有元素的插入排序。
    public void sort(int[] data) {
    for(int i=data.length/2; i)2; i/=2){
    for(int j=0; j〈i; j++{
    insertSort(data,j,i);
    }


    insertSort(data,
    0,1);


    private void insertSort(int[] data, int start, int inc) {
    int temp;
    for(int i=start+inc; i〈data.length; i+=inc〉{
    for(int j=i; (j)=inc)&&(data[j]〈data[j-inc]〉; j-=inc〉{
    temp
    =data[j];
    data[j]
    =data[j-inc]
    data[j
    -inc]=temp;
    }



    posted @ 2009-04-03 09:51 贺挺 阅读(328) | 评论 (0)编辑 收藏

     

    struts.action.extension
    The URL extension to use to determine if the request is meant for a Struts action
    用URL扩展名来确定是否这个请求是被用作Struts action,其实也就是设置 action的后缀,例如login.do的'do'字。
     
    struts.configuration
    The org.apache.struts2.config.Configuration implementation class
    org.apache.struts2.config.Configuration接口名
     
    struts.configuration.files
    A list of configuration files automatically loaded by Struts 
    struts自动加载的一个配置文件列表
     
    struts.configuration.xml.reload
    Whether to reload the XML configuration or not
    是否加载xml配置(true,false)
     
    struts.continuations.package
    The package containing actions that use Rife continuations
    含有actions的完整连续的package名称
     
    struts.custom.i18n.resources
    Location of additional localization properties files to load
    加载附加的国际化属性文件(不包含.properties后缀)
     
    struts.custom.properties
    Location of additional configuration properties files to load
    加载附加的配置文件的位置

    struts.devMode
    Whether Struts is in development mode or not
    是否为struts开发模式
     
    struts.dispatcher.parametersWorkaround
    Whether to use a Servlet request parameter workaround necessary for some versions of WebLogic
    (某些版本的weblogic专用)是否使用一个servlet请求参数工作区(PARAMETERSWORKAROUND)
     
    struts.enable.DynamicMethodInvocation
    Allows one to disable dynamic method invocation from the URL
    允许动态方法调用
     
    struts.freemarker.manager.classname
    The org.apache.struts2.views.freemarker.FreemarkerManager implementation class
    org.apache.struts2.views.freemarker.FreemarkerManager接口名
     
    struts.i18n.encoding
    The encoding to use for localization messages
    国际化信息内码
     
    struts.i18n.reload
    Whether the localization messages should automatically be reloaded
    是否国际化信息自动加载
     
    struts.locale
    The default locale for the Struts application
    默认的国际化地区信息
     
    struts.mapper.class
    The org.apache.struts2.dispatcher.mapper.ActionMapper implementation class
    org.apache.struts2.dispatcher.mapper.ActionMapper接口
     
    struts.multipart.maxSize
    The maximize size of a multipart request (file upload)
    multipart请求信息的最大尺寸(文件上传用)
     
    struts.multipart.parser
    The org.apache.struts2.dispatcher.multipart.MultiPartRequest parser implementation for a multipart request (file upload)
    专为multipart请求信息使用的org.apache.struts2.dispatcher.multipart.MultiPartRequest解析器接口(文件上传用)

    struts.multipart.saveDir
    The directory to use for storing uploaded files
    设置存储上传文件的目录夹
     
    struts.objectFactory
    The com.opensymphony.xwork2.ObjectFactory implementation class
    com.opensymphony.xwork2.ObjectFactory接口(spring)
     
    struts.objectFactory.spring.autoWire
    Whether Spring should autoWire or not
    是否自动绑定Spring
     
    struts.objectFactory.spring.useClassCache
    Whether Spring should use its class cache or not
    是否spring应该使用自身的cache
     
    struts.objectTypeDeterminer
    The com.opensymphony.xwork2.util.ObjectTypeDeterminer implementation class
    com.opensymphony.xwork2.util.ObjectTypeDeterminer接口
     
    struts.serve.static.browserCache
    If static content served by the Struts filter should set browser caching header properties or not
    是否struts过滤器中提供的静态内容应该被浏览器缓存在头部属性中
     
    struts.serve.static
    Whether the Struts filter should serve static content or not 
    是否struts过滤器应该提供静态内容
     
    struts.tag.altSyntax
    Whether to use the alterative syntax for the tags or not
    是否可以用替代的语法替代tags
     
    struts.ui.templateDir
    The directory containing UI templates
    UI templates的目录夹
     
    struts.ui.theme
    The default UI template theme
    默认的UI template主题
     
    struts.url.http.port
    The HTTP port used by Struts URLs
    设置http端口
     
    struts.url.https.port
    The HTTPS port used by Struts URLs
    设置https端口
     
    struts.url.includeParams
    The default includeParams method to generate Struts URLs
    在url中产生 默认的includeParams

    struts.velocity.configfile
    The Velocity configuration file path
    velocity配置文件路径
     
    struts.velocity.contexts
    List of Velocity context names
    velocity的context列表

    struts.velocity.manager.classname
    org.apache.struts2.views.velocity.VelocityManager implementation class
    org.apache.struts2.views.velocity.VelocityManager接口名
     
    struts.velocity.toolboxlocation
    The location of the Velocity toolbox
    velocity工具盒的位置

    struts.xslt.nocache
    Whether or not XSLT templates should not be cached
    是否XSLT模版应该被缓存
     
    struts.serve.static.browserCache
    该属性设置浏览器是否缓存静态内容。当应用处于开发阶段时,我们希望每次请求都获得服务器的最新响应,则可设置该属性为false。
     
    struts.enable.DynamicMethodInvocation
    该属性设置Struts 2是否支持动态方法调用,该属性的默认值是true。如果需要关闭动态方法调用,则可设置该属性为false。
     
    struts.enable.SlashesInActionNames
    该属性设置Struts 2是否允许在Action名中使用斜线,该属性的默认值是false。如果开发者希望允许在Action名中使用斜线,则可设置该属性为true。
     
    struts.tag.altSyntax
    该属性指定是否允许在Struts 2标签中使用表达式语法,因为通常都需要在标签中使用表达式语法,故此属性应该设置为true,该属性的默认值是true。
     
    struts.devMode
    该属性设置Struts 2应用是否使用开发模式。如果设置该属性为true,则可以在应用出错时显示更多、更友好的出错提示。该属性只接受true和flase两个值,该属性的默认值是false。通常,应用在开发阶段,将该属性设置为true,当进入产品发布阶段后,则该属性设置为false。
     
    struts.i18n.reload
    该属性设置是否每次HTTP请求到达时,系统都重新加载资源文件。该属性默认值是false。在开发阶段将该属性设置为true会更有利于开发,但在产品发布阶段应将该属性设置为false。
    提示开发阶段将该属性设置了true,将可以在每次请求时都重新加载国际化资源文件,从而可以让开发者看到实时开发效果;产品发布阶段应该将该属性设置为false,是为了提供响应性能,每次请求都需要重新加载资源文件会大大降低应用的性能。
     
    struts.ui.theme
    该属性指定视图标签默认的视图主题,该属性的默认值是xhtml。
     
    struts.ui.templateDir
    该属性指定视图主题所需要模板文件的位置,该属性的默认值是template,即默认加载template路径下的模板文件。
     
    struts.ui.templateSuffix
    该属性指定模板文件的后缀,该属性的默认属性值是ftl。该属性还允许使用ftl、vm或jsp,分别对应FreeMarker、Velocity和JSP模板。
     
    struts.configuration.xml.reload
    该属性设置当struts.xml文件改变后,系统是否自动重新加载该文件。该属性的默认值是false。
     
    struts.velocity.configfile
    该属性指定Velocity框架所需的velocity.properties文件的位置。该属性的默认值为velocity.properties。
     
    struts.velocity.contexts
    该属性指定Velocity框架的Context位置,如果该框架有多个Context,则多个Context之间以英文逗号(,)隔开。
     
    struts.velocity.toolboxlocation
    该属性指定Velocity框架的toolbox的位置。
     
    struts.url.http.port
    该属性指定Web应用所在的监听端口。该属性通常没有太大的用户,只是当Struts 2需要生成URL时(例如Url标签),该属性才提供Web应用的默认端口。
     
    struts.url.https.port
    该属性类似于struts.url.http.port属性的作用,区别是该属性指定的是Web应用的加密服务端口。
     
    struts.url.includeParams
    该属性指定Struts 2生成URL时是否包含请求参数。该属性接受none、get和all三个属性值,分别对应于不包含、仅包含GET类型请求参数和包含全部请求参数。

    struts.custom.i18n.resources
    该属性指定Struts 2应用所需要的国际化资源文件,如果有多份国际化资源文件,则多个资源文件的文件名以英文逗号(,)隔开。

    struts.dispatcher.parametersWorkaround
    对于某些Java EE服务器,不支持HttpServlet Request调用getParameterMap()方法,此时可以设置该属性值为true来解决该问题。该属性的默认值是false。对于 WebLogic、Orion和OC4J服务器,通常应该设置该属性为true。
     
    struts.freemarker.manager.classname
    该属性指定Struts 2使用的FreeMarker管理器。该属性的默认值是
    org.apache.struts2.views.freemarker.FreemarkerManager,这是Struts 2内建的FreeMarker管理器。
    struts.freemarker.wrapper.altMap该属性只支持true和false两个属性值,默认值是true。通常无需修改该属性值。
     
    struts.xslt.nocache
    该属性指定XSLT Result是否使用样式表缓存。当应用处于开发阶段时,该属性通常被设置为true;当应用处于产品使用阶段时,该属性通常被设置为false。
     
    struts.configuration.files
    该属性指定Struts 2框架默认加载的配置文件,如果需要指定默认加载多个配置文件,则多个配置文件的文件名之间以英文逗号(,)隔开。该属性的默认值为struts- default.xml,struts-plugin.xml,struts.xml,看到该属性值,读者应该明白为什么Struts 2框架默认加载struts.xml文件了。
    posted @ 2009-04-02 14:34 贺挺 阅读(176) | 评论 (0)编辑 收藏

    Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler file://"+resultStr);
    posted @ 2009-04-01 15:02 贺挺 阅读(287) | 评论 (2)编辑 收藏

    create   sequence   name     
    increment   
    by   x   //x为增长间隔     
    start   
    with     x   //x为初始值     
    maxvalue         x   
    //x为最大值       
    minvalue         x   
    //x为最小值     
    cycle                
    //循环使用,到达最大值或者最小值时,从新建立对象     
    cache            x   
    //制定缓存序列值的个数     
                          
    ------------------------一个例子-----------------------
    create   sequence   for_test  --序列名     
    increment   by   1     --每次增加1
    start   with   1     --从1开始
    nomaxvalue     --没有最大值
    nocache        --没有缓存序列

    ----------------------------创建测试表------------------
    create table Test
    (
    TestID 
    int primary key,
    TestName 
    varchar2(20not null,
    Tdescription 
    varchar2(200null
    )

    -----------------------------使用序列-------------------
    insert into Test
    values(for_test.nextval,'序列测试','这是一个序列使用的例子')

    --------------------序列使用结果查询-----------------
    select * from test
    posted @ 2009-03-31 13:57 贺挺 阅读(146) | 评论 (0)编辑 收藏

    drop procedure if exists pro_rep_shadow_rs;   
    delimiter 
    |   
    ----------------------------------   
    --
     rep_shadow_rs   
    --
     用来处理信息的增加,更新和删除   
    --
     每次只更新上次以来没有做过的数据   
    --
     根据不同的标志位   
    --
     需要一个输出的参数,   
    --
     如果返回为0,则调用失败,事务回滚   
    --
     如果返回为1,调用成功,事务提交   
    --
       
    --
     测试方法   
    --
     call pro_rep_shadow_rs(@rtn);   
    --
     select @rtn;   
    --
    --------------------------------   
    create procedure pro_rep_shadow_rs(out rtn int)   
    begin   
        
    -- 声明变量,所有的声明必须在非声明的语句前面   
        declare iLast_rep_sync_id int default -1;   
        
    declare iMax_rep_sync_id int default -1;   
        
    -- 如果出现异常,或自动处理并rollback,但不再通知调用方了   
        -- 如果希望应用获得异常,需要将下面这一句,以及启动事务和提交事务的语句全部去掉   
        declare exit handler for sqlexception rollback;   
        
    -- 查找上一次的   
        select eid into iLast_rep_sync_id from rep_de_proc_log where tbl='rep_shadow_rs';   
        
    -- 如果不存在,则增加一行   
        if iLast_rep_sync_id=-1 then   
          
    insert into rep_de_proc_log(rid,eid,tbl) values(0,0,'rep_shadow_rs');   
          
    set iLast_rep_sync_id = 0;   
        
    end if;   
           
        
    -- 下一个数字   
        set iLast_rep_sync_id=iLast_rep_sync_id+1;   
        
    -- 设置默认的返回值为0:失败   
        set rtn=0;   
           
        
    -- 启动事务   
        start transaction;   
        
    -- 查找最大编号   
        select max(rep_sync_id) into iMax_rep_sync_id from rep_shadow_rs;   
        
    -- 有新数据   
        if iMax_rep_sync_id>=iLast_rep_sync_id then   
            
    -- 调用   
            call pro_rep_shadow_rs_do(iLast_rep_sync_id,iMax_rep_sync_id);   
            
    -- 更新日志   
            update rep_de_proc_log set rid=iLast_rep_sync_id,eid=iMax_rep_sync_id where tbl='rep_shadow_rs';   
        
    end if;   
           
        
    -- 运行没有异常,提交事务   
        commit;   
        
    -- 设置返回值为1  
        set rtn=1;   
    end;   
    |   
    delimiter ;   
    drop procedure if exists pro_rep_shadow_rs_do;   
    delimiter 
    |   
    ---------------------------------   
    --
     处理指定编号范围内的数据   
    --
     需要输入2个参数   
    --
     last_rep_sync_id 是编号的最小值   
    --
     max_rep_sync_id 是编号的最大值   
    --
     无返回值   
    --
    -------------------------------   
    create procedure pro_rep_shadow_rs_do(last_rep_sync_id int, max_rep_sync_id int)   
    begin   
        
    declare iRep_operationtype varchar(1);   
        
    declare iRep_status varchar(1);   
        
    declare iRep_Sync_id int;   
        
    declare iId int;   
        
    -- 这个用于处理游标到达最后一行的情况   
        declare stop int default 0;   
        
    -- 声明游标   
        declare cur cursor for select id,Rep_operationtype,iRep_status,rep_sync_id from rep_shadow_rs where rep_sync_id between last_rep_sync_id and max_rep_sync_id;   
        
    -- 声明游标的异常处理,设置一个终止标记   
        declare CONTINUE HANDLER FOR SQLSTATE '02000' SET stop=1;   
           
        
    -- 打开游标   
        open cur;   
           
        
    -- 读取一行数据到变量   
        fetch cur into iId,iRep_operationtype,iRep_status,iRep_Sync_id;   
        
    -- 这个就是判断是否游标已经到达了最后   
        while stop <> 1 do  
            
    -- 各种判断   
            if iRep_operationtype='I' then   
                
    insert into rs0811 (id,fnbm) select id,fnbm from rep_shadow_rs where rep_sync_id=iRep_sync_id;   
            elseif iRep_operationtype
    ='U' then   
            
    begin   
                
    if iRep_status='A' then   
                    
    insert into rs0811 (id,fnbm) select id,fnbm from rep_shadow_rs where rep_sync_id=iRep_sync_id;   
                elseif iRep_status
    ='B' then   
                    
    delete from rs0811 where id=iId;   
                
    end if;   
            
    end;   
            elseif iRep_operationtype
    ='D' then   
                
    delete from rs0811 where id=iId;   
            
    end if;    
               
            
    -- 读取下一行的数据    
            fetch cur into iId,iRep_operationtype,iRep_status,iRep_Sync_id;   
        
    end while;  -- 循环结束   
        close cur; -- 关闭游标   
     end;   
    posted @ 2009-03-25 09:55 贺挺 阅读(529) | 评论 (0)编辑 收藏

    public class Pools extends HttpServlet {
     
     
    private static final long serialVersionUID = 1L;
     
     
    public static BasicDataSource bds = new BasicDataSource();

     
    public static ConnectionFactory fac = null;

     
    public synchronized static Connection getDSConn() {
      Pools aa
    =new Pools();
      
    try {
       aa.init();
      }
     catch (ServletException e1) {
       e1.printStackTrace();
      }

      Connection conn 
    = null;
      
    try {
       conn 
    = fac.createConnection();
      }
     catch (Exception e) {
       System.out.println(
    "fac.createConnection()"+e.toString());
      }

      
    return conn;
     }


     
    public void init(ServletConfig conf) throws ServletException {
     
    //super.init(conf);
      try {
       
       bds.setDriverClassName(
    "com.microsoft.jdbc.sqlserver.SQLServerDriver");
       bds.setUrl(
    "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=dbname");

       bds.setUsername(
    "sa");  

       bds.setPassword(
    "1234"); 

       bds.setInitialSize(
    100); 
       bds.setMaxActive(
    2);     
       bds.setMaxIdle(
    10); 

       bds.setMaxWait(
    1000 * 60); 

       fac 
    = new DataSourceConnectionFactory(bds);
       System.out.println(
    ">>>>init success>>>>");
      }
     catch (Exception e) {
       e.printStackTrace();
      }

     }


     
    public void destory() throws SQLException {
      bds.close();
      bds
    =null;
      fac
    =null;
     }


    }



    在web.xml中添加Pools配置信息

     

    <servlet>
      
    <servlet-name>Pools</servlet-name>
      
    <servlet-class>dbconn.Pools</servlet-class>
      
    <load-on-startup>1</load-on-startup>
     
    </servlet>

    可以将配置连接池的一些参数写在web.xml中,实现可配置的连接池

    posted @ 2009-03-04 11:09 贺挺 阅读(178) | 评论 (0)编辑 收藏

         摘要:     FileAction package com.action; import org.apache.struts.action.*; import javax.servlet.http.*; import com.actionForm.FileActionForm; import org.apache.s...  阅读全文
    posted @ 2009-03-04 10:36 贺挺 阅读(21124) | 评论 (23)编辑 收藏

    优化大师专业版安装好后,点注册,注册姓名:随意(至少应为4位字母或两个汉字)
    专业版万能注册码如下:
    4C2495523B06BD59CE661733C254DC70
    B2A611BEC6B140B0E9E99F23B99A6691
    CA8241D852508A5F926D470BAE8E59B5
    posted @ 2009-02-01 09:32 贺挺 阅读(182) | 评论 (0)编辑 收藏

    安装Subversion
    首先初始化Repository,输入命令:
    svnadmin create D:\TestRepository\
         
    然后,把现有的项目的目录结构以及文件导入到Repository中:
    svn import D:\Projects\Project1 file:///D:/TestRepository/Project1 -m “初始化“

    启动服务
    svnserve -d -r D:\TestRepository\
    就可以下载了。

    在conf的passwd的[users]中加入一行
    xf = 123
    然后将svnserve.conf中的password-db = passwd前的注释去掉(注意空格也要去掉
    最后重启svn,就可以用用户名和密码修改,上传源码了。
    conf/passwd配置用户
    生成windows服务:
    sc.exe create SVNService binpath= "D:\Subversion\bin\svnserve.exe --service -r E:\svndemo\repository" depend= tcpip

    参考连接 http://hi.baidu.com/zgz0809/blog/item/788aee597c1611292834f084.html
    posted @ 2009-01-13 15:20 贺挺 阅读(114) | 评论 (0)编辑 收藏

         摘要: void f();{     Cleaner cleaner=new Cleaner();;     try     {       Connection conn&nbs...  阅读全文
    posted @ 2009-01-10 10:01 贺挺 阅读(173) | 评论 (0)编辑 收藏