web学习总结资料

来源:互联网 发布:蓝本门禁忘记编程密码 编辑:程序博客网 时间:2024/05/13 05:06
学习总结资料
2008-07-24 11:34:37
 标签:学习 总结 资料    [推送到技术圈]

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://liuhuangle.blog.51cto.com/433962/89301
******************************学习总结资料******************************
********************JS代码收藏大全***********
1. oncontextmenu="window.event.returnvalue=false" 将彻底屏蔽鼠标右键
<table border oncontextmenu=return(false)><td>no</table> 可用于Table
2. <body onselectstart="return false"> 取消选取、防止复制
3. onpaste="return false" 不准粘贴
4. oncopy="return false;" oncut="return false;" 防止复制
5. <link rel="Shortcut Icon" href="favicon.ico"> IE地址栏前换成自己的图标
6. <link rel="Bookmark" href="favicon.ico"> 可以在收藏夹中显示出你的图标
7. <input style="ime-mode:-Disabled"> 关闭输入法
8. 永远都会带着框架
<script language="javascript"><!--
if (window == top)top.location.href = "frames.htm"; //frames.htm为框架网页
// --></script>
9. 防止被人frame
<SCRIPT LANGUAGE=javascript><!--
if (top.location != self.location)top.location=self.location;
// --></SCRIPT>
10. 网页将不能被另存为
<noscript><iframe src=*.html></iframe></noscript>
11. <input type=button value=查看网页源代码
onclick="window.location = `view-source:`+ http://www.51js.com/`";>
12.删除时确认
<a href=`javascript:if(confirm("确实要删除吗?"location="boos.asp?&areyou=删除&page=1"`>删除</a>
13. 取得控件的绝对位置
//javascript
<script language="javascript">
function getIE(E){
var t=e.offsetTop;
var l=e.offsetLeft;
while(e=e.offsetParent){
t+=e.offsetTop;
l+=e.offsetLeft;
}
alert("top="+t+"/nleft="+l);
}
</script>
//VBScript
<script language="VBScript"><!--
function getIE()
dim t,l,a,b
set a=document.all.img1
t=document.all.img1.offsetTop
l=document.all.img1.offsetLeft
while a.tagName<>"BODY"
set a = a.offsetParent
t=t+a.offsetTop
l=l+a.offsetLeft
wend
msgbox "top="&t&chr(13)&"left="&l,64,"得到控件的位置"
end function
--></script>
14. 光标是停在文本框文字的最后
<script language="javascript">
function cc()
{
var e = event.srcElement;
var r =e.createTextRange();
r.moveStart(`character`,e.value.length);
r.collapse(true);
r.select();
}
</script>
<input type=text name=text1 value="123" onfocus="cc()">
15. 判断上一页的来源
javascript:
document.referrer
16. 最小化、最大化、关闭窗口
<object id=hh1 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" value="Minimize"></object>
<object id=hh2 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" value="Maximize"></object>
<OBJECT id=hh3 classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<PARAM NAME="Command" value="Close"></OBJECT>
<input type=button value=最小化 onclick=hh1.Click()>
<input type=button value=最大化 onclick=hh2.Click()>
<input type=button value=关闭 onclick=hh3.Click()>
本例适用于IE
17.屏蔽功能键Shift,Alt,Ctrl
<script>
function look(){
if(event.shiftKey)
alert("禁止按Shift键!"; //可以换成ALT CTRL
}
document.onkeydown=look;
</script>
18. 网页不会被缓存
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">
或者<META HTTP-EQUIV="expires" CONTENT="0">
19.怎样让表单没有凹凸感?
<input type=text style="border:1 solid #000000">

<input type=text style="border-left:none; border-right:none; border-top:none; border-bottom:
1 solid #000000"></textarea>
20.<div><span>&<layer>的区别?
<div>(division)用来定义大段的页面元素,会产生转行
<span>用来定义同一行内的元素,跟<div>的唯一区别是不产生转行
<layer>是ns的标记,ie不支持,相当于<div>
21.让弹出窗口总是在最上面:
<body onblur="this.focus();">
22.不要滚动条?
让竖条没有:
<body style=`overflow:-Scroll;overflow-y:hidden`>
</body>
让横条没有:
<body style=`overflow:-Scroll;overflow-x:hidden`>
</body>
两个都去掉?更简单了
<body scroll="no">
</body>
23.怎样去掉图片链接点击后,图片周围的虚线?
<a href="#" onFocus="this.blur()"><img src="logo.jpg" border=0></a>
24.电子邮件处理提交表单
<form name="form1" method="post" action="mailt****@***.com" enctype="text/plain">
<input type=submit>
</form>
25.在打开的子窗口刷新父窗口的代码里如何写?
window.opener.location.reload()
25.在打开的子窗口刷新父窗口的代码里如何写?
window.opener.location.reload()
26.如何设定打开页面的大小
<body onload="top.resizeTo(300,200);">
打开页面的位置<body onload="top.moveBy(300,200);">
27.在页面中如何加入不是满铺的背景图片,拉动页面时背景图不动
<style>
body
{background-image:url(logo.gif); background-repeat:no-repeat;
background-position:center;background-attachment: fixed}
</style>
28. 检查一段字符串是否全由数字组成
<script language="javascript"><!--
function checkNum(str){return str.match(//D/)==null}
alert(checkNum("1232142141"
alert(checkNum("123214214a1"
// --></script>
29. 获得一个窗口的大小
document.body.clientWidth; document.body.clientHeight
30. 怎么判断是否是字符
if (/[^/x00-/xff]/g.test(s)) alert("含有汉字";
else alert("全是字符";
31.TEXTAREA自适应文字行数的多少
<textarea rows=1 name=s1 cols=27 onpropertychange="this.style.posHeight=this.scrollHeight">
</textarea>
32. 日期减去天数等于第二个日期
<script language=javascript>
function cc(dd,dadd)
{
//可以加上错误处理
var a = new Date(dd)
a = a.valueOf()
a = a - dadd * 24 * 60 * 60 * 1000
a = new Date(A)
alert(a.getFullYear() + "年" + (a.getMonth() + 1) + "月" + a.getDate() + "日"
}
cc("12/23/2002",2)
</script>
33. 选择了哪一个Radio
<HTML><script language="vbscript">
function checkme()
for each ob in radio1
if ob.checked then window.alert ob.value
next
end function
</script><BODY>
<INPUT name="radio1" type="radio" value="style" checked>style
<INPUT name="radio1" type="radio" value="barcode">Barcode
<INPUT type="button" value="check" onclick="checkme()">
</BODY></HTML>
34.脚本永不出错
<SCRIPT LANGUAGE="javascript">
<!-- Hide
function killErrors() {
return true;
}
window.onerror = killErrors;
// -->
</SCRIPT>
35.ENTER键可以让光标移到下一个输入框
<input onkeydown="if(event.keyCode==13)event.keyCode=9">
36. 检测某个网站的链接速度:
把如下代码加入<body>区域中:
<script language=javascript>
tim=1
setInterval("tim++",100)
b=1
var autourl=new Array()
autourl[1]="http://www.njcatv.net/";
autourl[2]="javacool.3322.net"
autourl[3]="http://www.sina.com.cn/";
autourl[4]="http://www.nuaa.edu.cn/";
autourl[5]="http://www.cctv.com/";
function butt(){
document.write("<form name=autof>"
for(var i=1;i<autourl.length;i++)
document.write("<input type=text name=txt"+i+" size=10 value=测试中……> =》<input type=text
name=url"+i+" size=40> =》<input type=button value=GO
onclick=window.open(this.form.url"+i+".value)><br>"
document.write("<input type=submit value=刷新></form>"
}
butt()
function auto(url){
document.forms[0]["url"+b].value=url
if(tim>200)
{document.forms[0]["txt"+b].value="链接超时"}
else
{document.forms[0]["txt"+b].value="时间"+tim/10+"秒"}
b++
}
function run(){for(var i=1;i<autourl.length;i++)document.write("<img
src=http://"+autourl+"/"+Math.random()+" width=1 height=1
onerror=auto(http://";+autourl+"`)>"}
run()</script>
37. 各种样式的光标
auto :标准光标
default :标准箭头
hand :手形光标
wait :等待光标
text :I形光标
vertical-text :水平I形光标
no-drop :不可拖动光标
not-allowed :无效光标
help :?帮助光标
all-scroll :三角方向标
move :移动标
crosshair :十字标
e-resize
n-resize
nw-resize
w-resize
s-resize
se-resize
sw-resize
38.页面进入和退出的特效
进入页面<meta http-equiv="Page-Enter" content="revealTrans(duration=x, transition=y)">
推出页面<meta http-equiv="Page-Exit" content="revealTrans(duration=x, transition=y)">
这个是页面被载入和调出时的一些特效。Duration表示特效的持续时间,以秒为单位。Transition表示使
用哪种特效,取值为1-23:
  0 矩形缩小
  1 矩形扩大
  2 圆形缩小
  3 圆形扩大
  4 下到上刷新
  5 上到下刷新
  6 左到右刷新
  7 右到左刷新
  8 竖百叶窗
  9 横百叶窗
  10 错位横百叶窗
  11 错位竖百叶窗
  12 点扩散
  13 左右到中间刷新
  14 中间到左右刷新
  15 中间到上下
  16 上下到中间
  17 右下到左上
  18 右上到左下
  19 左上到右下
  20 左下到右上
  21 横条
  22 竖条
  23 以上22种随机选择一种
39.在规定时间内跳转
<META http-equiv=V="REFRESH" content="5;URL=http://www.51js.com">
40.网页是否被检索
<meta name="ROBOTS" content="属性值">
  其中属性值有以下一些:
  属性值为"all": 文件将被检索,且页上链接可被查询;
  属性值为"none": 文件不被检索,而且不查询页上的链接;
  属性值为"index": 文件将被检索;
  属性值为"follow": 查询页上的链接;
  属性值为"noindex": 文件不检索,但可被查询链接;
  属性值为"nofollow": 文件不被检索,但可查询页上的链接。
41.变换网页的鼠标光标
<BODY style="CURSOR: url(http://203.73.125.205/~liangmi2/farmfrog01.cur`)">
42.怎样实现在任务栏显示小图标的效果? (要使用绝对地址)
有些站点,访问时会在地址栏地址前显出小图标,添加到收藏夹后也在收藏栏中显示图标,
这样很好的与其它站点有了区别。
要达到这个效果,先需做出这个图标文件,图像为16*16像素,不要超过16色。文件格式为ico,然后上传至你的网站。
然后,在需要的页面中,加上以下html语句到文件的<head>和</head>之间(假设以上ico文件的地址http://happyisland.126.com/icon.ico)。
<link REL="SHORTCUT ICON"href="http:///happyisland.126.com/icon.ico";>
如果访问者的浏览器是IE5.0,就不需加任何代码,只要将图标文件上传到网站的根目录下即可。
1,META标签里的代码是什么意思?
<META>是放于<HEAD>与</HEAD>之间的标记.以下是我总结它在网页中最常见的几种。
<meta name="Keywords" content="图片, 新闻, 音乐, 软件">
该网页的关键字,作用于搜索引擎的登录,事实上它在现在的网站中并没什么用。
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
设定这是 HTML 文件及其编码语系,简体中文网页使用charset=gb2312,繁体中文使用charset=big5,或者不设编码也可,纯英文网页建议使用 iso-8859-1。
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
这只表示该网页由什么编辑器写的。
<meta http-equiv="refresh" content="10; url=http://www.hkiwc.com">
这行较为实用,能于预定秒数内自动转到指定网址。原代码中 10 表示 10秒。
2,怎么改变滚动条的颜色,只有ie5.5版本以上才能支持。
这是使用CSS语言,在次说明一下,它和我的浏览器版本有一定的关系。
scrollbar-arrow-color:上下按钮上三角箭头的颜色。
scrollbar-base-color:滚动条的基本颜色。
scrollbar-dark-shadow-color:立体滚动条强阴影的颜色
scrollbar-face-color:立体滚动条凸出部分的颜色
scrollbar-highlight-color:滚动条空白部分的颜色
scrollbar-shadow-color立体滚动条阴影的颜色。
scrollbar-track-color:#99CC33;
scrollbar-3dlight-color:#A8CBF1;
代码如下:
<style>
<!--
BODY {
scrollbar-face-color:#99CC33;//(立体滚动条凸出部分的颜色)
scrollbar-highlight-color:#A8CBF1;//(滚动条空白部分的颜色)
scrollbar-shadow-color:#A8CBF1;//(立体滚动条阴影的颜色)
scrollbar-arrow-color:#FF9966;//(上下按钮上三角箭头的颜色)
scrollbar-base-color:#A8CBF1; //(滚动条的基本颜色)
scrollbar-darkshadow-color:#A8CBF1; //(立体滚动条强阴影的颜色)
scrollbar-track-color:#99CC33;
scrollbar-3dlight-color:#A8CBF1;
}
-->
</style>
在这我补充几点:
1.让浏览器窗口永远都不出现滚动条。
<body style="overflow-x:hidden;overflow-y:hidden">或<body style="overflow:hidden"> 或<body scroll=no>
2,没有水平滚动条
<body style="overflow-x:hidden">
3,没有垂直滚动条
<body style="overflow-y:hidden">
3,如何给图片抖动怎做的.
<SCRIPT language=javascript1.2>
<!--
var rector=2
var stopit=0
var a=1
var count=0
function init(which){
stopit=0
shake=which
shake.style.left=0
shake.style.top=0
}
function rattleimage(){
if ((!document.all&&!document.getElementById)||stopit==1||count==100)
return
count++
if (a==1){
shake.style.top=parseInt(shake.style.top)+rector
}
else if (a==2){
shake.style.left=parseInt(shake.style.left)+rector
}
else if (a==3){
shake.style.top=parseInt(shake.style.top)-rector
}
else{
shake.style.left=parseInt(shake.style.left)-rector
}
if (a<4)
a++
else
a=1
setTimeout("rattleimage()",50)
}
function stoprattle(which){
stopit=1
count=0
which.style.left=0
which.style.top=0
}
//-->
</SCRIPT>
<style>.shakeimage {POSITION: relative}
</style>
<img src="图片的路径" class=shakeimage>
4,在DW如何给水平线加颜色。
在DW中没有此项设置,你只能在HTML中加入代码:<hr color=red noshade>按F12的预览在能看到。由于在NC中不支持<hr>的COLOR属性,所以在DW中没有此项设置。
   
5,如何在网页中实现flash的全屏播放?
只要在调用swf文件的HTML中将WIDTH和HEIGHT的参数设为100%即可,当然也可以在Flash导出HTML文件的设置中进行设置,方法是:打开File菜单;选Publish Settings弹出导出设置对话框;在HTML标签下的Dimensions选项,下拉后选中Percent(百分比),并在WIDTH 和HEIGHT框中填100.就行了。
6,为什么我在DW中插入的Flash动画缺看不找!
如果你没有正确地安装Dreamweaver和Flash,那么在你预览的时候,Dreamweaver会提示你缺少播放的插件,请你按装InstallAXFlash.exe 并从新启动计算机。现在IE6已经捆绑这个程序。
7,在Flash中,如果屏蔽鼠标右键?FS命令都是什么意思?
fscommand ("fullscreen", "true/false";(全屏设置,TRUE开,FALSE关)
fscommand ("showmenu", "true/false";(右键菜单设置,TRUE显示,FALSE不显示)
fscommand ("allowscale", "true/false";(缩放设置,TRUE自由缩放,FALSE调整画面不影响影片本身的尺寸)
fscommand ("trapallkeys", "true/false";(快捷键设置,TRUE快捷键开,FALSE快捷键关)
fscommand ("exec";(EXE程序调用)
fscommand ("quit";(退出关闭窗口)
8,Flash中什么是隐形按钮。
利用button中的hit帧来制作只有感应区域而完全透明的按钮。
9,如何给Flash动画做链接。
Dreamweaver是不能给Flash制作链接的,只能在Flash中用geturl()加链接,然后再插入Dreamweaver中。
10,DW中的层的技巧。
层是可以嵌套的,我个人给大家一个技巧,在层面板中按住CTRL再拖放层到你想去成为其子层的地方就行了,我认为这是最简单直观的方法了。
11,如何改变鼠标的形状?
在Dreamweaver4中CSS样式面板:
按CTR+SHIFT+E--出现样式表对话框,点击NEW,出现编辑对话框,在左边最后一项extensions-cursor 选择你要改的指针形式就可以了,然后把你要想改变的地方运用样式表,如果整页都有在<body bgcolor="#003063" text="#ffffff" id=all>中加入就行了。
<span style="cursor:X`>样例</span>
这里选择(文本)作为对象,还可以自己改为其他的,如link等。
x可以等于=hand(手形)、crosshair(十字)、text(文本光标)、wait(顾名思义啦)、default(默认效果)、help(问号)、e-size(向右箭头)、ne-resize(向右上的箭头)、nw-resize(向左上的箭头)、w-resize(向左的箭头)、sw-resize(左下箭头)、s-resize(向下箭头)、se-resize(向右下箭头)、auto(系统自动给出效果)。
12,用CSS做邮票,看看吧!
<input type=button value=我象不象邮票? style="height:80px;border:2px dashed #cccccc">
13,经常上网的朋友可能会到过这样一些网站,一进入首页立刻会弹出一个窗口,怎么做呢!
这javascript代码即可实现,摘录蓝色论坛。
【1、最基本的弹出窗口代码】
其实代码非常简单:
<SCRIPT LANGUAGE="javascript">
<!--
window.open (`page.html`)
-->
</SCRIPT>
因为着是一段javascripts代码,所以它们应该放在<SCRIPT LANGUAGE="javascript">标签和</script>之间。<!-- 和 -->是对一些版本低的浏览器起作用,在这些老浏览器中不会将标签中的代码作为文本显示出来。要养成这个好习惯啊。
window.open (`page.html`) 用于控制弹出新的窗口page.html,如果page.html不与主窗口在同一路径下,前面应写明路径,绝对路径(http://)和相对路径(../)均可。用单引号和双引号都可以,只是不要混用。
这一段代码可以加入HTML的任意位置,<head>和</head>之间可以,<body bgcolor="#003063" text="#ffffff" id=all>间</body>也可以,越前越早执行,尤其是页面代码长,又想使页面早点弹出就尽量往前放。
【2、经过设置后的弹出窗口】
下面再说一说弹出窗口的设置。只要再往上面的代码中加一点东西就可以了。
我们来定制这个弹出的窗口的外观,尺寸大小,弹出的位置以适应该页面的具体情况。
<SCRIPT LANGUAGE="javascript">
<!--
window.open (`page.html`, `newwindow`, `height=100, width=400, top=0,left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no`)
//写成一行
-->
</SCRIPT>
参数解释:
<SCRIPT LANGUAGE="javascript"> js脚本开始;
window.open 弹出新窗口的命令;
`page.html` 弹出窗口的文件名;
`newwindow` 弹出窗口的名字(不是文件名),非必须,可用空``代替;
height=100 窗口高度;
width=400 窗口宽度;
top=0 窗口距离屏幕上方的象素值;
left=0 窗口距离屏幕左侧的象素值;
toolbar=no 是否显示工具栏,yes为显示;
menubar,scrollbars 表示菜单栏和滚动栏。
resizable=no 是否允许改变窗口大小,yes为允许;
location=no 是否显示地址栏,yes为允许;
status=no 是否显示状态栏内的信息(通常是文件已经打开),yes为允许;
</SCRIPT> js脚本结束
【3、用函数控制弹出窗口】
下面是一个完整的代码。
<html>
<head>
<script LANGUAGE="javascript">
<!--
function openwin() { window.open ("page.html", "newwindow", "height=100, width=400, toolbar=
no, menubar=no, scrollbars=no, resizable=no, location=no, status=no"
//写成一行
}
//-->
</script>
</head>
<body
…任意的页面内容…
</body>
</html>
这里定义了一个函数openwin(),函数内容就是打开一个窗口。在调用它之前没有任何用途。
怎么调用呢?
方法一:<body 浏览器读页面时弹出窗口;
方法二:<body onunload="openwin()"> 浏览器离开页面时弹出窗口;
方法三:用一个连接调用:
<a href="#"
注意:使用的“#”是虚连接。
方法四:用一个按钮调用:
<input type="button" value="打开窗口">

14,没有用表格写的,让大家随便看看,没什么。
<html>
<head>
<title>江南荷花扇面</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
<!--
.font1 { font-size: 12px; color: #999999; text-decoration: none}
a { font-size: 12px; color: #999999; text-decoration: none}
a:hover { font-size: 12px; color: #000000; text-decoration: none}
-->
</style>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="font1" style="writing-mode=tb-rl;height:200px" width=300>
<p>盛夏      尚 涛 
<p><a href="index.htm">一夜露痕黄粉香 袁运甫 </a>
<p>瑶池昨夜新凉  王金岭
<p>一朵白莲随意开 吴冠南
<p>新雨迎秋欲满塘 齐辛民
<p>十里荷香    齐辛民
<p>濯清莲而不妖  卢世曙
</div>
</body>
</html>
15,IE6已支持自定义cursor!
语法格式 cursor:url(图标) //cur或是ani文件.
cur就是WINDOWS中的光标(cursor)文件,光标文件与图标(ICON)文件除了文件头有一个位置的值不同外,实际是一样的。
ani是WINDOWS中的动画光标(图标)文件。
<style type="text/css">
<!--
.unnamed1 { cursor:url(arrow2c.cur)}
-->
</style>
16,用marquee做的滚动字幕.这也我刚看到论坛的朋友在问。
语法:
align=# | top | middle| bottom //对齐方式)
BEHAVIOR=ALTERNATE | SCROLL | SLIDE //移动的方式
BGCOLOR=color//底色区域颜色
DIRECTION=DOWN | LEFT | RIGHT | UP //移动的方向
Loop=n //循环次数(默认是循环不止)
Scrolldelay=milliseconds//延时
height=# width=# //区域面积
hspace=# vspace=# //空白区域
scrollamount=# //移动的速度
<marquee align=top behavior=ALTERNATE BGCOLOR=#000000 height=60 width=433 scrollamount=5></marquee>
17,在FLASH5中也存在一些字体,打散后变成一团的事是为什么?有解决的办法吗。
这是大家很常见的问题!可能是对字库支持的不好!我个是做成透明的gif图片格式,然后倒入。
18,flash的网页里“加入收藏夹”功能怎么实现?
在as中加getUrl("java script:window.external.addFavorite(http://skydesigner.51.net`,`我的工作室`)"
19,在Flash中,文本的动态属性和输入属性的区别。
input text在运行时可被用户或程序改变其值。
ynamic text仅允许被程序修改。
20,怎样在IE中调用Dreamweaver进行编辑.
相信很多在使用WinME或Window2000的朋友,会遇见是个问题。很简单,把我们笔记本程序打开,保存为一个 *.reg 文件。双击它将信息添加到注册表即可。
REGEDIT4
[HKEY_CLASSES_ROOT/.htm/OpenWithList/Dreamweaver]
[HKEY_CLASSES_ROOT/.htm/OpenWithList/Dreamweaver/shell]
[HKEY_CLASSES_ROOT/.htm/OpenWithList/Dreamweaver/shell/edit]
[HKEY_CLASSES_ROOT/.htm/OpenWithList/Dreamweaver/shell/edit/command]
@="/"c://Program Files//Macromedia//Dreamweaver 4//dreamweaver.exe/" /"%1/""
21,设置表格虚线。
方法一:作一个1X2的图。半黑半白,再利用表格作成线。
方法二:在css里面设,要IE5。5才支持这种效果。
style="BORDER-LEFT: #000000 1PX DASHED; BORDER-RIGHT: #000000 1PX DASHED; BORDER-TOP: #000000 1PX DASHED; BORDER-BOTTOM: #000000 1PX DASHED"
22,看看在网页中调用HHCtrl控件效果。
代码如下:
<object id="HHC" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object><script>HHC.TextPopup("哈哈,大家好,我是闪梦!","",50,5,128255,346751);</script>
22,如何让一张图片有浅到深的渐变。
<SCRIPT language=javascript1.2>
<!--
function high(which2){
theobject=which2
highlighting=setInterval("highlightit(theobject)",50)
}
function low(which2){
clearInterval(highlighting)
which2.filters.alpha.opacity=40
}
function highlightit(cur2){
if (cur2.filters.alpha.opacity<100)
cur2.filters.alpha.opacity+=10
else if (window.highlighting)
clearInterval(highlighting)
}
</script>
<img style="FILTER: alpha(opacity=40)"src="logo.gif" >
23,双击鼠标左键来滚动背景,单击停止。
<SCRIPT language=javascript>
var currentpos,timer;
function initialize()
{
timer=setInterval("scrollwindow()",16);
}
function sc(){
clearInterval(timer);
}
function scrollwindow()
{
currentpos=document.body.scrollTop;
window.scroll(0,++currentpos);
if (currentpos != document.body.scrollTop)
sc();
}
document.
document.ondblclick=initialize
</SCRIPT>
24,如何在同一页面设置不同文字链接效果的样式.
代码如下:
<HTML><HEAD><TITLE>如何在同一页面设置不同文字链接效果的样式</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
<!--
a:hover { font-size: 9pt; color: #FF0000; text-decoration: underline}
a:link { font-size: 9pt; color: #006699; text-decoration: underline}
a:visited { font-size: 9pt; color: #006699; text-decoration: underline}
a:active { font-size: 9pt; color: #FF0000; text-decoration: none}
a.r1:hover { font-size: 9pt; color: #FF0000; text-decoration: underline overline}
a.r1:link { font-size: 9pt; color: #000000; text-decoration: underline overline}
a.r1:visited { font-size: 9pt; color: #99CC00; text-decoration: underline overline}
a.r1:active { font-size: 9pt; color: #000000; text-decoration: underline overline}
-->
</style>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<a href="#">下划线链接 </a>
<p></p>
<a href="#" class="r1">双下划线链接</a>
</BODY>
</HTML>
补充说明:
a:hover 表示鼠标划过时的样式.
a:link 表示链接的样式.
a:active 表示当前活动连接的样式.
a:visited 表示已经访问过的连接的样式.
25, 用CSS给文字加入阴影效果和文字描边效果。
.glow{FONT-SIZE: 9pt; FILTER: Glow(Color=#000000, Strength=1)}
//文字描边效果
.shadow {FONT-SIZE: 9pt; FILTER: DropShadow(OffX=1, OffY=1, DropShadow(OffX=1, OffY=1, color:#111111); COLOR: #ffffff; FONT-FAMILY: "宋体"}
//加入阴影效果
补充说明:
  这两种滤镜要想实现效果,必须加在如:<td class=glow或shadow ><div>xxxxxxxxx</div></td>上
,并且要留有足够的空间能够显示阴影或描边,否则会出现半截的阴影或描边现象。
26,如何给做带颜色的下拉菜单。
<select style="FONT-SIZE: 10px; COLOR: #ffffff; FONT-FAMILY: Verdana;BACKGROUND-COLOR: #ff6600;" size=1 >
<option selected>:: Dreamweaver4 ::</option>
<option>::Flash5::</option>
<option>::Firewoks4::</option>
</select>
27,关于DW4的表格中的亮边框和暗边框问题。
在DW4的表格面板中并没有亮边框和暗边框的属性设置,因为NC不支持,只有你在代码中添加了。
bordercolorlight="#999999" bordercolordark="#000000"
  你也可以用Css定义一个class。例如:
<style>
.bordercolor { bordercolorlight: #999999; bordercolordark: #000000 }
</style>
  然后在要加效果的表格里加上<table class="bordercolor">
28,自动显示主页最后更新日期.
<script>
document.write("最后更新日期:"+document.lastModified+""
</script>
29,如何让滚动条出现在左边?
我想居然在论坛中有人发表了这段代码,很有意思,它的确照顾一些左撇子,呵呵!
<html dir="rtl">
<body bgcolor="#000000" text="#FFFFFF">
<table height=18 width=212 align=center bgcolor=#FFFFFF dir="ltr" cellspacing="1"  cellpadding="0">
<tr>
<td bgcolor="#FF0000" >是不是你的滚动条在左边啊</td>
</tr>
</table>
</body>
</html>
30,如何加入网址前面的小图标?
  首先,您必须了解所谓的图标(Icon)是一种特殊的图形文件格式,它是以 .ico 作为扩展名。你可用在网上找一个制作图标软件,它具有特有的规格:图标的大小为 16 * 16(以像素为单位);颜色不得超过 16 色。 在该网页文件的 HEAD 部分加入下面的内容:<LINK REL="SHORTCUT ICON" HREF=" http://skydesigner.51.net/图标文件名">,并放在该网页的根目录下。
31,在800*600显示器中,如何不让网页水平出现滚动条!
设至<body leftmargin="0" topmargin="0">,网页中的表格宽度为778。
32,关于<!DOTYPE>的说明解释。
在网页中,经常会看到〈!DOCTYPE HTML PUBLIC`-//W3C//DTD HTML 4.01//EN`>,是声明HTML文件的版本信息。
33, 用图片来关闭窗体.
<A href="java script:window.close()"><IMG height=20 width=20 alt="关闭窗口" src="close.gif" border=0></A>
补充说明:如何使用了ACTIVEX!,不再警告窗口?
<html>
<head>
<object id=closes type="application/x-oleobject"
classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<param name="Command" value="Close"></object>
</head>
<body bgcolor="#003063" text="#ffffff" id=all> <a href="#" onclick="closes.Click();">关闭窗口无提示</a>
</body>
</html>
34,禁止鼠标右键查看网页源代码。
<SCRIPT language=javascript>
function click()
{if (event.button==2) {alert(`你好,欢迎光临!`) }}
document.
</SCRIPT>
补充说明:
鼠标完全被封锁,可以屏蔽鼠标右键和网页文字。
< body oncontextmenu="return false" ondragstart="return false" onselectstart="return false">
35,通过按钮来查看网页源代码。
<input type="BUTTON" value="查看源代码" onClick= `window.location = "view-source:" + window.location.href` name="BUTTON">
36,怎么用文字联结实现按钮的SUBMIT功能?
<a href="#" onclick="formname.submit()">OK</a>
这段文字要放在form里。formname是这里要写在form中的name,<form name=form111>那么就应该是form111.submit()
37,如何做一个空链接?
加#
38,利用<IFRAME>来给网页中插入网页。
  经常我看到很多网页中又有一个网页,还以为是用了框架,其实不然,是用了<IFRAME>,它只适用于IE,NS可是不支持<IFRAME>的,但围着的字句只有在浏览器不支援 iframe 标记时才会显示,如<noframes>一样,可以放些提醒字句之类的话。
你注意啊!下面请和我学习它的用法。
分析代码:<iframe src="iframe.html" name="test" align="MIDDLE" width="300" height="100" marginwidth="1" marginheight="1" frameborder="1" scrolling="Yes"> </iframe>
  src="iframe.html"
  用来显示<IFRAME>中的网页来源,必要加上相对或绝对路径。
  name="test"
  这是连结标记的 target 参数所需要的。
  align="MIDDLE"
  可选值为 left, right, top, middle, bottom,作用不大 。
  width="300" height="100"
  框窗的宽及长,以 pixels 为单位。
  marginwidth="1" marginheight="1"
  该插入的文件与框边所保留的空间。
  frameborder="1"
  使用 1 表示显示边框, 0 则不显示。(可以是 yes 或 no)
  scrolling="Yes"
  使用 Yes 表示容许卷动(内定), No 则不容许卷动。
39,请问<tbody>的用法?
tbody用法据说是加强对表格的控制能力的.例如:
 <table><tbody>……..</tbody></table>
  tbody代码如果不是你用手写的话,只有在你用IE5打开一个网页的时候, 把它另存为
一下,你的另存为的文件在表格中就会生成tbody代码。(即便你的表格根本就没有
tbody代码,IE5另存为的时候也会给你生成)。
40,Alt和Title都是提示性语言标签,请注意它们之间的区别。
  在我们浏览网页时,当鼠标停留在图片对象或文字链接上时,在鼠标的右下角有时会出现一个提示信息框。对目标进行一定的注释说明。在一些场合,它的作用是很重要的。
alt 用来给图片来提示的。Title用来给链接文字或普通文字提示的。
用法如下:
   <p Title="给链接文字提示">文字</p>
   <a href="#" Title="给链接文字提示">文字</a>
   <img src="图片.gif" alt="给图片提示">
补充知识:<TITLE><ALT>里面如何多行换行?在源代码里Enter回车。
<a href="#" Title="个人简历
姓名:张培
网名:我是闪梦
性别:男的,不是女的。
爱好:网页制作,软件开发">个人简历</a>
例如:个人简历
41, 用javascript代码来实现闪烁按钮。
<body>
<form method="POST" action="--WEBBOT-SELF--">
<input type="button" name=SUB value="闪烁" id=flashit style="BORDER: 1px solid ;BACKGROUND-COLOR: #FFFFFF">
</form>
<script>
if (document.all&&document.all.flashit)
{
var flashelement=document.all.flashit
if (flashelement.length==null)
flashelement[0]=document.all.flashit
function changecolor(which)
{
if (flashelement[which].style.color==`#800000`)
flashelement[which].style.color="#0063A4"
else
flashelement[which].style.color="#800000"
}
if (flashelement.length==null)
setInterval("changecolor(0)",1000)
else
for (i=0;i<flashelement.length;i++)
{
var tempvariable=`setInterval("changecolor(`+i+`)",`+`1000)`
eval(tempvariable)
}
}
</script>
</body>
42,CSS给图片定义颜色边框。
img { border: 1px solid red}
43,在DW中如何使插入的FLASH透明。
方法一:选中swf,打开原代码窗口,在</object>前输入:<param name="wmode" value="transparent">
方法二:在Flash中的Flie→Publist Settings→HTML→Window Mode选择transparent
44,在DW编辑文本中,如何输入一个空格呢?
输入空格的问题,在DW似乎已成了一个老生常谈的问题。通过将输入法调整到全角模式就可以避免了。本以人工智能ABC为例.按Shift+Space切换到全角状态。
45,为何我的DW中图形显示不正常。
第一种:可能是因为你定义并正在使用一个site,而你的HTML文件或者图片不在这个site包含的区域之内,因此dreamweaver使用file协议来
描述图象的绝对路径,可惜IE不支持src中使用file协议,所以图象就显示不出来了。
第二种:可能是放图片的文件夹或图片名为中文,也显示不到网页中去。
46,如何在本地机器上测试flash影片的loading?
我想这可能是很多人在问的题了,其实很简单,在Test时,选选View->Show Streaming就可以看到了。
47,在网页中做出一根竖的线有几种办法.
第一种方法:用一个像素图的办法!
如果你用Dreamwever的Edit→Preferences…→Layout View中的Spacer Image给你创建了一个缺省名为:spacer.gif的一个像素图文件 。
代码中:
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td bgcolor="#FF0000" height="200" ><img src="spacer.gif" width="1" height="1"></td>
</tr>
</table>
第二种方法:用表格填颜色的办法!把<td> </td>中的 删掉 .
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td bgcolor="#FF0000" height="200" width="1"></td>
</tr>
</table>
第三种方法:用水平条。
<hr color="red" width="1" size="100%">
48, 关于鼠标拖动,改变层大小。──看看微软的做法.
<script>
document.execCommand("2D-position",false,true);
</script>
<DIV contentEditable=true>
<DIV style="WIDTH: 300px; POSITION: absolute; HEIGHT: 100px; BACKGROUND-COLOR: red">移动层</DIV>
</DIV>

********************jsp+javascript打造级连菜单***********
<%@ page import="java.util.Date,yava.fileapp.*,java.sql.*;"
         contentType="text/html;charset=GB2312" pageEncoding="GB2312"
%>
<style>
.f9{ font-size:9pt; }
.bgc{ background-color:#AECAF9; color: #0033FF }
.buttons{font-family:Arial; font-size:13px; font-weight:bold; background-color:#6796E4; color:white; border-top: solid 2px #AACAFB;
  border-bottom: solid 1px #4E7DC1;
  border-left: solid 1px #AECAF9;
  border-right: solid 1px #5679BD;
  padding:1px;
  margin:0px;}
</style>
<SCRIPT LANGUAGE="JavaScript">
<!--
function rv()
{
  var val="";
  for(i=0;i<combo_box.list2.length;i++){
   val+=","+combo_box.list2[i].value;
  }
  if(val.charAt(0)==","){
   val=val.substr(1,val.length);
  }
  opener.form1.frecname.value=val;
  self.close();
}
//-->
</SCRIPT>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<jsp:useBean id="user" scope="session" class="yava.fileapp.UserBean" />
<%
  CDataSource ds=new CDataSource();  //数据联结Bean实例
  java.sql.Connection conn=ds.getConnection();
  java.sql.Statement stmt=null;
  java.sql.ResultSet rs=null;
  CDataCheck dc=new CDataCheck();
%>
<%
 String sqlu="SELECT t1.fno, t1.fname, t2.fname AS fdept FROM tuser t1 LEFT OUTER JOIN TDept t2 ON t1.fdept = t2.fno order by t2.fname";
 stmt=conn.createStatement();
 rs=stmt.executeQuery(sqlu);
%>
 <script language='Javascript'>
 arr = new Array();
<%  int temp=0;
 while(rs.next())
 {
%>
 arr[<%=temp%>]=new Array("<%=rs.getString("fname")%>","<%=rs.getString("fdept")%>");
<%
 temp = temp + 1;
 }
%>
temp=<%=temp%>;
function ChangeLocation(id){
document.combo_box.city.length=0; //初始化第2级菜单的长度,下标从0开始
var i = 0;
document.combo_box.city.options[0]=new Option('-------','');
for(i=0;i<temp;i++){
if(arr[i][1]==id){//如果相等,证明在第2级里面有输入第1级组织的子集,arr[总数目][部门]
document.combo_box.city.options[document.combo_box.city.length] = new Option(arr[i][0], arr[i][0]);
}
}
}
</script>

<form name="combo_box">
<table border="0" cellspacing="0" cellpadding="0" height="210" width="59">
  <tr height="24">
    <td bgcolor="#336699" class="buttons" align=center><font color=#ffffff>部门选择</font></td>
    <td bgcolor="#336699" class="buttons" align=center><font color=#ffffff>人名选择</font></td>
    <td bgcolor="#336699" class="buttons" align=center nowrap><font color=#ffffff>添加/移除</font></td>
    <td bgcolor="#336699" class="buttons" align=center><font color=#ffffff>最终人</font></td>
  </tr>
  <tr>
    <td>
  <select multiple id=prov name="prov"  onchange="ChangeLocation(combo_box.prov.options[combo_box.prov.selectedIndex].text);"  style="width:150;height:200" class="bgc">
  <option value="0">请选择部门 ---></option>
<%
    String sqld="SELECT * FROM tdept";
 stmt=conn.createStatement();
 rs=stmt.executeQuery(sqld);
 while(rs.next())
 {
%>
  <option name="<%=rs.getString("fno")%>"><%=rs.getString("fname")%></option>
<%
 }
%>
  </select>
 </td>
    <td>
  <select multiple id=city style="width:150;height:200" class="bgc">
  </select>
 </td>
    <td nowrap align="center" class="bgc">
  <input type="button" onClick="move(this.form.list2,this.form.city)" value="<<" class="buttons">
  <input type="button" onClick="move(this.form.city,this.form.list2)" value=">>" class="buttons">
 </td>
    <td>
  <select multiple size="10" name="list2" style="width:150;height:200" class="bgc">
  </select>
 </td>
  </tr>
    <tr class="bgc">
    <td colspan="4" align="center"><input type="button" name="button1" class="buttons" value="选好了!" onclick="rv();"></td>
  </tr>
</table>
</form>
<script language="JavaScript">
//人名移动
function move(fbox, tbox) {
var arrFbox = new Array();
var arrTbox = new Array();
var arrLookup = new Array();
var i;
for (i = 0; i < tbox.options.length; i++) {
arrLookup[tbox.options[i].text] = tbox.options[i].value;
arrTbox[i] = tbox.options[i].text;
}
var fLength = 0;
var tLength = arrTbox.length;
for(i = 0; i < fbox.options.length; i++) {
arrLookup[fbox.options[i].text] = fbox.options[i].value;
if (fbox.options[i].selected && fbox.options[i].value != "") {
arrTbox[tLength] = fbox.options[i].text;
tLength++;
}
else {
arrFbox[fLength] = fbox.options[i].text;
fLength++;
   }
}
arrFbox.sort();
arrTbox.sort();
fbox.length = 0;
tbox.length = 0;
var c;
for(c = 0; c < arrFbox.length; c++) {
var no = new Option();
no.value = arrLookup[arrFbox[c]];
no.text = arrFbox[c];
fbox[c] = no;
}
for(c = 0; c < arrTbox.length; c++) {
var no = new Option();
no.value = arrLookup[arrTbox[c]];
no.text = arrTbox[c];
tbox[c] = no;
   }
}
</script>
</body>
 
********************jsp实现图形验证码***********
 调用方法    
  <img   src="http://...../getImg">    
   
  原理,在servlet中随机生成一个4位数字1000-9999    
  然后把这数字写入session    
  输出一个图片,上面写有这四个数字    
  在服务器端根据用户输入的数字和    
  session中的值比较。    
   
   
  package   com.schoolwx.util;    
  import   java.io.*;    
  import   java.util.*;    
  import   com.sun.image.codec.jpeg.*;    
  import   javax.servlet.*;    
  import   javax.servlet.http.*;    
  import   java.awt.*;    
  import   java.awt.image.*;    
  /**    
  *   Title:   getImg.java    
  *   Description:   这个class主要实现随机生成一个4位数的验证码,并写入session,    
  *   Copyright:   Copyright   (c)   2003    
  *   Company:   蓝星软件    
  *   @author   falcon    
  *   @version   1.1    
  */    
  public   class   getImg   extends   HttpServlet   {    
  private   Font   mFont=new   Font("宋体",   Font.PLAIN,12);//设置字体    
  //处理post    
  public   void   doPost(HttpServletRequest   request,HttpServletResponse   response)    
  throws   ServletException,IOException   {    
  doGet(request,response);    
  }    
  public   void   doGet(HttpServletRequest   request,HttpServletResponse   response)    
  throws   ServletException,IOException   {    
  //取得一个1000-9999的随机数    
  String   s="";    
  int   intCount=0;    
  intCount=(new   Random()).nextInt(9999);//    
  if(intCount<1000)intCount+=1000;    
  s=intCount+"";    
  //对session付值。     
  HttpSession   session=request.getSession   (true);    
  session.setAttribute("getImg",s);     
  response.setContentType("image/gif");    
  ServletOutputStream   out=response.getOutputStream();    
  BufferedImage   image=new   BufferedImage(35,14,BufferedImage.TYPE_INT_RGB);    
  Graphics   gra=image.getGraphics();    
  //设置背景色    
  gra.setColor(Color.yellow);    
  gra.fillRect(1,1,33,12);    
  //设置字体色    
  gra.setColor(Color.black);    
  gra.setFont(mFont);    
  //输出数字    
  char   c;     
  for(int   i=0;i<4;i++)   {    
  c=s.charAt(i);    
  gra.drawString(c+"",i*7+4,11);   //7为宽度,11为上下高度位置      
  }    
  JPEGImageEncoder   encoder=JPEGCodec.createJPEGEncoder(out);      
  encoder.encode(image);    
  out.close();    
    }    
    }    
 
********************JSP调用报表示例***********
<%@ page language="java" pageEncoding="GBK"%>
<%
 String path = request.getContextPath();
 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path;
 request.setCharacterEncoding( "GBK" );
%>
<%@taglib uri="/WEB-INF/runqianReport4.tld" prefix="report" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>帶分頁的報表</title>
   
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">   
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <link href="<%=basePath%>/styles/css1.css" rel="stylesheet" type="text/css">
 
 <%
 String hong="hong=select * from ukehu where yid ='"+request.getParameter("name")+"'";
 
 %>
  </head>
 
  <body>
  <center>
    <report:html name="report1" reportFileName="红参数.raq"
     srcType="file"
  params="<%=hong%>"
  
  scale="1"
  width="-1"
  funcBarLocation="bottom"
  separator=" "
  
  needSaveAsExcel="yes"
  needSaveAsPdf="yes"
  needSaveAsWord="yes"
  needPrint="yes"
  
  printLabel="<input name='print_btn' type='button' class='btn001' value='print'>"
  savePrintSetup="yes"
  printedRaq="红参数.raq"
  
  excelLabel="<input name='exportExcel_btn' type='button' class='btn001' value='To Excel'>"
  pdfLabel="<input name='exportPdf_btn' type='button' class='btn001' value='To PDF'>"
  wordLabel="<input name='exportWrod_btn' type='button' class='btn001' value='To Word'>"
  saveAsName="userlist"
  
  needScroll="no"
  needPageMark="yes"
  firstPageLabel="<input name='firstPage_btn' type='button' class='btn001' value='第一页 '>"
  prevPageLabel="<input name='prevPage_btn' type='button' class='btn001' value='上一页'>"
  nextPageLabel="<input name='nextPage_btn' type='button' class='btn001' value='下一页'>"
  lastPageLabel="<input name='lastPage_btn' type='button' class='btn001' value='尾页'>"
  displayNoLinkPageMark="yes"
    
 />
  </center>
  </body>
</html>

********************JSP分页***********
一 前提
希望最新的纪录在开头给你的表建立查询:
表:mytable
查询:create or replace view as mytable_view from mytable order by id desc 其中,最好使用序列号create sequence mytable_sequence 来自动增加你的纪录id号
二 源程序
<%String sConn="你的连接"
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection(sConn,"你的用户名","密码");
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
Statement stmtcount=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet rs=stmt.executeQuery("select * from mytable_view");
String sqlcount="select count(*) from mytable_view";
ResultSet rscount=stmtcount.executeQuery(sqlcount);
int pageSize=你的每页显示纪录数;
int rowCount=0; //总的记录数
while (rscount
int pageCount; //总的页数
int currPage; //当前页数
String strPage;
strPage=request.getParameter("page");
if (strPage==null){
currPage=1;
}
else{
currPage=Integer.parseInt(strPage);
if (currPage<1) currPage=1;
}
pageCount=(rowCount+pageSize-1)/pageSize;
if (currPage>pageCount) currPage=pageCount;
int thepage=(currPage-1)*pageSize;
int n=0;
rs.absolute(thepage+1);
while (n<(pageSize)&&!rs
%>
<%rs.close();
rscount.close();
stmt.close();
stmtcount.close();
conn.close();
%>
//下面是 第几页等
<form name="sinfo" method="post" action="sbinfo_index.jsp?condition=<%=condition%>&type=<%=type%>" onSubmit="return testform(this)">
第<%=currPage%>页 共<%=pageCount%>页 共<%=rowCount%>条
<%if(currPage>1){%><a href="sbinfo_index.jsp?condition=<%=condition%>&type=<%=type%>">首页</a><%}%>
<%if(currPage>1){%><a href="sbinfo_index.jsp?page=<%=currPage-1%>&condition=<%=condition%>&type=<%=type%>">上一页</a><%}%>
<%if(currPage<pageCount){%><a href="sbinfo_index.jsp?page=<%=currPage+1%>&condition=<%=condition%>&type=<%=type%>">下一页</a><%}%>
<%if(pageCount>1){%><a href="sbinfo_index.jsp?page=<%=pageCount%>&condition=<%=condition%>&type=<%=type%>">尾页</a><%}%>
跳到<input type="text" name="page" size="4" style="font-size:9px">页
<input type="submit" name="submit" size="4" value="GO" style="font-size:9px">
</form>

********************JSP中表单数据存储的一种通用方法***********
摘 要
  本文以Oracle数据库为例,介绍了在采用JSP技术开发WEB应用时一种简便通用的表单数据存储处理方法,以减轻开发工作量,同时提供了主要的程序代码。
  引言
  J2EE(Java 2 Enterprise Edition)技术已广泛应用在Web应用开发中,其中的JavaBean、Servlet技术为开发者提供了更为清晰的开发环境,使用JSP技术表现页面,使用Servlet技术完成大量的业务处理,使用Bean来存储数据及一些业务处理。在WEB应用中,业务数据存储到数据库中的处理工作经常很繁重,其中一种主要的形式就是表单数据存储到数据库,整个应用处理过程牵涉到大量的这种数据存储操作,对每个表单都要单独编写相应的数据存储程序,花费了开发人员大量的时间和精力。采用什么方法来减轻表单数据存储的开发工作量是值得研究的问题。
  两种常见的表单数据存储处理方法
  1、对每一表单都编写相应的程序代码
  在JSP页面或JavaBean或Servlet中,使用request. getparameter()函数逐一提取表单提交的数据,或编写相应的JavaBean,使用setProperty方法将数据自动取到JavaBean中,然后生成SQL语句(insert,update,delete),最后执行executeupdate()函数完成数据表存储。
  2、对每一数据表自动生成一个JavaBean程序代码
  数据库系统必须支持用户能够读取表结构,并识别关键字段。利用面向对象快速开发工具,如PowerBuilder、Delphi等,自行开发一个java代码自动生成程序。在该程序中读取数据库表的结构:字段名、数据类型、数据长度,自动生成一个JavaBean代码。在该代码中定义与表中字段对应的同名变量,建立所有变量的setValue和getValue方法,建立insert、update、delete函数分别处理insert、update、delete的SQL语句生成和执行。
  在表单提交的数据处理页面中,编写如下代码,将表单数据存储到JavaBean中:
<jsp:useBean id="table" class="table1_bean" />
<jsp:setProperty name="table" property="*" />
(注:table1_bean为上述自动生成的对应某一个表的JavaBean)
然后调用table1_bean中insert、update、delete函数完成数据表存储,并返回执行结果。如:
<%boolean success =table.insert(); %>
  第一种方法简单直观,但对每一表单都需要编写相应的数据处理程序。对稍微大一点的应用,表单数量可能很多,开发工作量很大,开发工作效率低。表结构变动如增加、减少字段时,需修改相应的数据处理程序。
  第二种方法相对第一种简便得多,每一数据表的数据处理由对应的JavaBean实现,JavaBean自动生成,不需编写,表结构变动时只需重新生成新的JavaBean,经java编译后覆盖原java类即可。但该方法需要开发JavaBean自动生成程序,表结构变动时JavaBean需要重新生成和编译。
  介绍一种简便通用的方法实现表单数据存储
  在WEB应用开发中,很多表单在经过前台浏览器端简单的数据校验后,提交后台服务器,服务器对数据不用作任何处理直接将数据存储到一个数据表中。对这种情况,我们可以只编写一个程序,对这些表单统一处理,将数据存储到相应的一个数据表中。该方法同样要求数据库系统支持表结构读取和关键字段识别。我们采用JSP技术编写该程序,程序文件取名为DbdataStore.jsp。
  1、调用格式
  在网页中表单的Action调用方法如下:
<Form Name=Frm1 Method=Post Action="DBdataStore.jsp? tablename=table1&OperType=…">
  table1为数据将要存储的数据库表的表名,OperType操作类型分为三种:insert,update,delete。
表单中的<input type=text name=…>,<textarea name=…><select name=…>等中的name值应与数据表的字段名相同,DBdataStore.jsp中逐一提取表单提交的对应字段名的数据值,若表单中未定义输入,得到的值为空值,则对该字段不作处理。
  2、以oracle为例的视图定义
  1) 建立表各列数据类型视图
CREATE OR REPLACE VIEW v_dbstru AS SELECT table_name,column_name,data_type,data_length,data_precision,data_scale,column_id
FROM all_tab_columns WHERE owner='user1';//user1为数据表的属主。
  2) 建立表的关键列视图
CREATE OR REPLACE VIEW v_pkey_column AS
 SELECT b.table_name,b.column_name,b.position
 FROM all_constraints a,all_cons_columns b
 WHERE a.owner=b.owner AND a.constraint_name=b.constraint_name AND a.owner='user1'  AND a.constraint_type='P';
  3、主要程序代码
  1) 程序初始化
String tablename=request.getParameter("tablename");//提取表名
String OperType=request.getParameter("OperType");//提取操作类型
String sFieldValue="";//存放表单提交的字段数据值
String fieldname="",Datatype="" //存放字段名,字段数据类型
int iFieldvalue=0;
String updateSql="",whereSql=" where ",insSql1="",insSql2="",opSql="",strSql ="";
ResultSet rs1=null,rs2=null;
insSql1="insert into "+tablename+" (";
insSql2="values(";
  2)生成sql语句关键字段部分
  生成insert语句关键字段部分,如:insert into table1(id 和 values(100));
  只使用关键字段生成update,delete语句where部分,如:where id=100;
  在操作类型为update时,网页form表单中不对关键字段的数据进行修改。
rs1=Stmt.executeQuery("SELECT column_name FROM v_pkey_column WHERE table_name='"+tablename+"'");//取关键字段字段名
while(rs1.next()){
 fieldname=rs1.getString("column_name");
 rs2=Stmt.executeQuery("SELECT data_type FROM v_dbstru WHERE  table_name='"+tablename+"' AND column_name='"+fieldname+"'");//取关键字段数据类型
 if(rs2.next()){
  Datatype=rs2.getString("data_type");
  sFieldValue=request.getParameter(fieldname.toLowerCase());
  //生成insert语句关键字段部分
  if(OperType.equals("insert")){
   insSql1+=fieldname+",";
   if((sFieldValue==null) ){
    //表单未提交关键字段数据值时,本文只按数字型处理,数据值按下一流水号计算。
    rs2= Stmt. executeQuery("SELECT max("+fieldname+")+1 FROM "+tablename);rs2. next();iFieldvalue=rs2.getInt(1);insSql2+=Integer.toString(iFieldvalue)+",";     }else if(Datatype.equals("DATE")){
    insSql2+= "To_Date('" + sFieldValue + "','YYYY-MM-DD'),";
   }else if(Datatype.equals("VARCHAR2") || Datatype.equals("CHAR")){
insSql2+="'" + sFieldValue+"',";}
   else /*NUMBER,FLOAT */ insSql2+=sFieldValue+",";}
   //生成update,delete语句where部分:where fieldname=... AND
   if(OperType.equals("update") || OperType.equals("delete")){
    if(Datatype.equals("DATE")){
     whereSql+=fieldname+"=To_Date('" + sFieldValue + "','YYYY-MM-DD') AND ";
    }else if(Datatype.equals("VARCHAR2") || Datatype.equals("CHAR")){
     whereSql+=fieldname+"='" + sFieldValue+"' AND ";}
    else /*NUMBER,FLOAT */ whereSql+=fieldname+"="+ sFieldValue+" AND ";}
  }
 }
whereSql=whereSql.substring(0,whereSql.length()-4);
  3)非关键字段部分sql语句生成
  update语句,如:update table1 set column1=value1,… where id=100
  insert语句,如:insert into table1(id,column1,…)values(100,value1,…)
updateSql="update "+tablename+" set ";
strSql="SELECT column_name,data_type,data_length,data_precision,data_scale FROM  v_dbstru a "+"where table_name='"+tablename+"' AND a.column_name not in (SELECT    b.column_name FROM v_pkey_column b where b.table_name=a.table_name)";
rs1=Stmt.executeQuery(strSql);//取非关键字段字段名和数据类型
while(rs1.next()){
 fieldname=rs1.getString("column_name");Datatype=rs1.getString("data_type");   sFieldValue=request.getParameter(fieldname.toLowerCase());//若表单未提交该字段的值,则忽略该字段的处理
 if((sFieldValue!=null)){
  //生成insert语句=insSql1+insSql2 即insert into tablename(… 和 values(…
  if(OperType.equals("insert")){ insSql1+=fieldname+",";
  if(Datatype.equals("DATE")){
   insSql2+= "To_Date('" + sFieldValue + "','YYYY-MM-DD'),";
  } else if(Datatype.equals("VARCHAR2") || Datatype.equals("CHAR")){
   insSql2+="'" + sFieldValue+"',";}else /*NUMBER,FLOAT*/ insSql2+= sFieldValue+",";}
  //生成update语句=updateSql+whereSql 即update tablename set ... where  fieldname=... if(OperType.equals("update")){
 if(Datatype.equals("DATE")){
  updateSql+=fieldname+"=To_Date('" + sFieldValue + "','YYYY-MM-DD'),";
 }else if(Datatype.equals("VARCHAR2") || Datatype.equals("CHAR")){
  updateSql+=fieldname+"='" + sFieldValue,1}+"',";}else /*NUMBER,FLOAT*/ updateSql+=fieldname+"="+sFieldValue+",";} ))
 rs1.close();
  4)生成完整的sql语句并执行
if(OperType.equals("insert"))
 opSql=insSql1.substring(0,insSql1.length()-1)+")"+insSql2.substring(0,insSql2.length()-1)+")";
if(OperType.equals("update"))
 opSql=updateSql.substring(0,updateSql.length()-1)+" "+whereSql;if(OperType.equals("delete"))
 opSql="delete FROM "+tablename+" "+whereSql;
//已生成完整的sql语句opSql
try{sqlnrows=Stmt.executeUpdate(opSql);}
catch(SQLException e){out.println("SQLException:"+opSql);}
  4、特点
  该方法对所有这种直接存储的表单都统一使用本程序,具有通用性,不必对每个表单或每个数据表独立开发相应程序,开发工作量非常少,调用也非常简便。同时,在表结构变动时,不用修改DBdataStore.jsp程序。本程序也可改写为Servelet,调用格式为<Form Name=Frm1 Method=Post Action="DBdataStoreServelet?tablename=table1&OperType=…">。
  结束语
  在Web应用中,如果表单数据在提交后,还需要服务器后台作进一步的数据校验或处理,则需要采用第二种方法。但很多情况是用户在表单中输入或修改数据,在前台浏览器端使用javascript对数据进行简单校验或处理,然后提交,在后台服务器端不作任何处理,直接将表单提交的数据存储到数据库的一个表中。这时候采用第三种方法非常简便,可以大大减轻开发人员的工作量
 

********************LOG4J配置文件 log4j.properties***********
# Configure logging for testing: optionally with log file
log4j.rootLogger=WARN, stdout
# log4j.rootLogger=WARN, stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
 
********************各数据库JDBC连接***********
1、Oracle 的JDBC连接
protected Connection getConnection() throws Exception {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        return DriverManager.getConnection(
                "jdbc:oracle:thin:@localhost:1521:accp", "system", "system");
    }

2、SQL server 的JDBC连接
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 
    String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs"; 
    Connection conn= DriverManager.getConnection(url, "sa", "sa");
    conn.createStatement().executeQuery("select * from jobs");
    conn.close();
3、MySQL   的JDBCL连接
Class.forName("com.mysql.jdbc.Driver");
java.sql.DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=GBK","root",null);
4、Derby  的JDBC连接
Class.forName("org.apache.derby.jdbc.ClientDriver");
java.sql.DriverManager.getConnection("jdbc:derby://localhost:1527/myeclipse","classiccars","classiccars");
5、DB2  的JDBC连接
 JDBC URL :jdbc:db2://tdurden:50000/SAMPLE
 Driver Class field: com.ibm.db2.jcc.DB2Driver  

********************weblogic配置心得***********
weblogic 的配置有两种方法: 
   1:开始--〉程序--〉BEA WebLogic Platform 8.1--〉Configuration Wizard  根据需要和提示进行的到文件C:/bea/user_projects      JBUilder的Enterprise配置中Domain directory 选择路径C:/bea/user_projects/domains/mydomain 即可!配置weblogic 成功
   2:根据原始文件配置,路径为C:/bea/weblogic81/portal/bin 方法,
         (1)在此路径下新建一个空的config.xml ;
         (2)修改JBUilder的Enterprise配置中Domain directory 选择路径C:/bea/weblogic81/portal/bin;
  (3)确定以后删除开始在C:/bea/weblogic81/portal/bin中建立的config.xml
          (4) 启动C:/bea/weblogic81/portal/bin下startWebLogic.cmd
 
********************定时执行任务的三种方法***********
1)java.util.Timer
这个方法应该是最常用的,不过这个方法需要手工启动你的任务:
Timer timer=new Timer();
timer.schedule(new ListByDayTimerTask(),10000,86400000);
这里的ListByDayTimerTask类必须extends TimerTask里面的run()方法。
2)ServletContextListener
这个方法在web容器环境比较方便,这样,在web server启动后就可以
自动运行该任务,不需要手工操作。
将ListByDayListener implements ServletContextListener接口,在
contextInitialized方法中加入启动Timer的代码,在contextDestroyed
方法中加入cancel该Timer的代码;然后在web.xml中,加入listener:
< listener>
< listener-class>com.qq.customer.ListByDayListener< /listener-class>
< /listener>
3)org.springframework.scheduling.timer.ScheduledTimerTask
如果你用spring,那么你不需要写Timer类了,在schedulingContext-timer
.xml中加入下面的内容就可以了:
< ?xml version="1.0" encoding="UTF-8"?>
< !DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
< beans>
< bean id="timer" class="org.springframework.scheduling.timer.TimerFactoryBean">
< property name="scheduledTimerTasks">
< list>
< ref local="MyTimeTask1"/>
< /list>
< /property>
< /bean>
< bean id="MyTimeTask" class="com.qq.timer.ListByDayTimerTask"/>
< bean id="MyTimeTask1" class="org.springframework.scheduling.timer.ScheduledTimerTask">
< property name="timerTask">
< ref bean="MyTimeTask"/>
< /property>
< property name="delay">
< value>10000< /value>
< /property>
< property name="period">
< value>86400000< /value>
< /property>
< /bean>
< /beans>
 
1)java.util.Timer 这个方法应该是最常用的,不过这个方法需要手工启动你的任务: Timer timer=new Timer(); timer.schedule(new ListByDayTimerTask(),10000,86400000); 这里的ListByDayTimerTask类必须extends TimerTask里面的run()方法。
2)ServletContextListener 这个方法在web容器环境比较方便,这样,在web server启动后就可以自动运行该任务,不需要手工操作。将ListByDayListener implements ServletContextListener接口,在 contextInitialized方法中加入启动Timer的代码,在contextDestroyed 方法中加入cancel该Timer的代码;然后在web.xml中,加入listener: < listener> < listener-class>com.qq.customer.ListByDayListener< /listener-class> < /listener> 3)org.springframework.scheduling.timer.ScheduledTimerTask 如果你用spring,那么你不需要写Timer类了,在schedulingContext-timer .xml中加入下面的内容就可以了: < ?xml version="1.0" encoding="UTF-8"?> < !DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> < beans> < bean id="timer" class="org.springframework.scheduling.timer.TimerFactoryBean"> < property name="scheduledTimerTasks"> < list> < ref local="MyTimeTask1"/> < /list> < /property> < /bean> < bean id="MyTimeTask" class="com.qq.timer.ListByDayTimerTask"/> < bean id="MyTimeTask1" class="org.springframework.scheduling.timer.ScheduledTimerTask"> < property name="timerTask"> < ref bean="MyTimeTask"/> < /property> < property name="delay"> < value>10000< /value> < /property> < property name="period"> < value>86400000< /value> < /property> < /bean> < /beans>

********************解决乱码问题(格式化)***********
//格式化---转换为GBK
    public String fs(String str) {
        try {
            byte[] st = str.getBytes();
            str = new String(st, "GBK");
        } catch (UnsupportedEncodingException ex) {
            ex.printStackTrace();
        } // new java.util.Date();  -->java.sql.Date()
        return str.trim();
    }
//格式化---转换为ISO-8859-1
    public String fg(String str) {
        try {
            byte[] st = str.getBytes("ISO-8859-1");
            str = new String(st);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return str;
    }

********************如何将网页数据输出为Excel或Word文件***********
将一个JSP页面中的<%@ page contentType="text/html; charset=GBK" language="java" %>替换为
<%@ page contentType="application/vnd.ms-Excel;charset=GBK" language="java"%> //Excel
<%@ page contentType="application/vnd.ms-word;charset=GBK" language="java"%> //Word
在页面开始输出数据前中加入一行
<%
response.setHeader("Content-disposition","attachment;filename=result.xls");//Excel
%>
<%
response.setHeader("Content-disposition","attachment;filename=result.doc");//Word
%>
对页面中的其它部分的处理:
去掉导入的CSS文件(可以在页面中加入<style type=”text/css”></style>)
去掉所有的javascript或VBScript
其它代码不需要更改
 
********************提升JSP响应速度***********
 方法一:在servlet的init()方法中缓存数据
  当应用服务器初始化servlet实例之后,为客户端请求提供服务之前,它会调用这个servlet的init()方法。在一个servlet的生命周期中,init()方法只会被调用一次。通过在init()方法中缓存一些静态的数据或完成一些只需要执行一次的、耗时的操作,就可大大地提高系统性能。
  例如,通过在init()方法中建立一个JDBC连接池是一个最佳例子,假设我们是用jdbc2.0的DataSource接口来取得数据库连接,在通常的情况下,我们需要通过JNDI来取得具体的数据源。我们可以想象在一个具体的应用中,如果每次SQL请求都要执行一次JNDI查询的话,那系统性能将会急剧下降。解决方法是如下代码,它通过缓存DataSource,使得下一次SQL调用时仍然可以继续利用它:
以下是引用片段:
public class ControllerServlet extends HttpServlet{
private javax.sql.DataSource testDS = null;  
public void init(ServletConfig config) throws ServletException {
super.init(config);   
Context ctx = null;  
try{    
ctx = new InitialContext();   
testDS = (javax.sql.DataSource)ctx.lookup("jdbc/testDS");
}catch(NamingException ne){ne.printStackTrace();}
}catch(Exception e){e.printStackTrace();}
} 
public javax.sql.DataSource getTestDS(){ 
 return testDS; 
} 
...
... 
}

  方法 2:禁止servlet和JSP 自动重载(auto-reloading)
  Servlet/JSP提供了一个实用的技术,即自动重载技术,它为开发人员提供了一个好的开发环境,当你改变servlet和JSP页面后而不必重启应用服务器。然而,这种技术在产品运行阶段对系统的资源是一个极大的损耗,因为它会给JSP引擎的类装载器(classloader)带来极大的负担。因此关闭自动重载功能对系统性能的提升是一个极大的帮助。
  方法 3: 不要滥用HttpSession
  在很多应用中,我们的程序需要保持客户端的状态,以便页面之间可以相互联系。但不幸的是由于HTTP具有天生无状态性,从而无法保存客户端的状态。因此一般的应用服务器都提供了session来保存客户的状态。在JSP应用服务器中,是通过HttpSession对像来实现session的功能的,但在方便的同时,它也给系统带来了不小的负担。因为每当你获得或更新session时,系统者要对它进行费时的序列化操作。你可以通过对HttpSession的以下几种处理方式来提升系统的性能。
  如果没有必要,就应该关闭JSP页面中对HttpSession的缺省设置。 如果你没有明确指定的话,每个JSP页面都会缺省地创建一个HttpSession。如果你的JSP中不需要使用session的话,那可以通过如下的JSP页面指示符来禁止它:
以下是引用片段:
<%@ page session="false"%>

  不要在HttpSession中存放大的数据对像:如果你在HttpSession中存放大的数据对像的话,每当对它进行读写时,应用服务器都将对其进行序列化,从而增加了系统的额外负担。你在HttpSession中存放的数据对像越大,那系统的性能就下降得越快。
  当你不需要HttpSession时,尽快地释放它:当你不再需要session时,你可以通过调用HttpSession.invalidate()方法来释放它。尽量将session的超时时间设得短一点:在JSP应用服务器中,有一个缺省的session的超时时间。当客户在这个时间之后没有进行任何操作的话,系统会将相关的session自动从内存中释放。超时时间设得越大,系统的性能就会越低,因此最好的方法就是尽量使得它的值保持在一个较低的水平。
  方法 4: 将页面输出进行压缩
  压缩是解决数据冗余的一个好的方法,特别是在网络带宽不够发达的今天。有的浏览器支持gzip(GNU zip)进行来对HTML文件进行压缩,这种方法可以戏剧性地减少HTML文件的下载时间。因此,如果你将servlet或JSP页面生成的HTML页面进行压缩的话,那用户就会觉得页面浏览速度会非常快。但不幸的是,不是所有的浏览器都支持gzip压缩,但你可以通过在你的程序中检查客户的浏览器是否支持它。下面就是关于这种方法实现的一个代码片段:
以下是引用片段:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
OutputStream out = null;
String encoding = request.getHeader("Accept-Encoding");  
if (encoding != null && encoding.indexOf("gzip") != -1){
request.setHeader("Content-Encoding" , "gzip");  
out = new GZIPOutputStream(request.getOutputStream());
} 
else if (encoding != null && encoding.indexOf("comdivss") != -1){
request.setHeader("Content-Encoding" , "comdivss");  
out = new ZIPOutputStream(request.getOutputStream());
}else{  
out = request.getOutputStream();
} 
... 
... 
}
  方法 5: 使用线程池
  应用服务器缺省地为每个不同的客户端请求创建一个线程进行处理,并为它们分派service()方法,当service()方法调用完成后,与之相应的线程也随之撤消。由于创建和撤消线程会耗费一定的系统资源,这种缺省模式降低了系统的性能。但所幸的是我们可以通过创建一个线程池来改变这种状况。
  另外,我们还要为这个线程池设置一个最小线程数和一个最大线程数。在应用服务器启动时,它会创建数量等于最小线程数的一个线程池,当客户有请求时,相应地从池从取出一个线程来进行处理,当处理完成后,再将线程重新放入到池中。如果池中的线程不够地话,系统会自动地增加池中线程的数量,但总量不能超过最大线程数。通过使用线程池,当客户端请求急剧增加时,系统的负载就会呈现的平滑的上升曲线,从而提高的系统的可伸缩性。
  方法 6: 选择正确的页面包含机制
  在JSP中有两种方法可以用来包含另一个页面:
  1、使用include指示符
以下是引用片段:
<%@ include file=”test.jsp” %>

  2、使用jsp指示符
以下是引用片段:
<jsp:include page=”test.jsp” flush=”true”/>

  在实际中发现,如果使用第一种方法的话,可以使得系统性能更高。
  方法 7:正确地确定javabean的生命周期
  JSP的一个强大的地方就是对javabean的支持。通过在JSP页面中使用jsp:useBean标签,可以将javabean直接插入到一个JSP页面中。它的使用方法如下:
以下是引用片段:
<jsp:useBean id="name" scope="page|request|session|application" 
class="package.className" type="typeName">
</jsp:useBean>

  其中scope属性指出了这个bean的生命周期。缺省的生命周期为page。如果你没有正确地选择bean的生命周期的话,它将影响系统的性能。
  举例来说,如果你只想在一次请求中使用某个bean,但你却将这个bean的生命周期设置成了session,那当这次请求结束后,这个bean将仍然保留在内存中,除非session超时或用户关闭浏览器。这样会耗费一定的内存,并无谓的增加了JVM垃圾收集器的工作量。因此为bean设置正确的生命周期,并在bean的使命结束后尽快地清理它们,会使用系统性能有一个提高。
  其它一些有用的方法
  1、在字符串连接操作中尽量不使用“+”操作符:在java编程中,我们常常使用“+”操作符来将几个字符串连接起来,但你或许从来没有想到过它居然会对系统性能造成影响吧?由于字符串是常量,因此JVM会产生一些临时的对像。你使用的“+”越多,生成的临时对像就越多,这样也会给系统性能带来一些影响。解决的方法是用StringBuffer对像来代替“+”操作符。
  2、避免使用System.out.println()方法:由于System.out.println()是一种同步调用,即在调用它时,磁盘I/O操作必须等待它的完成,因此我们要尽量避免对它的调用。但我们在调试程序时它又是一个必不可少的方便工具,为了解决这个矛盾,我建议你最好使用Log4j工具(http://Jakarta.apache.org ),它既可以方便调试,而不会产生System.out.println()这样的方法。
  3、ServletOutputStream 与 PrintWriter的权衡:使用PrintWriter可能会带来一些小的开销,因为它将所有的原始输出都转换为字符流来输出,因此如果使用它来作为页面输出的话,系统要负担一个转换过程。而使用ServletOutputStream作为页面输出的话就不存在一个问题,但它是以二进制进行输出的。因此在实际应用中要权衡两者的利弊。
  总结
  本文的目的是通过对servlet和JSP的一些调优技术来极大地提高你的应用程序的性能,并因此提升整个J2EE应用的性能。通过这些调优技术,你可以发现其实并不是某种技术平台(比如J2EE和.NET之争)决定了你的应用程序的性能,重要是你要对这种平台有一个较为深入的了解,这样你才能从根本上对自己的应用程序做一个优化。
 
 
********************用配置文件来设置数据源***********
用配置文件设置数据源:
struts-config.xml的配置:
<data-sources>
    <data-source key="Sql" type="org.apache.commons.dbcp.BasicDataSource">
      <set-property property="driverClassName" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"/>
      <set-property property="url"   value="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Book"/>
      <set-property property="username" value="sa"/>
      <set-property property="password" value="sa"/>
    </data-source>
  </data-sources>
类中的访问:
ServletContext context = servlet.getServletContext();
DataSource dataSource = (DataSource) context.getAttribute("Sql");
外部文件的配置要求:1.加包struts-legacy.jar  (C:/Borland/JBuilder2005/thirdparty/jakarta-struts-1.1-lib)
2.把sql驱动的三个文件加入tomcat目录(C:/Borland/JBuilder2005/thirdparty/jakarta-tomcat-5.0.27/common/lib )
 
********************spring做事务代理类的配置文件***********
(1)
  applicationContext.xml  里面的配置修改:
  新建bean:
 <bean name="/demo"
  class="com.yourcompany.struts.action.DemoAction">
  <property name="dao">
   <ref bean="PeopleDAOProxy" />
  </property>
 </bean>
   事务代理代码:
<!-- hibernate 3 事务代理 -->
 <bean id="transactionManager"
  class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  <property name="sessionFactory">
   <ref bean="sessionFactory" />
  </property>
 </bean>
 <bean id="BbsuserDAOProxy"
  class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
  abstract="false" lazy-init="default" autowire="default"
  dependency-check="default">
  <property name="proxyTargetClass">
   <value>true</value>
  </property>
  <property name="transactionManager">
   <ref bean="transactionManager" />
  </property>
  <property name="target">
   <ref local="BbsuserDAO" />
  </property>
  <property name="transactionAttributes">
   <props>
    <prop key="*">PROPAGATION_REQUIRED</prop>
   </props>
  </property>
 </bean>
(2):
struts-config里面的配置修改:
     添加插件:
         <plug-in
  className="org.springframework.web.struts.ContextLoaderPlugIn">
  <set-property property="contextConfigLocation"
   value="/WEB-INF/classes/applicationContext.xml" />
 </plug-in>
    修改type :
            type="org.springframework.web.struts.DelegatingActionProxy" >
 
 
********************BaseFactoryDAO*********************
package com.yitong.cms.common;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Collection;
import java.util.List;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import org.apache.log4j.Logger;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class BaseFactoryDAO extends HibernateDaoSupport implements
  IBaseFactoryDAO {
 private static final Logger logger = Logger.getLogger(BaseFactoryDAO.class);
 /**
  * 根據SQL找單列
  */
 public List findSQLResult(String sql) {
  try {
   Session s = this.getSession();
   SQLQuery query = s.createSQLQuery(sql).addScalar("o1",
     new org.hibernate.type.StringType()).addScalar("n1",
     new org.hibernate.type.StringType()).addScalar("o2",
     new org.hibernate.type.StringType()).addScalar("n2",
     new org.hibernate.type.StringType());
   List queryObject = query.list();
   s.close();
   if (logger.isDebugEnabled()) {
    logger.debug("findHqlResult(String) - end");
   }
   return queryObject;
  } catch (RuntimeException re) {
   logger.error("findHqlResult(String)", re);
   throw re;
  }
 }
 /**
  * 根據SQL找記錄對像信息
  */
 public List findHqlResult(String hql) {
  if (logger.isDebugEnabled()) {
   logger.debug("findHqlResult(String) - start");
  }
  try {
   Session s = this.getSession();
   List queryObject = s.createQuery(hql).list();
   s.close();
   if (logger.isDebugEnabled()) {
    logger.debug("findHqlResult(String) - end");
   }
   return queryObject;
  } catch (RuntimeException re) {
   logger.error("findHqlResult(String)", re);
   throw re;
  }
 }
 /**
  * 保存及更新對像
  */
 public boolean saveOrUpdate(Object arg0) {
  try {
   getHibernateTemplate().saveOrUpdate(arg0);
  } catch (DataAccessException e) {
   e.printStackTrace();
   return false;
  }
  return true;
 }
 /**
  * 添加對像
  */
 public boolean save(Object arg0) {
  try {
   getHibernateTemplate().save(arg0);
  } catch (DataAccessException e) {
   e.printStackTrace();
   return false;
  }
  return true;
 }
 /**
  * 更新對像
  */
 public boolean update(Object arg0) {
  try {
   getHibernateTemplate().merge(arg0);
  } catch (DataAccessException e) {
   e.printStackTrace();
   return false;
  }
  return true;
 }
 /**
  * 刪除數據
  *
  * @param arg0
  * @return
  */
 public boolean delete(Object arg0) {
  this.getHibernateTemplate().delete(arg0);
  return true;
 }
 /**
  * 分頁查找對象
  *
  * @param hql
  * @param i
  * @param j
  * @return
  */
 public List findHqlResult(String hql, Class arg0, Class arg1, Class arg2,
   int i, int j) {
  Session s = this.getSession();
  List queryObject = s.createSQLQuery(hql).addEntity("t", arg0)
    .addEntity("b", arg1).addEntity("c", arg2).setFirstResult(i)
    .setMaxResults(j).list();
  s.close();
  return queryObject;
 }
 public List findHqlResult(String hql, Class arg0, Class arg1, Class arg2,
   Class arg3, int i, int j) {
  Session s = this.getSession();
  List queryObject = s.createSQLQuery(hql).addEntity("t", arg0)
    .addEntity("b", arg1).addEntity("c", arg2).addEntity("d", arg3)
    .setFirstResult(i).setMaxResults(j).list();
  s.close();
  return queryObject;
 }
 
 public List findTwoPageResult(String hql, Class arg0, Class arg1, int i, int j) {
  Session s = this.getSession();
  List queryObject = s.createSQLQuery(hql).addEntity("t", arg0)
    .addEntity("b", arg1)
    .setFirstResult(i).setMaxResults(j).list();
  s.close();
  return queryObject;
 }
 /**
  * 查找對象
  *
  * @param obj
  * @return
  */
 public List findByExample(Object obj) {
  Session s = this.getSession();
  List queryObject = s.createCriteria(obj.getClass()).list();
  s.close();
  return queryObject;
 }
 /**
  * 根據統一標識查找返回對像
  *
  * @param o
  * @param id
  * @return
  */
 public Object findById(Object o, String id) {
  Object obj = this.getHibernateTemplate().get(o.getClass(), id);
  return obj;
 }
 /**
  * 根據SQL查詢關聯對像
  *
  * @param hql
  * @param arg0
  * @param arg1
  * @return
  */
 public List findSqlResults(String hql, Class arg0, Class arg1, Class arg2) {
  Session s = this.getSession();
  List queryObject = s.createSQLQuery(hql).addEntity("t", arg0)
    .addEntity("b", arg1).addEntity("c", arg2).list();
  s.close();
  return queryObject;
 }
 public List findSqlResults(String hql, Class arg0, Class arg1, Class arg2,
   Class arg3) {
  Session s = this.getSession();
  List queryObject = s.createSQLQuery(hql).addEntity("t", arg0)
    .addEntity("b", arg1).addEntity("c", arg2).addEntity("d", arg3)
    .list();
  s.close();
  return queryObject;
 }
 /**
  * 根據SQL查詢關聯對像
  *
  * @param hql
  * @param arg0
  * @param arg1
  * @return
  */
 public List findSqlResultsTwo(String hql, Class arg0, Class arg1) {
  Session s = this.getSession();
  List queryObject = s.createSQLQuery(hql).addEntity("t", arg0)
    .addEntity("b", arg1).list();
  s.close();
  return queryObject;
 }
 /**
  * 獲取連接池連接 (non-Javadoc)
  * @throws SQLException
  *
  * @see com.yitong.cms.common.IBaseFactoryDAO#getConn()
  */
 public Connection getConn() throws SQLException {
  return this.getDataSource().getConnection();
 }
 public List findHqlPageResult(String hql, int i, int j) {
  Session s = this.getSession();
  List list = s.createQuery(hql).setFirstResult(i).setMaxResults(j)
    .list();
  s.close();
  return list;
 }
 private DataSource dataSource;
 public DataSource getDataSource() {
  return dataSource;
 }
 public void setDataSource(DataSource dataSource) {
  this.dataSource = dataSource;
 }
 /**
  * 保存所有
  *
  * @param transientInstance
  * @return
  */
 public boolean saveAll(Collection transientInstance) {
  logger.debug("saving object instance");
  try {
   getHibernateTemplate().saveOrUpdateAll(transientInstance);
   logger.debug("save successful");
  } catch (RuntimeException re) {
   logger.error("save failed", re);
   return false;
  }
  return true;
 }
 /**
  * 刪除所有
  *
  * @param persistentInstance
  * @return
  */
 public boolean deleteAll(Collection persistentInstance) {
  logger.debug("deleting object instance");
  try {
   getHibernateTemplate().deleteAll(persistentInstance);
   logger.debug("delete successful");
  } catch (RuntimeException re) {
   logger.error("delete failed", re);
   return false;
  }
  return true;
 }
 /**
  * JDBC UPDATE
  *
  * @param sql
  * @return
  */
 public boolean doJdbcUpdate(String sql) {
  return getJdbcTemplate().update(sql) >= 0;
 }
 /**
  * JDBC UPDATE 批處理
  *
  * @param sql
  * @return
  */
 public boolean doJdbcBatch(String[] sql) {
  int[] m = getJdbcTemplate().batchUpdate(sql);
  for (int i = 0; i < m.length; i++) {
   if (m[i] <= 0)
    return false;
  }
  return true;
 }
 private JdbcTemplate jdbcTemplate;
 /**
  * JDBC操作
  *
  * @return
  */
 public JdbcTemplate getJdbcTemplate() {
  if (jdbcTemplate == null) {
   jdbcTemplate = new JdbcTemplate(dataSource);
  }
  return jdbcTemplate;
 }
 /**
  * JDBC查詢
  *
  * @param sql
  * @return
  */
 public List findByJdbcSql(String sql) {
  return getJdbcTemplate().queryForList(sql);
 }
 /**
  * 計數查詢
  *
  * @param sql
  * @return
  */
 public int queryForInt(String sql) {
  return getJdbcTemplate().queryForInt(sql);
 }
 /**
  * 字符串查詢
  *
  * @param sql
  * @return
  */
 public String queryForString(String sql) {
  return (String) getJdbcTemplate().queryForObject(sql, String.class);
 }
 /**
  * 查詢記錄是否存在
  *
  * @param sql
  * @return
  */
 public boolean queryExistBySql(String sql) {
  List rst = findByJdbcSql(sql);
  if (rst == null || rst.isEmpty()) {
   return false;
  }
  return true;
 }
 public List findSignSqlResults(String hql, Class arg0) {
  Session s = this.getSession();
  List queryObject = s.createSQLQuery(hql).addEntity("a", arg0).list();
  s.close();
  return queryObject;
 }
}
********************IBaseFactoryDAO*********************
package springdao;
import java.sql.Connection;
import java.util.List;
public interface IBaseFactoryDAO {
 public abstract List findSQLResult(String sql);
 
 public abstract List findHqlResult(String hql);
 
 public abstract boolean saveOrUpdate(Object objName);
 
 public abstract boolean save(Object objName);
 
 public abstract boolean update(Object objName);
 
 public abstract List findSqlResults(String hql,Class entityClass1,Class entityClass2,Class entityClass3);
   
 public abstract List findSqlResultsTwo(String hql,Class entityClass1,Class entityClass2);
 
 public abstract List findHqlResult(String hql,Class arg0,Class arg1,Class arg2,int i,int j);
 
 public abstract List findByExample(Object transientInstance);
 
 public abstract boolean delete(Object objName);
 
 public abstract Object findById(Object o,String id);
 
 public Connection getConn() throws Exception; 
 
 public abstract List findHqlPageResult(String hql,int i,int j);
 
 
 public abstract List findSignSqlResults(String hql, Class arg0) ;
 
 public abstract boolean doJdbcUpdate(String sql);
 
 public  abstract List findByJdbcSql(String sql) ;
}
 
********************常用的按钮复制文本框内容***********
<html>
<title>
常用的按钮复制文本框内容
</title>
<head>
<SCRIPT language=JavaScript>
<!--
function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}
function JM_cc(ob){
var obj=MM_findObj(ob); if (obj) {
obj.select();js=obj.createTextRange();js.execCommand("Copy");}
}
function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}
//-->
</SCRIPT>
</head>
<body>
<br>
<INPUT name=Button type=button value=复制到剪贴板>
  <BR>
</div>
<FORM action="" method=post name=form1>
  <div align="center">
    <TEXTAREA cols=70 name=js_1 rows=10 wrap=VIRTUAL></textarea>
  </div>
</form>
</body>
</html>
 
********************仿QQ的好友黑名单风格树型菜单***********
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<BODY>
<script>
if (!document.getElementById)
    document.getElementById = function() { return null; }
function initializeMenu(menuId, actuatorId) {
    var menu = document.getElementById(menuId);
    var actuator = document.getElementById(actuatorId);
    if (menu == null || actuator == null) return;
    //if (window.opera) return; // I'm too tired
    actuator.parentNode.style.backgroundImage = "url(/images/plus.gif)";
    actuator.onclick = function() {
        var display = menu.style.display;
        this.parentNode.style.backgroundImage =
            (display == "block") ? "url(/images/plus.gif)" : "url(/images/minus.gif)";
        menu.style.display = (display == "block") ? "none" : "block";
        return false;
    }
}
 window.onload = function() {
            initializeMenu("productsMenu", "productsActuator");
            initializeMenu("newPhonesMenu", "newPhonesActuator");
            initializeMenu("compareMenu", "compareActuator");
        }
</script>
<style>
body {
  font-family: verdana, helvetica, arial, sans-serif;
}
#mainMenu {
  background-color: #EEE;
  border: 1px solid #CCC;
  color: #000;
  width: 203px;
}
#menuList {
  margin: 0px;
  padding: 10px 0px 10px 15px;
}
li.menubar {
  background: url(/images/plus.gif) no-repeat 0em 0.3em;
  font-size: 12px;
  line-height: 1.5em;
  list-style: none outside;
}
.menu, .submenu {
  display: none;
  margin-left: 15px;
  padding: 0px;
}
.menu li, .submenu li {
  background: url(/images/square.gif) no-repeat 0em 0.3em;
  list-style: none outside;
}
a.actuator {
  background-color: transparent;
  color: #000;
  font-size: 12px;
  padding-left: 15px;
  text-decoration: none;
}
a.actuator:hover {
  text-decoration: underline;
}
.menu li a, .submenu li a {
  background-color: transparent;
  color: #000;
  font-size: 12px;
  padding-left: 15px;
  text-decoration: none;
}
.menu li a:hover, submenu li a:hover {
  /*border-bottom: 1px dashed #000;*/
  text-decoration: underline;
}
span.key {
  text-decoration: underline;
}
</style>
</head>
<body>
<div id="mainMenu">
      <ul id="menuList">
        <li class="menubar">
          <a href="#" id="productsActuator" class="actuator">图秀地带收藏夹</a>
          <ul id="productsMenu" class="menu">
            <li>
              <a href="#" id="newPhonesActuator" class="actuator">我的好友</a>
              <ul id="newPhonesMenu" class="submenu">
                <li><a href="http://mc.mapabc.com/mapcard/card.jsp?pp=1000000001">张三[10000001]</a></li>
                <li><a href="http://mc.mapabc.com/mapcard/card.jsp?pp=1000000001">李四[10000002]</a></li>
                <li><a href="http://mc.mapabc.com/mapcard/card.jsp?pp=1000000001">张三[10000001]</a></li>
                <li><a href="http://mc.mapabc.com/mapcard/card.jsp?pp=1000000001">李四[10000002]</a></li>
              </ul>
            </li>
            <li>
              <a href="#" id="compareActuator" class="actuator">陌生人</a>
              <ul id="compareMenu" class="submenu">
                <li><a href="http://mc.mapabc.com/mapcard/card.jsp?pp=1000000001">张三[10000001]</a></li>
                <li><a href="http://mc.mapabc.com/mapcard/card.jsp?pp=1000000001">李四[10000002]</a></li>
                <li><a href="http://mc.mapabc.com/mapcard/card.jsp?pp=1000000001">张三[10000001]</a></li>
                <li><a href="http://mc.mapabc.com/mapcard/card.jsp?pp=1000000001">李四[10000002]</a></li>
              </ul>
            </li>
          </ul>
        </li>
      </ul>
    </div>
  </body>
</BODY>
</HTML>
 

********************普通菜单特效***********
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title>www.webjx.com</title>
<style type="text/css">
<!--
/*Author:webjx.com*/
body{
background-color:white;
font-size:12px;
font-family:Arial, Helvetica, sans-serif;
margin:0px;
padding:0px;
color:white;
}
ul,li{
margin:0px;
padding:0px;
}
li{
display:inline;
list-style:none;
list-style-position:outside;
text-align:center;
font-weight:bold;
float:left;
}
a:link{
color:#336601;
text-decoration:none;
float:left;
width:100px;
padding:3px 5px 0px 5px;
}
a:visited{
color:#336601;
text-decoration:none;
float:left;
padding:3px 5px 0px 5px;
width:100px;
}
a:hover{
color:white;
float:left;
padding:3px 3px 0px 20px;
width:88px;
text-decoration:none;
background-color:#539D26;
}
a:active{
color:white;
float:left;
padding:3px 3px 0px 20px;
width:88px;
text-decoration:none;
background-color:#BD06B4;
}
#nav{
width:600px;
height:30px;
border-bottom:0px;
padding:0px 5px;
position:absolute;
z-index:1;
}
.list{
line-height:20px;
text-align:left;
padding:4px;
font-weight:normal;
}
.menu1{
width:120px;
height:auto;
margin:6px 4px 0px 0px;
border:1px solid #9CDD75;
background-color:#F1FBEC;
color:#336601;
padding:6px 0px 0px 0px;
cursor:hand;
overflow-y:hidden;
}
.menu2{
width:120px;
height:18px;
margin:6px 4px 0px 0px;
background-color:#F5F5F5;
color:#999999;
border:1px solid #EEE8DD;
padding:6px 0px 0px 0px;
overflow-y:hidden;
cursor:hand;
}/*Author:webjx.com*/
-->
</style>
</head>
<body>
<div id="nav">
  <ul>
  <li class="menu2" onMouseOver="this.className='menu1'" onMouseOut="this.className='menu2'">我的首页 
  <div class="list">
    <a href="#">A</a><br />
 <a href="#">A1</a><br />
 <a href="#">A2</a><br />
    <a href="#">A3</a><br />
 <a href="#">A4</a><br />
 <a href="#">A5</a><br />
  </div>
  </li>
  <li class="menu2" onMouseOver="this.className='menu1'" onMouseOut="this.className='menu2'">社区圈子
  <div class="list">
    <a href="#">我的WEBJX</a><br />
 <a href="#">我的首页</a><br />
 <a href="#">我的日志</a><br />
 <a href="#">我的相册</a><br />
 <a href="#">我的收藏</a><br />
  </div>
  </li>
  <li class="menu2" onMouseOver="this.className='menu1'" onMouseOut="this.className='menu2'">我的短信 
  <div class="list">
    <a href="#">我的WEBJX</a><br />
 <a href="#">我的相册</a><br />
 <a href="#">我的收藏</a><br />
  </div>
  </li>
  <li class="menu2" onMouseOver="this.className='menu1'" onMouseOut="this.className='menu2'">账户管理 
  <div class="list">
    <a href="#">我的WEBJX</a><br />
 <a href="#">我的首页</a><br />
 <a href="#">我的日志</a><br />
 <a href="#">我的相册</a><br />
 <a href="#">我的收藏</a><br />
    <a href="#">我的日志</a><br />
 <a href="#">我的相册</a><br />
 <a href="#">我的收藏</a><br />
  </div>
  </li>
  </ul>
</div>
</body>
</html>
 
********************树型折叠展开收缩效果的栏目分类导航***********
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>先飞电脑技术网-可折叠展开收缩效果的栏目分类导航</title>
<style type="text/css">
td {font-size: 12px;}
</style>
</head>
<body>
<table width="200" height="250" border="0" align="center" cellpadding="0" cellspacing="0">
 <tr>
  <td height="38">
  <img height="38" src="/Jsupload/leftlist_head.jpg" width="200" /></td>
 </tr>
 <tr>
  <td align="center" valign="top" background="/Jsupload/leftlist_bg.jpg">
  <script language="javascript" id="clientEventHandlersJS">
<!--
var number=8;
function LMYC() {
var lbmc;
//var treePic;
    for (i=1;i<=number;i++) {
        lbmc = eval('LM' + i);
        //treePic = eval('treePic'+i);
        //treePic.src = '/Jsupload/file.gif';
        lbmc.style.display = 'none';
    }
}
 
function ShowFLT(i) {
    lbmc = eval('LM' + i);
    //treePic = eval('treePic' + i)
    if (lbmc.style.display == 'none') {
        LMYC();
        //treePic.src = '/Jsupload/nofile.gif';
        lbmc.style.display = '';
    }
    else {
        //treePic.src = '/Jsupload/file.gif';
        lbmc.style.display = 'none';
    }
}
//-->
      </script>
  <table cellspacing="0" cellpadding="0" width="88%" border="0">
   <tr>
    <td style="PADDING-LEFT: 20px" background height="23">
    <img height="9" src="/Jsupload/bit05.gif" width="8" align="absMiddle">
    <a href="javascript:void(null)">
    文管产品</a> </td>
   </tr>
   <tr id="LM1" style="DISPLAY: none">
    <td>
    <table cellspacing="0" cellpadding="0" width="100%" border="0">
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="文件夹" href="http://www.jscode.cn" target="_parent">
      文件夹</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="资料册" href="http://www.jscode.cn" target="_parent">
      资料册</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="档案盒" href="http://www.jscode.cn" target="_parent">
      档案盒</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="文件盒" href="http://www.jscode.cn" target="_parent">
      文件盒</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="文件柜" href="http://www.jscode.cn" target="_parent">
      文件柜</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="公文包" href="http://www.jscode.cn" target="_parent">
      公文包</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
    </table>
    </td>
   </tr>
   <tr>
    <td style="PADDING-LEFT: 20px" background height="23">
    <img height="9" src="/Jsupload/bit05.gif" width="8" align="absMiddle">
    <a href="javascript:void(null)">
    桌面文具</a> </td>
   </tr>
   <tr id="LM2" style="DISPLAY: none">
    <td>
    <table cellspacing="0" cellpadding="0" width="100%" border="0">
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="削笔机" href="http://www.jscode.cn" target="_parent">
      削笔机</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="订书机" href="http://www.jscode.cn" target="_parent">
      订书机</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
    </table>
    </td>
   </tr>
   <tr>
    <td style="PADDING-LEFT: 20px" background height="23">
    <img height="9" src="/Jsupload/bit05.gif" width="8" align="absMiddle">
    <a href="javascript:void(null)">
    商用机器</a> </td>
   </tr>
   <tr id="LM3" style="DISPLAY: none">
    <td>
    <table cellspacing="0" cellpadding="0" width="100%" border="0">
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="碎纸机" href="http://www.jscode.cn" target="_parent">
      碎纸机</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="切纸刀" href="http://www.jscode.cn" target="_parent">
      切纸刀</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
    </table>
    </td>
   </tr>
   <tr>
    <td style="PADDING-LEFT: 20px" background height="23">
    <img height="9" src="/Jsupload/bit05.gif" width="8" align="absMiddle">
    <a href="javascript:void(null)">
    书写工具</a> </td>
   </tr>
   <tr id="LM4">
    <td>
    <table cellspacing="0" cellpadding="0" width="100%" border="0">
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="中性笔" href="http://www.jscode.cn" target="_parent">
      中性笔</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="圆珠笔" href="http://www.jscode.cn" target="_parent">
      圆珠笔</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="记号笔" href="http://www.jscode.cn" target="_parent">
      记号笔</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="白板笔" href="http://www.jscode.cn" target="_parent">
      白板笔</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
    </table>
    </td>
   </tr>
   <tr>
    <td style="PADDING-LEFT: 20px" background height="23">
    <img height="9" src="/Jsupload/bit05.gif" width="8" align="absMiddle">
    <a href="javascript:void(null)">
    纸制品</a> </td>
   </tr>
   <tr id="LM5" style="DISPLAY: none">
    <td>
    <table cellspacing="0" cellpadding="0" width="100%" border="0">
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="传真纸" href="http://jscode.cn" target="_parent">
      传真纸</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="复印纸" href="http://www.jscode.cn" target="_parent">
      复印纸</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="复写纸" href="http://www.jscode.cn" target="_parent">
      复写纸</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="便条纸" href="http://www.jscode.cn" target="_parent">
      便条纸</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="百事贴" href="http://www.jscode.cn" target="_parent">
      百事贴</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="皮面笔记本" href="http://www.jscode.cn" target="_parent">
      皮面笔记本</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
    </table>
    </td>
   </tr>
   <tr>
    <td style="PADDING-LEFT: 20px" background height="23">
    <img height="9" src="/Jsupload/bit05.gif" width="8" align="absMiddle">
    <a href="javascript:void(null)">
    办公电子</a> </td>
   </tr>
   <tr id="LM6" style="DISPLAY: none">
    <td>
    <table cellspacing="0" cellpadding="0" width="100%" border="0">
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="计算器" href="http://www.jscode.cn" target="_parent">
      计算器</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
    </table>
    </td>
   </tr>
   <tr>
    <td style="PADDING-LEFT: 20px" background height="23">
    <img height="9" src="/Jsupload/bit05.gif" width="8" align="absMiddle">
    <a href="javascript:void(null)">
    IT周边产品</a> </td>
   </tr>
   <tr id="LM7" style="DISPLAY: none">
    <td>
    <table cellspacing="0" cellpadding="0" width="100%" border="0">
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="阅读架" href="http://www.jscode.cn" target="_parent">
      阅读架</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="CD保护" href="http://www.jscode.cn" target="_parent">
      CD保护</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="光盘盒" href="http://www.jscode.cn" target="_parent">
      光盘盒</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
    </table>
    </td>
   </tr>
   <tr>
    <td style="PADDING-LEFT: 20px" background height="23">
    <img height="9" src="/Jsupload/bit05.gif" width="8" align="absMiddle">
    <a href="javascript:void(null)">
    办公生活用品</a> </td>
   </tr>
   <tr id="LM8" style="DISPLAY: none">
    <td>
    <table cellspacing="0" cellpadding="0" width="100%" border="0">
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="清洁桶" href="http://www.jscode.cn" target="_parent">
      清洁桶</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="白板" href="http://www.jscode.cn" target="_parent">
      白板</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="网状文具" href="http://www.jscode.cn" target="_parent">
      网状文具</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="封箱器" href="http://www.jscode.cn" target="_parent">
      封箱器</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
     <tr>
      <td style="PADDING-LEFT: 40px" height="23">
      <img height="7" src="/Jsupload/bit06.gif" width="8" align="absMiddle">
      <a title="购物袋" href="http://www.jscode.cn" target="_parent">
      购物袋</a> </td>
     </tr>
     <tr>
      <td background height="3"></td>
     </tr>
    </table>
    </td>
   </tr>
  </table>
  </td>
 </tr>
 <tr>
  <td height="17">
  <img height="17" src="/Jsupload/leftlist_bottom.jpg" width="200" /></td>
 </tr>
</table>
</body>
</html>
 

********************日历特效***********
<pre>
<!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> JS 日历webjx.com </title>
  <meta name="author" content="网页教学网">
  <meta name="keywords" content="js日历,calender">
  <meta name="description" content="js日历">
  <script type="text/javascript">
function HS_DateAdd(interval,number,date){
 number = parseInt(number);
 if (typeof(date)=="string"){var date = new Date(date.split("-")[0],date.split("-")[1],date.split("-")[2])}
 if (typeof(date)=="object"){var date = date}
 switch(interval){
 case "y":return new Date(date.getFullYear()+number,date.getMonth(),date.getDate()); break;
 case "m":return new Date(date.getFullYear(),date.getMonth()+number,checkDate(date.getFullYear(),date.getMonth()+number,date.getDate())); break;
 case "d":return new Date(date.getFullYear(),date.getMonth(),date.getDate()+number); break;
 case "w":return new Date(date.getFullYear(),date.getMonth(),7*number+date.getDate()); break;
 }
}
function checkDate(year,month,date){
 var enddate = ["31","28","31","30","31","30","31","31","30","31","30","31"];
 var returnDate = "";
 if (year%4==0){enddate[1]="29"}
 if (date>enddate[month]){returnDate = enddate[month]}else{returnDate = date}
 return returnDate;
}
function WeekDay(date){
 var theDate;
 if (typeof(date)=="string"){theDate = new Date(date.split("-")[0],date.split("-")[1],date.split("-")[2]);}
 if (typeof(date)=="object"){theDate = date}
 return theDate.getDay();
}
function HS_calender(){
 var lis = "";
 var style = "";
 /*可以把下面的css剪切出去独立一个css文件webjx.com*/
 style +="<style type='text/css'>";
 style +=".calender { width:170px; height:auto; font-size:12px; margin-right:14px; background:url(calenderbg.gif) no-repeat right center #fff; border:1px solid #397EAE; padding:1px}";
 style +=".calender ul {list-style-type:none; margin:0; padding:0;}";
 style +=".calender .day { background-color:#EDF5FF; height:20px;}";
 style +=".calender .day li,.calender .date li{ float:left; width:14%; height:20px; line-height:20px; text-align:center}";
 style +=".calender li a { text-decoration:none; font-family:Tahoma; font-size:11px; color:#333}";
 style +=".calender li a:hover { color:#f30; text-decoration:underline}";
 style +=".calender li a.hasArticle {font-weight:bold; color:#f60 !important}";
 style +=".lastMonthDate, .nextMonthDate {color:#bbb;font-size:11px}";
 style +=".selectThisYear a, .selectThisMonth a{text-decoration:none; margin:0 2px; color:#000; font-weight:bold}";
 style +=".calender .LastMonth, .calender .NextMonth{ text-decoration:none; color:#000; font-size:18px; font-weight:bold; line-height:16px;}";
 style +=".calender .LastMonth { float:left;}";
 style +=".calender .NextMonth { float:right;}";
 style +=".calenderBody {clear:both}";
 style +=".calenderTitle {text-align:center;height:20px; line-height:20px; clear:both}";
 style +=".today { background-color:#ffffaa;border:1px solid #f60; padding:2px}";
 style +=".today a { color:#f30; }";
 style +=".calenderBottom {clear:both; border-top:1px solid #ddd; padding: 3px 0; text-align:left}";
 style +=".calenderBottom a {text-decoration:none; margin:2px !important; font-weight:bold; color:#000}";
 style +=".calenderBottom a.closeCalender{float:right}";
 style +=".closeCalenderBox {float:right; border:1px solid #000; background:#fff; font-size:9px; width:11px; height:11px; line-height:11px; text-align:center;overflow:hidden; font-weight:normal !important}";
 style +="</style>";
 var now;
 if (typeof(arguments[0])=="string"){
  selectDate = arguments[0].split("-");
  var year = selectDate[0];
  var month = parseInt(selectDate[1])-1+"";
  var date = selectDate[2];
  now = new Date(year,month,date);
 }else if (typeof(arguments[0])=="object"){
  now = arguments[0];
 }
 var lastMonthEndDate = HS_DateAdd("d","-1",now.getFullYear()+"-"+now.getMonth()+"-01").getDate();
 var lastMonthDate = WeekDay(now.getFullYear()+"-"+now.getMonth()+"-01");
 var thisMonthLastDate = HS_DateAdd("d","-1",now.getFullYear()+"-"+(parseInt(now.getMonth())+1).toString()+"-01");
 var thisMonthEndDate = thisMonthLastDate.getDate();
 var thisMonthEndDay = thisMonthLastDate.getDay();
 var todayObj = new Date();
 today = todayObj.getFullYear()+"-"+todayObj.getMonth()+"-"+todayObj.getDate();
 
 for (i=0; i<lastMonthDate; i++){  // Last Month's Date
  lis = "<li class='lastMonthDate'>"+lastMonthEndDate+"</li>" + lis;
  lastMonthEndDate--;
 }
 for (i=1; i<=thisMonthEndDate; i++){ // Current Month's Date
  if(today == now.getFullYear()+"-"+now.getMonth()+"-"+i){
   var todayString = now.getFullYear()+"-"+(parseInt(now.getMonth())+1).toString()+"-"+i;
   lis += "<li><a href=javascript:void(0) class='today' title='"+now.getFullYear()+"-"+(parseInt(now.getMonth())+1)+"-"+i+"'>"+i+"</a></li>";
  }else{
   lis += "<li><a href=javascript:void(0) title='"+now.getFullYear()+"-"+(parseInt(now.getMonth())+1)+"-"+i+"'>"+i+"</a></li>";
  }
 
 }
 var j=1;
 for (i=thisMonthEndDay; i<6; i++){  // Next Month's Date
  lis += "<li class='nextMonthDate'>"+j+"</li>";
  j++;
 }
 lis += style;
 var CalenderTitle = "<a href='javascript:void(0)' class='NextMonth' onclick=HS_calender(HS_DateAdd('m',1,'"+now.getFullYear()+"-"+now.getMonth()+"-"+now.getDate()+"'),this) title='Next Month'>&raquo;</a>";
 CalenderTitle += "<a href='javascript:void(0)' class='LastMonth' onclick=HS_calender(HS_DateAdd('m',-1,'"+now.getFullYear()+"-"+now.getMonth()+"-"+now.getDate()+"'),this) title='Previous Month'>&laquo;</a>";
 CalenderTitle += "<span class='selectThisYear'><a href='javascript:void(0)' title='Click here to select other year' >"+now.getFullYear()+"</a></span>年<span class='selectThisMonth'><a href='javascript:void(0)' title='Click here to select other month'>"+(parseInt(now.getMonth())+1).toString()+"</a></span>月";
 if (arguments.length>1){
  arguments[1].parentNode.parentNode.getElementsByTagName("ul")[1].innerHTML = lis;
  arguments[1].parentNode.innerHTML = CalenderTitle;
 }else{
  var CalenderBox = style+"<div class='calender'><div class='calenderTitle'>"+CalenderTitle+"</div><div class='calenderBody'><ul class='day'><li>日</li><li>一</li><li>二</li><li>三</li><li>四</li><li>五</li><li>六</li></ul><ul class='date' id='thisMonthDate'>"+lis+"</ul></div><div class='calenderBottom'><a href='javascript:void(0)' class='closeCalender' href=javascript:void(0) title='"+todayString+"'>Today</a></span></span></div></div>";
  return CalenderBox;
 }
}
function _selectThisDay(d){
 var boxObj = d.parentNode.parentNode.parentNode.parentNode.parentNode;
  boxObj.targetObj.value = d.title;
  boxObj.parentNode.removeChild(boxObj);
}
function closeCalender(d){
 var boxObj = d.parentNode.parentNode.parentNode;
  boxObj.parentNode.removeChild(boxObj);
}
function CalenderselectYear(obj){
  var opt = "";
  var thisYear = obj.innerHTML;
  for (i=1970; i<=2020; i++){
   if (i==thisYear){
    opt += "<option value="+i+" selected>"+i+"</option>";
   }else{
    opt += "<option value="+i+">"+i+"</option>";
   }
  }
  opt = "<select onblur='selectThisYear(this)' onchange='selectThisYear(this)' style='font-size:11px'>"+opt+"</select>";
  obj.parentNode.innerHTML = opt;
}
function selectThisYear(obj){
 HS_calender(obj.value+"-"+obj.parentNode.parentNode.getElementsByTagName("span")[1].getElementsByTagName("a")[0].innerHTML+"-1",obj.parentNode);
}
function CalenderselectMonth(obj){
  var opt = "";
  var thisMonth = obj.innerHTML;
  for (i=1; i<=12; i++){
   if (i==thisMonth){
    opt += "<option value="+i+" selected>"+i+"</option>";
   }else{
    opt += "<option value="+i+">"+i+"</option>";
   }
  }
  opt = "<select onblur='selectThisMonth(this)' onchange='selectThisMonth(this)' style='font-size:11px'>"+opt+"</select>";
  obj.parentNode.innerHTML = opt;
}
function selectThisMonth(obj){
 HS_calender(obj.parentNode.parentNode.getElementsByTagName("span")[0].getElementsByTagName("a")[0].innerHTML+"-"+obj.value+"-1",obj.parentNode);
}
function HS_setDate(inputObj){
 var calenderObj = document.createElement("span");
 calenderObj.innerHTML = HS_calender(new Date());
 calenderObj.style.position = "absolute";
 calenderObj.targetObj = inputObj;
 inputObj.parentNode.insertBefore(calenderObj,inputObj.nextSibling);
}
  </script>
  <style>
  body {font-size:12px}
  td {text-align:center}
  h1 {font-size:26px;}
  h4 {font-size:16px;}
  em {color:#999; margin:0 10px; font-size:11px; display:block}
  </style>
 </head>
 <body>
<h1>Date Picker</h1>
<h4 style="border-bottom:1px solid #ccc">ver:1.0</h4>
<table border=1 width=400 height=150>
 <tr>
  <td>文本文本文本</td>
  <td>点击输入框</td>
  <td>文本文本文本</td>
 </tr>
 <tr>
  <td>点击输入框</td>
  <td><input type="text" style="width:70px" onfocus="HS_setDate(this)">文本</td>
  <td>文本文本文本</td>
 </tr>
 <tr>
  <td>文本文本文本</td>
  <td>点击输入框</td>
  <td>文本<input type="text" style="width:70px" onfocus="HS_setDate(this)">文本</td>
 </tr>
</table>
<ul>
<li>不需要其他框架类库</li>
<li>支持ie6、firefox、opera</li>
<li>点击年份与月份可以下拉选择</li>
</ul>
 </body>
</html>
</pre>
 
********************IBM DB2上机操作指南--常用命令***********
IBM DB2上机操作指南
1.启动实例(db2inst1):实例相当于informix中的服务
db2start
2.停止实例(db2inst1):
db2stop
3.列出所有实例(db2inst1)
db2ilist
5.列出当前实例:
db2 get instance
4.察看示例配置文件:
db2 get dbm cfg|more
5.更新数据库管理器参数信息:
db2 update dbm cfg using para_name para_value
6.创建数据库:
db2 create db test
7.察看数据库配置参数信息
db2 get db cfg for test|more
8.更新数据库参数配置信息
db2 update db cfg for test using para_name para_value
10.删除数据库:
db2 drop db test
11.连接数据库
db2 connect to test
11.列出所有表空间的详细信息。
db2 list tablespaces show detail
12.列出容器的信息
db2 list tablespace containers for tbs_id show detail
13.创建表:
db2 ceate table tb1(id integer not null,name char(10))
14.列出所有表
db2 list tables
12.插入数据:
db2 insert into tb1 values(1,’sam’);
db2 insert into tb2 values(2,’smitty’);
13.查询数据:
db2 “select * from tb1”
14.删除数据:
db2 delete from tb1 where id=1
15.创建索引:
db2 create index idx1 on tb1(id);
16.创建视图:
db2 create view view1 as select id from tb1
17.查询视图:
db2 select * from view1
18.节点编目
db2 catalog tcp node node_name remote server_ip server server_port
19.察看端口号
db2 get dbm cfg|grep SVCENAME
20.节点的附接
db2 attach to node_name
21.察看本地节点
db2 list node direcotry
22.节点反编目
db2 uncatalog node node_name
23.数据库编目
db2 catalog db db_name as db_alias at node node_name
24.察看数据库的编目
db2 list db directory
25.连接数据库
db2 connect to db_alias user user_name using user_password
26.数据库反编目
db2 uncatalog db db_alias
27.导出数据
db2 export to myfile of ixf messages msg select * from tb1
28.导入数据
db2 import from myfile of ixf messages msg replace into tb1
29.导出数据库的所有表数据
db2move test export
30.生成数据库的定义
db2look -d db_alias -a -e -m -l -x -f -o db2look.sql
31.创建数据库
db2 create db test1
32.生成定义
db2 -tvf db2look.sql
33.导入数据库所有的数据
db2move db_alias import
34.重组检查
db2 reorgchk
35.重组表tb1
db2 reorg table tb1
36.更新统计信息
db2 runstats on table tb1
37.备份数据库test
db2 backup db test
38.恢复数据库test
db2 restore db test
39. 拥有实例的所有程序列表
db2 list application
40.db2 terminate
41.查看数据表结构
db2 “describe select * from ggwdxtcs”
/*启动命令界面 */    db2cmd
/*查看帮助*/  db2 ? *
/*连接数据库*/   db2 connecct to <库名> user <用户名> using <用户密码>
/*查看数据库实例*/ db2ilist
/*启动数据库*/  db2start
/*停止数据库应用*/ db2 force applications all
/*停数据库*/  db2stop
/*查看表空间*  db2 list tablespaces show detail

/*查看表是否有记录*/ db2 select count(*) from <表名>
/*从文本导入到数据库表中*/ db2 import from ***.ixf of ixf modified by forcein commitcount 1000 insert into <表名>
   
modified by forcein  /*数据库数据在AIX 和 windows 不同版本之间的格式转换*/
       
commitcount **** /*防止数据库提交过多,引起交易日志满,1000-5000 为宜*/
例子:db2 "import from c:/zj/321104/bbsybsj.ixf of ixf modified by forcein insert into bbsybsj"
/*查看sql语句错误解释*/ db2 ? sql**** ****为四位出错编码,不足位前补0
 
db2 ? “sqlstate”
db2 ? sqlstate=42884
db2 “select * from syscat.functions” |grep –i rtrim
db2 “select * from syscat.indexes”
表增加列
db2 alter table 表名 add column 字段名 varchar(4)(字段类型)
修改表里的字段
db2 update 表名 set 字段名='xxx' where .....

********************MyEclipse使用技巧和快捷键_记录***********
(1)Ctrl+M切换窗口的大小
(2)Ctrl+Q跳到最后一次的编辑处
(3)F2当鼠标放在一个标记处出现Tooltip时候按F2则把鼠标移开时Tooltip还会显示即Show Tooltip Description。
            F3跳到声明或定义的地方。
            F5单步调试进入函数内部。
            F6单步调试不进入函数内部,如果装了金山词霸2006则要把“取词开关”的快捷键改成其他的。
            F7由函数内部返回到调用处。
            F8一直执行到下一个断点。
(4)Ctrl+Pg~对于XML文件是切换代码和图示窗口
(5)Ctrl+Alt+I看Java文件中变量的相关信息
(6)Ctrl+PgUp对于代码窗口是打开“Show List”下拉框,在此下拉框里显示有最近曾打开的文件
(7)Ctrl+/ 在代码窗口中是这种//~注释。
            Ctrl+Shift+/ 在代码窗口中是这种/*~*/注释,在JSP文件窗口中是<!--~-->。
(8)Alt+Shift+O(或点击工具栏中的Toggle Mark Occurrences按钮) 当点击某个标记时可使本页面中其他地方的此标记黄色凸显,并且窗口的右边框会出现白色的方块,点击此方块会跳到此标记处。
(9)右击窗口的左边框即加断点的地方选Show Line Numbers可以加行号。
(10)Ctrl+I格式化激活的元素Format Active Elements。
              Ctrl+Shift+F格式化文件Format Document。
(11)Ctrl+S保存当前文件。
              Ctrl+Shift+S保存所有未保存的文件。
(12)Ctrl+Shift+M(先把光标放在需导入包的类名上) 作用是加Import语句。
              Ctrl+Shift+O作用是缺少的Import语句被加入,多余的Import语句被删除。
(13)Ctrl+Space提示键入内容即Content Assist,此时要将输入法中Chinese(Simplified)IME-Ime/Nonlme Toggle的快捷键(用于切换英文和其他文字)改成其他的。
              Ctrl+Shift+Space提示信息即Context Information。
(14)双击窗口的左边框可以加断点。
(15)Ctrl+D删除当前行。
Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)
Alt+↑ 当前行和上面一行交互位置(同上)
Alt+← 前一个编辑的页面
Alt+→ 下一个编辑的页面(当然是针对上面那条来说了)
Alt+Enter 显示当前选择资源(工程,or 文件 or文件)的属性
Shift+Enter 在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后)
Shift+Ctrl+Enter 在当前行插入空行(原理同上条)
Ctrl+Q 定位到最后编辑的地方
Ctrl+L 定位在某行 (对于程序超过100的人就有福音了)
Ctrl+M 最大化当前的Edit或View (再按则反之)
Ctrl+/ 注释当前行,再按则取消注释
Ctrl+O 快速显示 OutLine
Ctrl+T 快速显示当前类的继承结构
Ctrl+W 关闭当前Editer
Ctrl+K 参照选中的Word快速定位到下一个
Ctrl+E 快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示)
Ctrl+/(小键盘) 折叠当前类中的所有代码
Ctrl+×(小键盘) 展开当前类中的所有代码
Ctrl+Space 代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的热键,也可以暂用Alt+/来代替)
Ctrl+Shift+E 显示管理当前打开的所有的View的管理器(可以选择关闭,激活等操作)
Ctrl+J 正向增量查找(按下Ctrl+J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutes line中显示没有找到了,查一个单词时,特别实用,这个功能Idea两年前就有了)
Ctrl+Shift+J 反向增量查找(和上条相同,只不过是从后往前查)
Ctrl+Shift+F4 关闭所有打开的Editer
Ctrl+Shift+X 把当前选中的文本全部变味小写
Ctrl+Shift+Y 把当前选中的文本全部变为小写
Ctrl+Shift+F 格式化当前代码
Ctrl+Shift+P 定位到对于的匹配符(譬如{}) (从前面定位后面时,光标要在匹配符里面,后面到前面,则反之)
下面的快捷键是重构里面常用的,本人就自己喜欢且常用的整理一下(注:一般重构的快捷键都是Alt+Shift开头的了)
Alt+Shift+R 重命名 (是我自己最爱用的一个了,尤其是变量和类的Rename,比手工方法能节省很多劳动力)
Alt+Shift+M 抽取方法 (这是重构里面最常用的方法之一了,尤其是对一大堆泥团代码有用)
Alt+Shift+C 修改函数结构(比较实用,有N个函数调用了这个方法,修改一次搞定)
Alt+Shift+L 抽取本地变量( 可以直接把一些魔法数字和字符串抽取成一个变量,尤其是多处调用的时候)
Alt+Shift+F 把Class中的local变量变为field变量 (比较实用的功能)
Alt+Shift+I 合并变量(可能这样说有点不妥Inline)
Alt+Shift+V 移动函数和变量(不怎么常用)
Alt+Shift+Z 重构的后悔药(Undo)
Eclipse快捷键大全
Ctrl+1 快速修复(最经典的快捷键,就不用多说了)
Ctrl+D: 删除当前行
Ctrl+Alt+↓ 复制当前行到下一行(复制增加)
Ctrl+Alt+↑ 复制当前行到上一行(复制增加)

本文出自 “问风尘” 博客,请务必保留此出处http

原创粉丝点击