??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
response.setHeader("Pragma","no-cache");
else if(request.getProtocol().compareTo("HTTP/1.1")==0)
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires",0);
%>
]]>
1、开始-Q设|-Q控刉板-Q管理工PQ服?/span>
停止所有Oracle服务?/span>
2、开始-Q程序-QOracle Installation ProductsQ>Universal InstallerQ卸装所有Oracle产品
3、运行regeditQ选择HKEY_LOCAL_MACHINE"SOFTWARE"ORACLEQ按del键删除这个入口?/span>
4、运行regeditQ选择HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"ServicesQ滚动这个列表,删除所有Oracle入口
5、运行regedit,选择
HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"Services"Eventlog"ApplicationQ滚动这个列表,删除所有Oracle入口
6、删除Oracle环境变量。执?#8220;控制面板”Q?#8220;pȝ”Q通过“高”选项卡中Q打开“环境变量”对话框,删除与Oracle相关的系l变量。如“JSERV”变量?#8220;Path”变量中的Oracle路径?/span>
7、删除Oracle菜单Q方法是执行“开?#8221;Q?#8220;E序”QOracle OraHome92命o?/span>
8、删?#8220;c:"Program Files"Oracle”目录?
9、重新启动计机Q重起后才能完全删除Oracle所在目?/span>
10、删除安装主目录“d:"oracle”?br />
此时Q你的系l与Oracle再也没有M关系.
如果你从来沒有用q?/span> portal server 或是似懂非懂..可以?/span>www.3721.com看看.
如果你第一ơ接触到 portalQ你会惊讶的发现... ?/span>.. Z一个网站里面充满了q么多小H口. 我们U这些小H口叫做 "portlet"Q而且每个窗口都存在着独立的信息与内容Q可以放到最大化Q羃,q原Q关闭等{。当你登陆之后,可以选择及调整自?/span> portlet 的配|,也可以设|自己喜q风格与样式,更可以设|每?/span> portlet 的资料配|?/span>
q种以客户ؓ上帝的系l,是下面要介绍?/span> portal?/span>
单地_Portal是所需要的信息。定义一Q一个机构的Portal是ؓ其信息提供的个性化和便问的单一入口炏V根据该定义Q我们从中可以得出,传统的报U,q播和注重内容的有线TV频道{都可以UCPortal。但是随着C会的不断发展,信息内容以爆炸性的速度飞涨Q这些都已经q时。随着互联|的兴vQ?/span>沟通无限、跨时I的互联|给Z带来的是机遇更是挑战Q面对如潮信息,信息高效、廉仗有向、有序的动成ؓ互联|最Ҏ的需求,从而基于Web的portal便成为新的流行,被广大的用户所接受?/span>
Portal是基?/span>webQ提供了个性化Q整合不同资源内容ƈ作ؓ信息pȝ的表C层的宿丅R整合是把不同资源的内容整合在一?/span>web面?/span>Portal 有精巧的个性化Ҏ去提供定制的内容给客户?/span>Portal面有不同的频道(portlet)lؓ不同的用户创Z同的内容?/span>
对于ZWeb?/span>PortalQ我们可以给出如下的定义二:Portal是针Ҏ定用户和团体?/span>Web站点Q它提供了如下的功能Q?/span>
内容聚合Q?/span>Content AggregationQ和发布与用L关的信息
怺协作和团体服?/span>
从高个性化的角度,为用h供服务或应用讉K
Portlet是基?/span>java技术的weblgQ由portlet容器理Q它处理hq生动态内宏V?/span>Portlets作ؓ可插入用h口组件被portal使用Q它提供了信息系l的表示层?/span>
Portlet产生的内定w被称为片断。片断是一块遵守确切规则的标记Q?/span>htmlQ?/span>xhtmlQ?/span>wmlQƈ能被其他的片断整合到一个完整的文档中。一般一?/span>portlet的内Ҏ合其?/span>portlets的内容以形成portal面。它的生命周期是?/span>portlet容器理的?/span>
Web 客户端与portlets通过portal?/span>request/response模式交互。通常用户?/span>portlets生的内容交互,例如提交表单Q会Dportlet 动作Q它Ҏ动作前进到用户交互所产生的目?/span>portlet?/span>
由某?/span>portlet产生的内容会Ҏportlet中不同的用户配置文g而不同?/span>
Portlet容器q行portletsq提供运行时环境。一?/span>portlet容器包含portlets和管理他们的生命周期。他也提?/span>portlet的参数持久化存储?/span>Portlet容器接收portal来的hQ由宿主?/span>portal中的portlet执行h?/span>Portlet容器不负责集?/span>portlet生的内容,而是?/span>portal来完成?/span>Portal?/span>portlet容器能共同徏立,作ؓ1个应用程序套件的l成部分Q也能分开独立作ؓportal的组成成分?/span>
JSR-168定义了统一?/span>Portlet开发标准接?/span>
W合该标准的Portlet可以在标准的Portal之间qxUL
WSRP定义了访问远E?/span>Portlet的统一Web Service接口
可以通过该标准和?/span>Java Portal Server之间׃nPortlet资源
CMStar是架构在J2EEq_之上Q完全支?/span>JSRQ?/span>168Q标准的PortalServer服务器。在Portlet的开发、部|上兼容其他支持JSRQ?/span>168Q标准的PortalServer?/span>
PortalServer是以Java Servlet技术ؓ基础Q实C用户理、权限控制、内容管理?/span>Portlet容器{?/span>Portal基本lg功能?/span>
Portletq行?/span>Portal Server ?/span>Portlet容器中,作ؓPortal的组仉|于Portal中?/span>
portlet APIv1.0 是基?/span>j2eev1.3?/span>portlet容器?/span>portlet是符?/span>j2ee的执行环境的?/span>
׃?/span>servlets的功能相|相应的概念,命名Q?/span>portlet的行为和servlet 规范2.3怼?/span>
Portlet 容器?/span>servlet容器的扩展。同样地Q?/span>portlet容器能由现有?/span>servlet容器构徏Q能实现servlet容器的所有功能。不?/span>portlet容器是怎么实现Q它的运行环境假定支?/span>servlet规范2.3的?/span>Portlet产生标记片断?/span>Portal通常l?/span>portlet产生的标记片断加了标题,控制按钮和其他的装饰Q这个新的片断叫portletH口。然?/span>portal整合portletH口到完整的文gQ?/span>portal面
Portlets q行?/span>portlet容器内?/span>Portlet容器接收portlets产生的内宏V典型的Q?/span>portlet容器?/span>portlet内容传到portal?/span>Portal serverҎportlet产生的内容创?/span>portal面Qƈ传送给客户端,由客L昄?/span>
客户使用客户l端讉Kportal。在收到h后,portal判断满h?/span>portlets列表?/span>Portal通过portlet容器Q调?/span>portlets?/span>Portal?/span>portlet产生的片断创?/span>portal面Q同时把面q回l用戗?/span>
视图Q?/span>ViewQ:当最初ؓ用户在门L站页面上构徏 portlet Ӟ它显C在其视图方式下。这?/span> portlet 的正常操作方式?/span>
~辑Q?/span>EditQ:如果?/span> portlet 支持该方式,?/span> portlet 对用h供页面以便按其本w的需要定?/span> portlet。例如,portlet 能ؓ用户提供面来指定其位置以获取当地的天气和事件信息?/span>
帮助Q?/span>HelpQ: 如果?/span> portlet 支持该方式,?/span> portlet 对用h供帮助页面以便获取有?/span> portlet 的更多信息?/span>
正常Q?/span>NormalQ:当最初在门户|站面上构?/span> portlet Ӟ它以正常状态显CZ其它 portlet 一h列在面上?/span>
最大化Q?/span>MaximizedQ: 它显CZؓ门户|站的整个主体,替换了其它门L站的视图?/span>
最化Q?/span>MinimizedQ: 仅显C?/span> portlet 标题?/span>
此文为本人对Portal的初步认识,如有高手路过Q希望不吝言?/span>.
W?/span>1步,讄CVS的库配置文gQ模?/span>CVSROOTQ的讉K权限
ҎQ徏立超U用L工作目录 WINCVSADMIN
a.?/span>cvsnt服务器超U用?/span>administrtor 登陆 wincvs
b.CHECKOUT 库控制文?/span> checkout moudel 'cvsroot',此目录下的文件ؓCVS的高U配|文Ӟ可以在本地进行修改,提交Q本w在版本控制之中
c.修改CVSRoot的访问权限,在命令行输入如下命o #之后明,不需要输?/span> 每行命o要单独执行,q是4条命?/span>
cvs chacl default:n #取消所有用L默认权限
cvs chacl administrator:rcw #讄Administrator拥有所有权?/span> d;创徏和删?/span>;写入
cvs chown administrator #更改的拥有?/span>Administrator
cvs lsacl #察看权限的设|情?/span>
W?/span>2步,建立CVS的用?/span>
正常可以?/span>WINNT pȝ的用户作?/span>CVS 的用P讉KCVS Q但是这U方式安全性太?/span>
可以建立CVS 自己的用?/span>
a.建立WINNTpȝ用户 CVSUSERQ权限设Z般用户就可以Q只要能讉KWINNT可?/span>
b.建立密码文gPASSWD,
直接在服务端 CVSROOT 目录下徏立文件就可以 PASSWD
Z安全考虑Q不要将 passwd列在 checkoutlist 文g里面?/span>
C.建立CVS用户
?/span>WINCVS 命o行下输入命o
cvs passwd -a -r cvsuser zxh #建立ZXH用户与系l用?/span>cvsuser有一L权限,回R后提C入两ơ口?/span>
cvs passwd -a -r cvsuser lxw #建立lxw用户与系l用?/span>cvsuser有一L权限,回R后提C入两ơ口?/span>
cvs passwd -a -r administratro administrator #建立administrator用户与系l用?/span>administrator有一L权限,回R后提C入两ơ口?/span>
可以看到PASSWD 文g多了两行
zxh:CUXQwLMdoZHNs:cvsuser #中间为加密的密码,密码使用Unix标准?/span>crypt()函数加密
lxw:ZTUCMKUkZ6ap2:cvsuser
administrator:oN2Stm4NIf31Q:administrator
W?/span>3?/span>, 使用CVS用户登陆
׃CVS 在默认模式下,是采用系l用L陆的,q就要修攚w|文?/span> CONFIG
讄文gCONFIGZ改状?/span>
加入如下一?/span>
SystemAuth=no #yes 默认?/span>,表示 如果用户?/span>PASSWD文g中不存在,qpȝ用户查权限是否正?/span>
#no 表示?/span>PASSWD查用户密码权限是否正?/span>
之后提交
Q在讄CONFIG 文gSystemAuth=no 之后
需要在cvs 控制目录cvsroot\ 下徏?/span>admin文g
q个文g是指?/span>CVSNT的管理员列表的文ӞCVSNTҎq个文g来判断一个用h否是理员。文件的内容很是一个用户列表。如下:
user1
user2
user3
q些代表user1,user2,user3都是理?/span> Q?/span>
在此之前 cvs服务器的管理员用户作ؓ自己的管理员用户的)
W?/span>4?/span>,加入文g WRITERS ,READERS 控制用户的读写权?/span>
?/span>cvsroot目录下加入两个文本文ӞWRITERS ,READERS
其每行内容ؓ 用户?/span> 回R
只有加入WRITERS中的用户才能q行提交
加入READERS中的用户只能d
同时在两个文件中的用户只能读?/span>
?/span>writers文g中加入如?/span>
zxh
lxw
administrator
W?/span>5步, 配置CVS库模块文?/span>——modules
a.?/span>MODUES文g设ؓ可编辑状?/span>
b.?/span>MOUDES 加入如下3?/span>
CVSRoot CVSRoot
大狼的工作目?/span> -a lxwDIR
开心的工作目录 -a ZXHDIR
c.保存,提交 COMMIT
W?/span>6?/span>, ?/span>2个用户分别上传工作目?/span>
选中LXW的工作目?/span>'LXWDIR' IMPORT MODULE
选中ZXH的工作目?/span>'ZXHDIR' IMPORT MODULE
注意:上传的目录不能ؓI目?/span>,其下必须有文?/span>(啥文仉?/span>)
上传成功?/span>,删除q?/span>2个目?/span>OR 改名
(补充一下分l的使用ҎQ?/span>
分组Q将权限相同的用户划分到一l,q样方便l护。就是角色的意思,分组使用在对模块讉K权限的划分?/span>
ҎQ?/span>
a.在服务器?/span> cvsroot 目录下新建文?/span> group
b.建立分组 group1,group2 ,group文g内容如下
group1:user1 user2 user3
group2:user5 user6 user
c
chacl -R default:n
cvs chacl -R group1:rcw
cvs lsacl
可以使,用户 user1 user2 user3 同时h对该模块的读写和控制的权?/span>
W?/span>7?/span>,下蝲目录目到本地做权限设|?/span> CHECKOUT MODULE
CHECKOUT MODULE 选择 大狼的工作目?/span> 'LXWDIR'
CHECKOUT MODULE 选择 开心的工作目录 'ZXHDIR'
做法是这L
选择 菜单\remote\checkou moudule
在打开H口?/span> 点击‘...’ 按钮
在打开H口中选择 大狼的工作目?/span>
ok 按钮
定 按钮
W?/span>8?/span> 分别讄2用户(LXW;ZXH)对各自目录的讉K权限
选中模块 LXW ,在命令行输入如下3条命?/span>,
cvs chacl -R default:n
cvs chacl -R LXW:rcw
cvs lsacl
选中模块 ZXH ,在命令行输入如下3条命?/span>,
cvs chacl -R default:n
cvs chacl -R ZXH:rcw
cvs lsacl
说明 ?/span> ‘-R ’参数表示Ҏ块的权限是递归的。解释一下:
如目录结?/span> dira
|---dira1
|---dira2
命oQ?/span>cvs chacl default:n 只对 目录 dira 有效Q而对子目录无?/span>
cvs chacl -R default:n 对目?/span>dira及其下子目录都有?/span>
W?/span>9?/span> 已经完成了设|?/span>
以用?/span> LXW OR ZXH 登陆WINCVS 只?/span>CHECKOU 各自的模?/span> LXWDIR,ZXHDIR
q行相应的开发工作了
在执行命?/span>cvs passwd -a -r cvsuser zxh 的时?/span>
在本地目?/span> CVSROOT 目录下的PASSWD文g里没有生成相关的用户和密?/span>
而在服务?/span> CVSROOT 目录下的PASSWD文g里生成了相关的用户和密码
如果是这P是一U正常现?/span>
原因是你没有?/span>passwd 控制文g加入?/span> cvs版本 控制之中?/span>文gcheckoutlist?/span>
1、在struts-config.xml文g中加?/span>
<message-resources parameter="ApplicationResources" />
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
</plug-in>
其中parameter="ApplicationResources"意味着?/font>java源代码根?/font>,?/font>src/下有一属性文?/font>ApplicationResources.propertiesQ但Z能显CZ文g信息
?/font>src/下还应有文gApplicationResources_zh_CN.propertiesQ?/font> 两文件最后打包到WEB-INF/classes下?/span>
2、利用开发工具在WEB-INF/下导?/font>validator-rules.xml?/font>validation.xml文g。这是有关验证规则及验证内容的配|文件?/span>
3、ؓ表单属性加入中文说明,如有?/font>formBeanQ名?/font>form1Q有三个属性,name?/font>height?/font>bornQ分别是姓名、n高、出w日?/span>
?/font>ApplicationResources.properties文g中加入属性的解释说明Q?/span>
errors.integer={0} 必须为整型?/font>,h意编辑框内不能有I白字符?/font>.
errors.date={0} 日期格式错误Q应?/font>
# form1
form1.name.displayname=姓名
form1.height.displayname=w高
form1.born.displayname=n日期
W一、二行不是必ȝQ但有意义?/span>
打包前执行下列批处理 native2ascii ApplicationResources.properties ApplicationResources_zh_CN.propertiesQ目的是由文?/font>ApplicationResources.properties
产生新文?/font>ApplicationResources_zh_CN.propertiesQ以便能正确昄汉字Q这个新文g也在src/下?/span>
4、ؓ了验证用户在填写表单时输入的数据Q在validation.xml文g?/font><formset></formset>之间加入如下内容
<form name="form1">
<field property="name"
depends="required">
<arg0 key="form1.name.displayname"/>
</field>
<field property="height"
depends="integer">
<arg0 key="form1.height.displayname"/>
</field>
<field property="born"
depends="required,date">
<arg0 key="form1.born.displayname"/>
<var>
<var-name>datePatternStrict</var-name>
<var-value>yyyy-MM-dd</var-value>
</var>
</field>
</form>
5、在jsp面上,?/font></body>前加?/font>strus标签:
<html:javascript formName="form1" dynamicJavascript="true" staticJavascript="true"/>
l过以上准备Q不是?/font>struts?/font><html:form></html:form>标签q是?/font>newxy?/font><nhtml:form></nhtml:form>标签Q在客户端用h交数据前都可以进行验证?/span>
但如果用struts?/font><html:form></html:form>标签Q应加入onsubmit事gQ如Q?/span>
<html:form action="/myAction.do?method=update" onsubmit="return validateForm1(this);">
....
<html:submit value=" 提交 " />
</html:form>
2 、orcle以后全面兼容java的源代码,而从ORACLE DB 9.2.0.2开?ORACLE开始用JAVA开发升U?ORACLE所有的产品.q是切消息.
3?谁都知道CS模式已经q时,BS模式才是未来的方?现在在安全和快捷两方面做的最好的当数ORACLE,WEB是未来的一?
所?请大家学东西,要有前瞻?不要老抱着VBVC不放,现在不是计算Z业的人员,也能用VBVC~出好的E序.那要我们q什么我们的价值在哪里仅仅满一个月?000?
4、ORACLE的前途是很光明的Q特别是电子商务斚w是走在世界前列的Q希望更多的E序员向q方面{UR特别是BS的ERPQORACLE是最有前途的解决ҎQ安全、速度快是两个最大的特点?/p>
5、ORACLE和JAVA的结合是最满的联姻,不会JAVAq当于对ORACLE的了解只是初U阶Dc特别是在以后的发展中,LINUX、JAVA、WEB是ORACLE的发展方向。也是世界的发展方向?/p>
30 q后的事情不用考虑了,qx楚也没用了?/p>
30 q内的Y件技术及相关问题分ؓ变化不大的和变化可能比较大的。变化不大的学会了用熟了会终w收益,变化大的要及时把握参与深度?/p>
一、变化不大的
1. Intel x86 的指令集
原因很简单,如果q些指o集发生重大变化,那这行业开发、积累的软g都不能运行了Q变化成本太高?/p>
即?2位发展到64位?28位,指o集的兼容是可以预见的?/p>
2. 操作pȝ - 启动q程
pȝ加电复位、硬件自、操作系l引对{内存管理、进E管理、硬件中断处理、操作系l其它部分引对{用?Shell 引导{这一套流E应该不会有大的变化?/p>
3. 操作pȝ - 内存理
i386 的三层内存管理模式现在还看不出有多大的变化趋ѝ操作系l的内存理模式、API也不会有大变化?/p>
4. 操作pȝ - q程Q线E)及其调度
只要操作pȝ内程序的q行是通过旉中断或其它Yg中断q行调度Q那么进E是操作pȝ调度的基本单位。如从某一天开?#8220;独立的二q制lg”成ؓ操作pȝ的基本调度单位,那可能更多的是进E控制块的变化?#8220;独立的二q制lg”的加载本w很可能是q程?/p>
5. 操作pȝ - 文gpȝ API
文gpȝ可能会不断变化,但文件系l的 API 应该不会有多大变化?/p>
6. 数据?- SQL 语言
关系数据库的理论与品技术已l非常成熟,对维护到现在已经保存的大量数据而言QSQL 语言是很难被替换的,XML 可能会?SQL 合作而不是替换。即使对象数据库理论及品成熟了QSQL 肯定被兼容?/p>
7. |络览的协议与格式 - HTTP、HTML、Javascript
q大家?HTML 再不满意Q其修改、进步的步伐也不会很快,太多的信息内容保存成q种格式了,变化的成本太高?/p>
HTTP 是与 HTML 怼的,变化不会太大。Javascript 更是如此?/p>
8. 电子邮g的协议与格式 - POP3、SMTP、MIME
POP3、SMTP、MIME 也已成大规模Q变化的成本很高?/p>
9. |络协议 - TCP/IP ?/p>
IPv4 ?IPv6 是可以看到的Q但 TCP/IP 的基本结构及 API 应该不会有多大变化。变化的成本太高?/p>
10. 微Y的Windows - Windows
除非q箋发生重大l营pQ否则微软是不会单倒下ȝQ关于这个主要不是技术的问题Q不多说。简单认?Windows 会存在很长的旉?/p>
WindowsQ品) 中的 WindowsQ窗口技术)是精华,已经很成熟,其相关的 APIQ包?GDI、消息机制、Common Controls{不会有太大变化。就以后以lg的Ş式出玎ͼ那也只是 API 的另外一UŞ式?/p>
11. 微Y的Windows - DirectX
只要老百姓还在用 WindowsQ那?DirectX 作ؓ游戏的开发^C长期的保持下厅R?/p>
12. 开源组l与 IBM ?Linux - Shell、XWindow
开源组l现在看不出M的前景衰落,IBM 已经发展了百q_他们联合推动?Linux 再活 30 q应该没问题。其基本?Shell ?XWindow l构不会有太大变化?/p>
13. OOP 语法与思想
~程语言是编写逻辑、调?API、解决问题的工具。其中的 OOP 语法现在方兴未艾Q引g~译器、虚拟机、API 都向其{变。若q年后,即ɾ~程语言又发展革命了QOOP 很可能将作ؓ其基?/p>
14. 法
可以说是数学的一部分Q包括纯数学法与应用业务逻辑或应用算法。解决问题的法的生命力是永q的Q独立于pȝ、编E语a。即使我们研I不出来新算法,但掌握某些算法是应该的,q是掌握基本软g开发知识后的长q竞争力之所在?/p>
二、变化比较大且媄响比较大?/p>
1. 产品外观、用h作界面与交互方式
产品外观、界面与交互方式的变化永无止境。像微Yq样的公司在q方面投入巨大精力。实际上q是l老百姓看的,不是l开发h员的Q但在很大程度上会媄响开发h员的产品外观设计、界面设计及交互设计?/p>
2. ~程语言、编译器及其支持库、虚拟机
具体的编E语a与编译工L选择使用是程序员、开发部门自q内部事务Q一般与pȝAPI、品市场需求、开发结果等无关。媄响编E语a与编译工L选择使用的因素非常多Q变化性很大。就一个编E语a或其相关的编译工L生命周期很长Q但也很难保证被一个开发团队长期固定用。过度沉q而局限于某个~译工具的风险很大,但不ȝC定深度很隑ց出来好东ѝ?/p>
3. 开发管理模?/p>
不同的品、项目,不同的应用^収ͼ不同的编E序语言Q需要针Ҏ的开发管理模式。即使用相同的 OOP 语法的编E语aQ针对不同的产品或编译工具其开发管理也是不同的。开发管理其实是l织开发h员利用编E语a写出l果的过E,当然应该不断地进行调整。有一些粗U条的管理理论只能进行指|真正的实跉|另一回事ѝ?/p>
4. 开发技术的应用需?/p>
随着软g应用q_厂商、开发工具厂商的不断的品升U、市场推q活动,以及C会消费热点不断的变化,市场客户对开发技术的需求不断地q行调整?br>
//校验是否为正的日期格式
function IsDate(sdate,desc){ //判断日期型是否满x式yyyy-mm-dd(10?
if (sdate.value == ""){
return true;
}
else{
if (sdate.value.length!=10){ //判断长度是否10?br> alert(desc+"错误:日期型长度必L10位!");
sdate.focus();
return false;
}
else{
var yyyy='';
var mm='';
var dd='';
s=/\d{4}[-]\d{2}[-]\d{2}/;
ok=s.exec(sdate.value);
if (ok==null){
alert(desc+"日期格式错误!\n必须?'yyyy-mm-dd'格式输入Q?);
sdate.focus();
return(false);
}
else{
yyyy=sdate.value.substring(0,4);
mm=sdate.value.substring(5,7);
dd=sdate.value.substring(8,10);
if (yyyy<1900||yyyy>2130){
alert(desc+"Error: year beyond markQ\n请重新输入!");
sdate.focus();
return(false);
}
else if(mm<0||mm>12){
alert(desc+"Error: month beyond the markQ\n请重新输入!");
sdate.focus();
return(false);
}
else if(dd<0||dd>31){
alert(desc+"Error: day beyond the mark!\n请重新输入!");
return(false);
}
else return(true);
}
}
}
}
//校验是否为正的日期旉格式
function IsDateTime(sdate,desc){ //判断日期型是否满x式yyyy-mm-dd hh:mm:ss(19?
if (sdate.value == ""){
return true;
}
else{
if (sdate.value.length!=19){ //判断长度是否10?br> alert(desc+"错误:日期型时间长度必L19位!");
sdate.focus();
return false;
}
else{
var yyyy = '';
var mm = '';
var dd = '';
var hh = '';
var mi = '';
var ss = '';
s=/\d{4}[-]\d{2}[-]\d{2}[\s]\d{2}[:]\d{2}[:]\d{2}/;
ok=s.exec(sdate.value);
if (ok==null){
alert(desc+"日期格式错误!\n必须?'yyyy-mm-dd hh:mm:ss'格式输入Q?);
sdate.focus();
return(false);
}
else{
yyyy = sdate.value.substring(0,4);
mm = sdate.value.substring(5,7);
dd = sdate.value.substring(8,10);
hh = sdate.value.substring(11,13);
mi = sdate.value.substring(14,16);
ss = sdate.value.substring(17,19);
if (yyyy<1900||yyyy>2130){
alert(desc+"Error: year beyond markQ\n请重新输入!");
sdate.focus();
return(false);
}
else if(mm<0||mm>12){
alert(desc+"Error: month beyond the markQ\n请重新输入!");
sdate.focus();
return(false);
}
else if(dd<0||dd>31){
alert(desc+"Error: day beyond the mark!\n请重新输入!");
return(false);
}
else if(hh<0||hh>24){
alert(desc+"Error: hour beyond the mark!\n请重新输入!");
return(false);
}
else if(mi<0||mi>60){
alert(desc+"Error: minute beyond the mark!\n请重新输入!");
return(false);
}
else if(ss<0||ss>60){
alert(desc+"Error: second beyond the mark!\n请重新输入!");
return(false);
}
else return(true);
}
}
}
}
//校验是否数?br>function IsNumber(snum,desc){ //判断是否合法数字Q比如:6.1,100 合法 Q?4Q?00?不合?br> if (snum.value == ""){
return false;
}
else{
s1=/[^0-9.]+/;
if (snum.value.length == 1){
s2=/[0-9]+/;
}
else{
s2=/[0-9]+[.]?[0-9]+/;
}
s3=/[.]+\w*[.]+/;
ifpoint1=snum.value.substring(snum.value.length-1,snum.value.length);
ifpoint2=snum.value.substring(0,1);
ifpoint3=snum.value.substring(1,2);
if (ifpoint1=="."||ifpoint2=="."){
alert(desc+"错误Q数字头不能?.'");
return false;
}
if (ifpoint2=="-"||ifpoint3=="-"){
alert(desc+"错误:不能?);
return false;
}
if (ifpoint2=="0"&&ifpoint3=="-"){
alert(desc+"错误Q非法数?);
return false;
}
ok1=s1.exec(snum.value);
ok2=s2.exec(snum.value);
ok3=s3.exec(snum.value);
if ((ok1==null)&&(ok2!=null)&&(ok3==null))
return true
else{
alert(desc+"非法数字Q\n请重新输入!")
return false;
}
}
}
//校验是否有标记被选择
function IsSelected(theform,desc){
var ilength = theform.elements.length;
var count = 0;
for (i=0;i<ilength;i++){
if (theform.elements[i].type=="checkbox" && theform.elements[i].checked==true){
count++;
}
}
if (count == 0){
alert("对不P您没有选择"+desc+"!");
return false;
}
else return true;
}
//校验是否有标记被选择
function IsChecked(theform,desc){
var ilength = theform.elements.length;
var count = 0;
for (i=0;i<ilength;i++){
if (theform.elements[i].type=="radio" && theform.elements[i].checked==true){
count++;
}
}
if (count == 0){
alert("对不P您没有选择"+desc+"!");
return false;
}
else return true;
}
//下拉列表判断
function IsSelectedField(fieldstr,desc){
if(fieldstr.selectedIndex>-1) return true;
else{
alert("对不P您没有选择"+desc+"!");
return false;
}
}
//校验l束日期是否大于开始日?br>function IsHighDate(fieldstr,desc){
if (!IsDate(fieldstr,desc)) return false;
else{
var sedname = fieldstr.name;
var sedvalue = fieldstr.value;
var iedlength = sedname.length;
var si = sedname.substring(iedlength-1,iedlength);
var sstname = "sd"+si;
var s = "document.form3."+sstname+".value";
var sstvalue = eval(s);
if (sstvalue == "") {
return true;
}
else if((sedvalue > sstvalue) || (sedvalue == sstvalue)){
return true;
}
else{
alert(desc+"应大于开始时?);
fieldstr.focus();
return false;
}
}
}
//日期输入判断
function IsBiggerDate(bdate,edate){
if(edate.value>=bdate.value){
return true;
}else{
alert("l止日期必须大于开始日期!");
bdate.focus();
return false;
}
}
//校验表单中动态数l大比?br>function IsDiaHigh(stheform,ilength,sbstrm,sbdesc,sestrm,sedesc,sflagm){
var i=0;
for (i=0;i<ilength;i++){
var tempflagm=sflagm+i;
var tempflagv=eval(stheform+"."+tempflagm+".checked");
if (tempflagv == true){
var tempbstrm=sbstrm+i;
var tempestrm=sestrm+i;
var tempbstrv=eval(stheform+"."+tempbstrm+".value");
var tempestrv=eval(stheform+"."+tempestrm+".value");
if (tempbstrv>tempestrv){
var j=i+1;
alert("W?+j+"行输入有误,"+sbdesc+"不应大于"+sedesc);
return false;
}
}
}
return true;
}
//表单判断
function IsOneOnly(stheform,ilength,sfieldm,sfdesc,sfield2m,sf2desc,sfvalm,descv,sflagm){
var i = 0;
var count = 0;
for (i=0;i<ilength;i++){
var j = i+1;
var tempflagm = sflagm+i;
var tempflagv = eval(stheform+"."+tempflagm+".checked");
var tempfieldm = sfieldm+i;
var tempfieldv = eval(stheform+"."+tempfieldm+".value");
if ((tempflagv == true) && (tempfieldv == "0")){
count++;
var tempfield2m = sfield2m+i;
var tempfield2v = eval(stheform+"."+tempfield2m+".value");
var tempfvalm = sfvalm+i;
var tempfvalv = eval(stheform+"."+tempfvalm+".value");
if (tempfield2v == ""){
alert("W?+j+"行的"+sf2desc+"不能为空!");
return false;
}
else{
var truefield2v = parseFloat(tempfield2v);
if (tempfvalv == ""){
var truefvalv = 0;
}
else{
var truefvalv = parseFloat(tempfvalv);
}
if (truefield2v > truefvalv){
alert("W?+j+"行的"+sf2desc+"应大?且小于当?+descv+"("+truefvalv+")!");
return false;
}
}
}
}
if (count != 1){
alert("原商品有且只能有一U?h查您的输入!");
return false;
}
return true;
}
//校验当前域值是否小于某一?>0)
function IsLower(fieldstr,descf,dvalue,descv){
if ((!IsEmpty(fieldstr,descf,"1")) || (!IsInteger(fieldstr,descf))) return false;
else{
var thisvalue = parseFloat(fieldstr.value);
if ((thisvalue == 0) || (thisvalue > dvalue)){
alert(descf+"应大?且小于当?+descv+"("+dvalue+")!");
fieldstr.focus();
return false;
}
return true;
}
}
//数字判断
function IsHigh(lfield,hfield,ldesc,hdesc){
var ltempval = lfield.value;
var htempval = hfield.value;
if (ltempval > htempval){
alert(hdesc+"不小?+ldesc);
return false;
}
else{
return true;
}
}
//数字输入
function IsNumHigh(lfield,hnum,ldesc,hdesc){
if (!IsNumber(lfield,ldesc)){
alert(ldesc+"不是数字Q请查您的输?");
lfield.focus();
return false;
}
else{
var lnum = parseFloat(lfield.value);
if (lnum < hnum){
alert(ldesc+"的值应大于"+hdesc+hnum);
lfield.focus();
return false;
}
reutrn true;
}
}
//判断长度
function IsOverLen(fieldstr,ilength,desc){
if (fieldstr.value == "") return true;
else{
var itemplen = fieldstr.value.length;
if (itemplen > ilength){
alert(desc+"的长度不应大?+ilength);
fieldstr.focus;
return false;
}
return true;
}
}
//判断下一步操?br>function IsNext(icount,desc){
if (icount > 0){
return true;
}
else{
alert("对不P文中没有"+desc+"Q不能进行下一步操作!");
return false;
}
}
//判断旉
function IsTime(ctime,desc){
if (ctime.value.length == 0) return true;
var s = /^(([0-9]|[01][0-9]|2[0-3])(:([0-9]|[0-5][0-9])){0,2}|(0?[0-9]|1[0-1])(:([0-9]|[0-5][0-9])){0,2}\s?[aApP][mM])?$/;
var ok = exec(ctime.value);
if(ok!=null){
return true;
}
else{
alert(desc+"非法旉Q\n请重新输入!");
ctime.focus();
return false;
}
}
//字符串多余空?br>function StrTrim(input){
var s=/(\s*)([\s*\S*]*)(\S+)/;
s.exec(input)
if(s.exec(input)==null){return ""}
return RegExp.$2+RegExp.$3
}
//判断是否为正?br>function IsVNumber(snum,desc){
if (snum == ""){
alert("误?+desc);
return false;
}
else{
s1=/[^0-9.]+/;
if (snum.length == 1){
s2=/[0-9]+/;
}
else{
s2=/[0-9]+[.]?[0-9]+/;
}
s3=/[.]+\w*[.]+/;
ifpoint1=snum.substring(snum.length-1,snum.length);
ifpoint2=snum.substring(0,1);
if (ifpoint1=="."||ifpoint2=="."){
window.alert(desc+"错误Q数字头不能?.'");
return(false);
}
ok1=s1.exec(snum);
ok2=s2.exec(snum);
ok3=s3.exec(snum);
if ((ok1==null)&&(ok2!=null)&&(ok3==null)){
var tempnum = parseFloat(snum);
if (tempnum > 0)
return true;
else{
alert(desc+"应大?");
return false;
}
}
else{
alert(desc+"非法数字Q\n请重新输入!");
return false;
}
}
}
//校验数量是否为整?正整?负整?0)
function IsNumberInt(snum,desc)
{
if (snum.value == "")
{
return false;
}
else
{
s1=/[^0-9]+/;
s2=/[a-z]+/;
s3=/[\-][0-9]+/;
s4=/[.]+/;
ifpoint1=snum.value.substring(snum.value.length-1,snum.value.length);
ifpoint2=snum.value.substring(0,1);
ifpoint3=snum.value.substring(1,2);
if (ifpoint1=="."||ifpoint2==".")
{
alert(desc+"错误Q数字头不能?.'");
return false;
}
if (ifpoint1=="-"&&ifpoint2=="-")
{
alert(desc+"输入数据错误Q?-'");
return false;
}
ok1=s1.exec(snum.value);
ok2=s2.exec(snum.value);
ok3=s3.exec(snum.value);
ok4=s4.exec(snum.value);
if ((ok1==null)) //0Q正整数
{
return true;
}
else
{
if (ok4==null&&ok2==null&&ok3!=null&&ifpoint2=="-"&&ifpoint3!="-")
{
//alert(desc+"整数Q!Q!");
return true;
}
else
{
if(ok2!=null)
{
alert(desc+"非法数字Q\n请重新输入!");
}
if (ok4!=null)
{
alert(desc+"数量应该为整敎ͼ\n请重新输入!");
}
return false;
}
}
}
}
//校验是否为正整数
function IsInt(snum,desc)
{
if (snum.value == ""){
return false;
}
else{
s1=/[^0-9]+/;
ifpoint1=snum.value.substring(0,1);
if (ifpoint1=="0"||ifpoint1==".")
{
alert(desc+"非正整数Q\n请重新输入!");
return false;
}
ok1=s1.exec(snum.value);
if ((ok1==null))
{ return true; }
else{
alert(desc+"非正整数Q\n请重新输入!");
return false;
}
}
}
//判断是否为正整数?
function IsInteger(snum,desc){
if (snum.value == "")
{
return false;
}
else{
s = /[0-9]+/;
s1=/[^0-9]+/;
s2=/[.]+/;
ok = s.exec(snum.value);
ok1 = s1.exec(snum.value);
ok2 = s2.exec(snum.value);
ifpoint1=snum.value.substring(0,1);
ifpoint2=snum.value.substring(1,2);
if (ifpoint1=="0"&&ifpoint2=="0")
{
alert(desc+"输入数据错误");
snum.focus();
return false;
}
if (ifpoint1=="-")
{
alert(desc+"输入数据错误");
snum.focus();
return false;
}
if (ifpoint1=="0"&&snum.value.length > 1)
{
alert(desc+"输入数据错误");
snum.focus();
return false;
}
if(ok2!=null){
alert(desc+"输入数据非整敎ͼQ?);
snum.focus();
return false;
}
if(ok!=null&&ok1==null){
var inum = parseInt(snum.value);
if(inum>2500000000){
alert(desc+"数据太大Q超_\n请重新输入!");
snum.focus();
}
else
return true;
}
else{
alert(desc+"非法数字Q\n请重新输入!");
snum.focus();
return false;
}
}
}
//校验数量是否为正整数
function IsNumberNotNav(snum,desc){
if (snum.value == "")
{
return false;
}
else
{
s1=/[^0-9]+/;
s2=/[a-z]+/;
s3=/[\-][0-9]+/;
s4=/[.]+/;
ifpoint1=snum.value.substring(snum.value.length-1,snum.value.length);
ifpoint2=snum.value.substring(0,1);
ifpoint3=snum.value.substring(1,2);
if (ifpoint1=="."||ifpoint2==".")
{
alert(desc+"错误Q数字头不能?.'");
snum.focus();
return(false);
}
ok1=s1.exec(snum.value);
ok2=s2.exec(snum.value);
ok3=s3.exec(snum.value);
ok4=s4.exec(snum.value);
if ((ok1==null)) // (ok2!=null))||(ok3!=null))
{
return true;
}
else
{
if (ok4==null&&ok2==null&&ok3!=null&&ifpoint2=="-"&&ifpoint3!="-")
{
alert(desc+"不能敎ͼ");
snum.focus();
return false;
}
else
{
if(ok2!=null)
{
alert(desc+"非法数字Q\n请重新输入!");
snum.focus();
}
if (ok4!=null)
{
alert(desc+"应该为整敎ͼ\n请重新输入!");
snum.focus();
}
return false;
}
}
}
}
//判断输入的是否ؓ数字(onkeyPress="return IsJustNum(this)")
function IsJustNum(con) {
if (event.keyCode>57||event.keyCode<48) {
return false;
}
s=/[^0-9]+/;
ok = s.exec(con.value);
if (ok==null) {
return true;
} else {
alert("输入非法字符Q\n请重新输入!");
con.value = "";
con.focus();
return false;
}
}
/**
*当失ȝ点ƈ改变内容时判断输入(onchange="IsJustNumOnCh(this)"Q?br> */
function IsJustNumOnCh(con) {
s=/[^0-9]+/;
ok = s.exec(con.value);
if (ok==null) {
return true;
} else {
alert("输入非法字符Q\n请重新输入!");
con.value = "";
con.focus();
return false;
}
}
*当失ȝ点ƈ改变内容时判断输入是否满x间格式(onchange="IsValidTimeOnCh(this,flag)"Q?br> * by
* flag=1--hour;flag=2--minute
*/
function IsValidTimeOnCh(con,flag){
s=/[^0-9]+/;
ok = s.exec(con.value);
if (ok==null)
{
if(flag==1)
{
if(con.value>=24 || con.value<0)
{
alert("请保证输入的时数小?4");
con.focus();
return false;
}
}
else if(flag==2)
{
if(con.value>=60 || con.value<0)
{
alert("请保证输入的分钟数小?0");
return false;
}
}
return true;
}
else
{
alert("输入非法字符Q\n请重新输入!");
con.value = "";
con.focus();
return false;
}
}
//判断输入的是否ؓ数字QonkeyPress="return IsJustNum(this)"Q?br>function IsValidTime(con,flag) {
if (event.keyCode>57||event.keyCode<48)
{
return false;
}
s=/[^0-9]+/;
ok = s.exec(con.value);
if (ok==null)
{
return true;
}
else
{
alert("输入非法字符Q\n请重新输入!");
con.value = "";
con.focus();
return false;
}
}
//去除字符串前后空?br>function deleteSpace(orgString) {
var org = orgString.toString();
var len = org.length;
var offset = 0;
while (offset<len&&org.charAt(offset)==" ") {
offset++;
}
while (offset<len&&org.charAt(len-1)==" ") {
len--;
}
return (offset>0||len<org.length)? org.substring(offset,len):org;
}
//判断是否为空
function IsNull(con) {
var org = deleteSpace(con.value);
if (org == ""){
alert("输入不能为空Q?);
con.focus();
return false;
} else {
return true;
}
}
* 判断输入是否为(HH:MMQ时间格?br> * @param org 原对?br> * @param flag 是否输出错误信息QalertQ,q定位焦?br> */
function IsCorrectTime(org, flag) {
if (deleteSpace(org.value).length!=5) {
if (flag) {
alert("正确的时间格式ؓ(HH:MM)Q长度ؓ5?);
org.focus();
}
return false;
}
s = /[0-9][0-9][:][0-9][0-9]/;
ok = s.exec(org.value);
if (ok==null) {
if (flag) {
alert("输入非法字符Q\n正确的时间格式ؓ(HH:MM),长度?位!");
org.focus();
}
return false;
}
var HH = org.value.substring(0,2);
var MM = org.value.substring(3,5);
if (HH<0||HH>23) {
if (flag) {
alert("输入的小时不正确Q请重新输入Q?);
org.focus();
}
return false;
}
if (MM<0||MM>59) {
if (flag) {
alert("输入的分钟不正确Q请重新输入Q?);
org.focus();
}
return false;
}
return true;
}
/**
* 判断输入是否为(YYYYMMQ日期格?br> * @param org 原对?br> * @param flag 是否输出错误信息QalertQ,q定位焦?br> */
function IsCorrectDateMonth(org, flag) {
if (deleteSpace(org.value).length!=6) {
if (flag) {
alert("正确的日期格式ؓ(YYYYMM)Q长度ؓ6位!");
org.focus();
}
return false;
}
s = /[^0-9]+/;
ok = s.exec(org.value);
if (ok!=null) {
if (flag) {
alert("输入非法字符Q\n正确的日期格式ؓ(YYYYMM),长度?位!");
org.focus();
}
return false;
}
var yyyy = org.value.substring(0,4);
var mm = org.value.substring(4,6);
if (yyyy<1900||yyyy>2130){
if (flag) {
alert("输入的年份不正确Q请重新输入Q?);
org.focus();
}
return false;
}
else if(mm<1||mm>12){
if (flag) {
alert("输入的月份不正确Q请重新输入Q?);
org.focus();
}
return false;
}
return true;
}
/*昄隐藏文本字段*/
function codeFold(tbl, divid)
{
butt = tbl.rows[0].cells[1];
with (document.getElementById(divid).style){
if(visibility == "visible"||visibility =='')
{
visibility ="hidden";
butt.innerText = "?;
}
else {
visibility = "visible";
butt.innerText = "?;
}
}
}
/*选择或取消所有的Checkbox*/
function doSelectAll(obj)
{
var name=obj.name;
for (i=0;i<document.forms[0].elements[name].length;i++){
document.forms[0].elements[name][i].checked = obj.checked;
}
}
//邮g判断
function e_mail(){
var e=document.form;
var reg = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;
if(!reg.exec(e.email.value)){
alert("email输入不正,h查输?");
e.date_t.focus();
return false;
}
}
在回家的路上我刻意努力的放了很多的屁。快到家了,肚子好受了很多,我觉得应该不会再Z么问题了。远q就看到了在门边{着我的奛_Q她看v来有点兴奋。她大叫着_“亲爱的,今晚Q我Z准备了一份非常奇妙的、一定会让你大吃一惊的C物?#8221;
q没q门Q女友就用一块布把我的眼睛紧紧蒙了v来,说是要给我一个惊喜!q领着我坐C于餐桌前头的椅子里,q且让我发誓不会L。突Ӟ我感到又x屁了。恰恰就在这Ӟ奛_的手机响了。这可救了我的命了!我找借口说嫌p她到另一间屋子里L电话Q她却非让我不能揭开蒙着眼睛的布Q还让我发誓Q之后才跑去另一间屋子里接电话。她一dQ我抓紧时机,把全w的重量都移C条腿上,把屁放了出来。这个屁攑־不仅声音很大Q而且气味p是腐臭的鸡蛋散发出的臭味。我几乎不能呼吸Q因此我摸到椅垫Q劲的向四周扇着Q妄图扇掉这N的气呟?
在我刚感觉好一点的时候,另一个屁又来了。我又抬赯开始放Q它听v来就象是柴a发动机快速{动的声音Q而且q一ơ气xN了。ؓ了不让自q息,我用背挥舞着椅垫扇了hQ希望气味会快散掉?
又是在一切将要恢复正常的时候,另一个屁又迫不及待的冲来了。于是我站v来,弯下腎ͼ把屁股向后上Ҏ了v来!把它放了出来。这个屁攑־真U得上是一,qn后的报纸都被ҎCC..........
我侧耛_另一间屋子里奛_交谈的声韻I因ؓ要遵守不L的诺aQ我也不敢打开眼罩Q只能在漆黑中不断放着屁,Z赶快把肚子中的气体全部排出,又不使屋里变得更臭!我解开了裤腰带Q把内裤和长裤褪C腹以下Q把屁股露了出来Qƈ摸烦着打开了n后阳台的门,几乎是将整个屁股都到阳CQ开始疯狂的放v屁来……Q啊Q好受多了!之后Q我又手舞y的用椅垫满屋ؕ扇,祷q股恶臭能赶快散?#8230;…Q就q样Q在接下来的十几分钟以内Q我一边不断的攄屁,一边不断的扇着椅垫Q终于,当我听到她在电话里说再见的时候,屋里的空气和我的肚子都已l好多了Q我q速的pM裤子Q整理了一下头发,开始优雅地、微W着{着我亲qҎ带给我惊喜?
当她走近的时候,我脸上带着满地微W,一付温存的样子。女友首先ؓҎ了这么长旉的电话向我道了歉Q然后问我有没有偷偷掀开q布。在我向她保证没有偷看之后,奛_U走了遮在我眼睛上的布,q对我说道,“意外吧!我的奛_今天非让我带她们来看看你Q她们说你在照片上很有风度,人长的很帅!喏!你看Q坐在桌前的q五位都是我单位里的好姐妹,而站在阳C的那六位是我上学时最要好的朋友!”
q时Q我才极为震惊和恐惧的发玎ͼ有一大堆奛_正围坐在我对面的桌边,而n后的阛_上则站着另一堆,她们都是来参加这个o我感到非常意外的生日宴会的。现在,她们每个上都带着一U无法言表的表情看着我,像发现了火星h………………