??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);
%>
]]>
停止所有Oracle服务?/span>
、开始-Q程序-QOracle Installation ProductsQ>Universal InstallerQ卸装所有Oracle产品
、运行regeditQ选择HKEY_LOCAL_MACHINE"SOFTWARE"ORACLEQ按del键删除这个入口?/span>
、运行regeditQ选择HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"ServicesQ滚动这个列表,删除所有Oracle入口
、运行regedit,选择
、删除Oracle环境变量。执?#8220;控制面板”Q?#8220;pȝ”Q通过“高”选项卡中Q打开“环境变量”对话框,删除与Oracle相关的系l变量。如“JSERV”变量?#8220;Path”变量中的Oracle路径?/span>
、删除Oracle菜单Q方法是执行“开?#8221;Q?#8220;E序”QOracle OraHome92命o(h)?/span>
、删?#8220;c:"Program Files"Oracle”目录?
、重新启动计机Q重起后才能完全删除Oracle所在目?/span>
、删除安装主目录“d:"oracle”?br />
此时Q你的系l与Oracle再也没有M关系.
Q你?x)惊讶的发?/span>... Z一个网站里面充满了(jin)q么多小H口. 的配|,也可以设|自己喜q风格与样式,更可以设|每?/span> portlet ?/span>
沟通无限、跨时I的互联|给Z带来的是机遇更是?xi)战Q面对如潮信息,信息高效、廉仗有向、有序的动成ؓ(f)互联|最Ҏ(gu)的需求,PortalQ提供了(jin)个性化Q整合不同资源内容ƈ作ؓ(f)信息pȝ的表C层的宿丅R整合是把不同资源的内容整合在一?/span>web有精巧的个性化Ҏ(gu)去提供定制的内容给客户?/span>Portallؓ(f)不同的用户创Z同的内容?/span>
?/span>Portal是针Ҏ(gu)定用户和团体?/span>WebQ和发布与用L(fng)关的信息
Portlet技术的web容器理Q它处理hq生动态内宏V?/span>Portlets使用Q它提供?jin)信息系l的表示层?/span>
PortletQ?/span>xhtmlQƈ能被其他的片断整合到一个完整的文档中。一般一?/span>portlet的内容以形成portal容器理的?/span>
Web 通过portal模式交互。通常用户?/span>portlets动作Q它Ҏ(gu)动作前进到用户交互所产生的目?/span>portlet产生的内容会(x)Ҏ(gu)portletPortletq提供运行时环境。一?/span>portlet和管理他们的生命周期。他也提?/span>portlet容器接收portal中的portlet容器不负责集?/span>portlet来完成?/span>Portal容器能共同徏立,作ؓ(f)1的组成成分?/span>
JSR-168开发标准接?/span>
可以在标准的PortalWSRP的统一Web Service之间׃nPortletCMStarq_之上Q完全支?/span>JSRQ标准的PortalServer的开发、部|上兼容其他支持JSRQ标准的PortalServerPortalServer技术ؓ(f)基础Q实C(jin)用户理、权限控制、内容管理?/span>Portlet基本lg功能?/span>
Portlet?/span>Portlet的组仉|于Portalportlet APIv1.0 ?/span>portlet是符?/span>j2ee的功能相|相应的概念,命名Q?/span>portlet规范2.3Portlet 容器的扩展。同样地Q?/span>portlet容器构徏Q能实现servlet容器是怎么实现Q它的运行环境假定支?/span>servlet的?/span>Portlet通常l?/span>portletH口。然?/span>portalH口到完整的文gQ?/span>portalPortlets 容器内?/span>Portlet产生的内宏V典型的Q?/span>portlet内容传到portalҎ(gu)portlet面Qƈ传送给客户端,由客L(fng)昄?/span>
。在收到h后,portal列表?/span>Portal容器Q调?/span>portlets?/span>portlet面Q同时把面q回l用戗?/span>
Q:(x)当最初ؓ(f)用户在门L(fng)站页面上构徏 portlet 的正常操作方式?/span>
Q:(x)如果?/span> portlet 对用h供页面以便按其本w的需要定?/span> portlet能ؓ(f)用户提供面来指定其位置以获取当地的天气和事件信息?/span>
Q:(x) 支持该方式,?/span> portlet 的更多信息?/span>
Q:(x)当最初在门户|站面上构?/span> portlet 一h列在面上?/span>
Q:(x) Q:(x) 标题?/span>
的初步认识,如有高手路过Q希望不吝言?/span>.
W?/span>1步,讄CVS的库配置文gQ模?/span>CVSROOTQ的讉K权限
Ҏ(gu)Q徏立超U用L(fng)工作目录 WINCVSADMIN
a.?/span>cvsnt服务器超U用?/span>administrtor 登陆 wincvs
b.CHECKOUT 库控制文?/span> checkout moudel 'cvsroot',此目录下的文件ؓ(f)CVS的高U配|文Ӟ可以在本地进行修改,提交Q本w在版本控制之中
c.修改CVSRoot的访问权限,在命令行输入如下命o(h) #之后明,不需要输?/span> 每行命o(h)要单独执行,q是4条命?/span>
cvs chacl default:n #取消所有用L(fng)默认权限
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(h)行下输入命o(h)
cvs passwd -a -r cvsuser zxh #建立ZXH用户与系l用?/span>cvsuser有一L(fng)权限,回R后提C入两ơ口?/span>
cvs passwd -a -r cvsuser lxw #建立lxw用户与系l用?/span>cvsuser有一L(fng)权限,回R后提C入两ơ口?/span>
cvs passwd -a -r administratro administrator #建立administrator用户与系l用?/span>administrator有一L(fng)权限,回R后提C入两ơ口?/span>
可以看到PASSWD 文g多了(jin)两行
zxh:CUXQwLMdoZHNs:cvsuser #中间为加密的密码,密码使用Unix标准?/span>crypt()函数加密
lxw:ZTUCMKUkZ6ap2:cvsuser
administrator:oN2Stm4NIf31Q:administrator
W?/span>3?/span>, 使用CVS用户登陆
׃CVS 在默认模式下,是采用系l用L(fng)陆的,q就要修攚w|文?/span> CONFIG
讄文gCONFIGZ改状?/span>
加入如下一?/span>
SystemAuth=no #yes 默认?/span>,表示 如果用户?/span>PASSWD文g中不存在,qpȝ用户(g)查权限是否正?/span>
#no 表示?/span>PASSWD(g)查用户密码权限是否正?/span>
之后提交
Q在讄CONFIG 文gSystemAuth=no 之后
需要在cvs 控制目录cvsroot\ 下徏?/span>admin文g
q个文g是指?/span>CVSNT的管理员列表的文ӞCVSNTҎ(gu)q个文g来判断一个用h否是理员。文件的内容很是一个用户列表。如下:(x)
user1
user2
user3
q些代表user1,user2,user3都是理?/span> Q?/span>
在此之前 cvs服务器的管理员用户作ؓ(f)自己的管理员用户的)(j)
W?/span>4?/span>,加入文g WRITERS ,READERS 控制用户的读写权?/span>
?/span>cvsroot目录下加入两个文本文ӞWRITERS ,READERS
其每行内容ؓ(f) 用户?/span> 回R
只有加入WRITERS中的用户才能q行提交
加入READERS中的用户只能d
同时在两个文件中的用户只能读?/span>
?/span>writers文g中加入如?/span>
zxh
lxw
administrator
W?/span>5步, 配置CVS库模块文?/span>——modules
a.?/span>MODUES文g设ؓ(f)可编辑状?/span>
b.?/span>MOUDES 加入如下3?/span>
CVSRoot CVSRoot
大狼的工作目?/span> -a lxwDIR
开?j)的工作目?/span> -a ZXHDIR
c.保存,提交 COMMIT
W?/span>6?/span>, ?/span>2个用户分别上传工作目?/span>
选中LXW的工作目?/span>'LXWDIR' IMPORT MODULE
选中ZXH的工作目?/span>'ZXHDIR' IMPORT MODULE
注意:上传的目录不能ؓ(f)I目?/span>,其下必须有文?/span>(啥文仉?/span>)
上传成功?/span>,删除q?/span>2个目?/span>OR 改名
(补充一下分l的使用Ҏ(gu)Q?/span>
分组Q将权限相同的用户划分到一l,q样方便l护。就是角色的意思,分组使用在对模块讉K权限的划分?/span>
Ҏ(gu)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 选择 开?j)的工作目?/span> 'ZXHDIR'
做法是这L(fng)
选择 菜单\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 ’参数表示Ҏ(gu)块的权限是递归的。解释一下:(x)
如目录结?/span> dira
|---dira1
|---dira2
命o(h)Q?/span>cvs chacl default:n 只对 目录 dira 有效Q而对子目录无?/span>
cvs chacl -R default:n 对目?/span>dira?qing)其下子目录都有?/span>
W?/span>9?/span> 已经完成?jin)设|?/span>
以用?/span> LXW OR ZXH 登陆WINCVS 只?/span>CHECKOU 各自的模?/span> LXWDIR,ZXHDIR
q行相应的开发工作了(jin)
在执行命?/span>cvs passwd -a -r cvsuser zxh 的时?/span>
在本地目?/span> CVSROOT 目录下的PASSWD文g里没有生成相关的用户和密?/span>
而在服务?/span> CVSROOT 目录下的PASSWD文g里生成了(jin)相关的用户和密码
如果是这P是一U正常现?/span>
原因是你没有?/span>passwd 控制文g加入?/span> cvs版本 控制之中?/span>文gcheckoutlist?/span>
1struts-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"java,src/ApplicationResources.propertiesQ但Z(jin)能显CZ文g信息
src/ApplicationResources_zh_CN.properties WEB-INF/classes下?/span>
2WEB-INF/validator-rules.xmlvalidation.xml文g。这是有关验证规则及(qing)验证内容的配|文件?/span>
3formBeanform1nameheightbornQ分别是姓名、n高、出w日?/span>
ApplicationResources.properties文g中加入属性的解释说明Q?/span>
errors.integer={0} ,.
errors.date={0}
# form1
form1.姓名
form1.w高
form1.?gu)n日期
W一、二行不是必ȝQ但有意义?/span>
native2ascii ApplicationResources.properties ApplicationResources_zh_CN.propertiesApplicationResources.properties
ApplicationResources_zh_CN.propertiessrc/下?/span>
4validation.xml<formset></formset>之间加入如下内容
<form name="
<field property="
depends="required">
<arg0 key="form1.
</field>
<field property="
depends="integer">
<arg0 key="form1.
</field>
<field property="
depends="required,date">
<arg0 key="form1.
<var>
<var-name>datePatternStrict</var-name>
<var-value>yyyy-MM-dd</var-value>
</var>
</field>
</form>
5jsp</body>strus:
<html:javascript formName="
struts<html:form></html:form>newxy<nhtml:form></nhtml:form>标签Q在客户端用h交数据前都可以进行验证?/span>
struts<html:form></html:form>onsubmit事gQ如Q?/span>
<html:form action="/myAction.do?method=update" onsubmit="return validate
....
<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特别是?sh)子商务斚w是走在世界前列的Q希望更多的E序员向q方面{UR特别是BS的ERPQORACLE是最有前途的解决Ҏ(gu)Q安全、速度快是两个最大的特点?/p>
5、ORACLE和JAVA的结合是最满的联姻,不会(x)JAVAq当于对ORACLE的了(jin)解只是初U阶Dc(din)特别是在以后的发展中,LINUX、JAVA、WEB是ORACLE的发展方向。也是世界的发展方向?/p>
30 q后的事情不用考虑?jin),qx(chng)楚也没用?jin)?/p>
30 q内的Y件技术及(qing)相关问题分ؓ(f)变化不大的和变化可能比较大的。变化不大的学会(x)?jin)用熟?jin)?x)终w收益,变化大的要及(qing)时把握参与深度?/p>
一、变化不大的
1. Intel x86 的指令集
原因很简单,如果q些指o(h)集发生重大变化,那这行业开发、积累的软g都不能运行了(jin)Q变化成本太高?/p>
即?2位发展到64位?28位,指o(h)集的兼容是可以预见的?/p>
2. 操作pȝ - 启动q程
pȝ加电(sh)复位、硬件自(g)、操作系l引对{内存管理、进E管理、硬件中断处理、操作系l其它部分引对{用?Shell 引导{这一套流E应该不?x)有大的变化?/p>
3. 操作pȝ - 内存理
i386 的三层内存管理模式现在还看不出有多大的变化趋ѝ操作系l的内存理模式、API也不?x)有大变化?/p>
4. 操作pȝ - q程Q线E)(j)?qing)其调?/p>
只要操作pȝ内程序的q行是通过旉中断或其它Yg中断q行调度Q那么进E是操作pȝ调度的基本单位。如从某一天开?#8220;独立的二q制lg”成ؓ(f)操作pȝ的基本调度单位,那可能更多的是进E控制块的变化?#8220;独立的二q制lg”的加载本w很可能是q程?/p>
5. 操作pȝ - 文gpȝ API
文gpȝ可能?x)不断变化,但文件系l的 API 应该不会(x)有多大变化?/p>
6. 数据?- SQL 语言
关系数据库的理论与品技术已l非常成熟,对维护到现在已经保存的大量数据而言QSQL 语言是很难被替换的,XML 可能会(x)?SQL 合作而不是替换。即使对象数据库理论?qing)品成熟?jin)QSQL 肯定被兼容?/p>
7. |络览的协议与格式 - HTTP、HTML、Javascript
q大家?HTML 再不满意Q其修改、进步的步伐也不?x)很快,太多的信息内容保存成q种格式?jin),变化的成本太高?/p>
HTTP 是与 HTML 怼的,变化不会(x)太大。Javascript 更是如此?/p>
8. ?sh)子邮g的协议与格式 - POP3、SMTP、MIME
POP3、SMTP、MIME 也已成大规模Q变化的成本很高?/p>
9. |络协议 - TCP/IP ?/p>
IPv4 ?IPv6 是可以看到的Q但 TCP/IP 的基本结构及(qing) API 应该不会(x)有多大变化。变化的成本太高?/p>
10. 微Y的Windows - Windows
除非q箋(hu)发生重大l营pQ否则微软是不会(x)单倒下ȝQ关于这个主要不是技术的问题Q不多说。简单认?Windows ?x)存在很长的旉?/p>
WindowsQ品)(j) 中的 WindowsQ窗口技术)(j)是精华,已经很成熟,其相关的 APIQ包?GDI、消息机制、Common Controls{不?x)有太大变化。就以后以lg的Ş式出玎ͼ那也只是 API 的另外一UŞ式?/p>
11. 微Y的Windows - DirectX
只要老百姓还在用 WindowsQ那?DirectX 作ؓ(f)游戏的开发^C(x)长期的保持下厅R?/p>
12. 开源组l与 IBM ?Linux - Shell、XWindow
开源组l现在看不出M的前景衰落,IBM 已经发展?jin)百q_(d)他们联合推动?Linux 再活 30 q应该没问题。其基本?Shell ?XWindow l构不会(x)有太大变化?/p>
13. OOP 语法与思想
~程语言是编写逻辑、调?API、解决问题的工具。其中的 OOP 语法现在方兴未艾Q引g(jin)~译器、虚拟机、API 都向其{变。若q年后,即ɾ~程语言又发展革命了(jin)QOOP 很可能将作ؓ(f)其基?/p>
14. 法
可以说是数学的一部分Q包括纯数学法与应用业务逻辑或应用算法。解决问题的法的生命力是永q的Q独立于pȝ、编E语a。即使我们研I不出来新算法,但掌握某些算法是应该的,q是掌握基本软g开发知识后的长q竞争力之所在?/p>
二、变化比较大且媄(jing)响比较大?/p>
1. 产品外观、用h作界面与交互方式
产品外观、界面与交互方式的变化永无止境。像微Yq样的公司在q方面投入巨大精力。实际上q是l老百姓看的,不是l开发h员的Q但在很大程度上?x)?jing)响开发h员的产品外观设计、界面设计及(qing)交互设计?/p>
2. ~程语言、编译器?qing)其支持库、虚拟机
具体的编E语a与编译工L(fng)选择使用是程序员、开发部门自q内部事务Q一般与pȝAPI、品市(jng)场需求、开发结果等无关。媄(jing)响编E语a与编译工L(fng)选择使用的因素非常多Q变化性很大。就一个编E语a或其相关的编译工L(fng)生命周期很长Q但也很难保证被一个开发团队长期固定用。过度沉q而局限于某个~译工具的风险很大,但不ȝC定深度很隑ց出来好东ѝ?/p>
3. 开发管理模?/p>
不同的品、项目,不同的应用^収ͼ不同的编E序语言Q需要针Ҏ(gu)的开发管理模式。即使用相同的 OOP 语法的编E语aQ针对不同的产品或编译工具其开发管理也是不同的。开发管理其实是l织开发h员利用编E语a写出l果的过E,当然应该不断地进行调整。有一些粗U条的管理理论只能进行指|真正的实跉|另一回事ѝ?/p>
4. 开发技术的应用需?/p>
随着软g应用q_厂商、开发工具厂商的不断的品升U、市(jng)场推q活动,以及(qing)C会(x)消费热点不断的变化,?jng)场客户对开发技术的需求不断地q行调整?br>
//校验是否为正的日期格式
function IsDate(sdate,desc){ //判断日期型是否满x(chng)式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+"日期格式(g)错误!\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(chng)式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+"日期格式(g)错误!\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比如:(x)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(zhn)没有选择"+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(zhn)没有选择"+desc+"!");
return false;
}
else return true;
}
//下拉列表判断
function IsSelectedField(fieldstr,desc){
if(fieldstr.selectedIndex>-1) return true;
else{
alert("对不P(zhn)没有选择"+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查?zhn)的输入?);
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请(g)查?zhn)的输?");
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超?gu)_(d)\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;
}
}
}
}
//判断输入的是否ؓ(f)数字(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(chng)间格式(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;
}
}
//判断输入的是否ؓ(f)数字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("正确的时间格式ؓ(f)(HH:MM)Q长度ؓ(f)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正确的时间格式ؓ(f)(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("正确的日期格式ؓ(f)(YYYYMM)Q长度ؓ(f)6位!");
org.focus();
}
return false;
}
s = /[^0-9]+/;
ok = s.exec(org.value);
if (ok!=null) {
if (flag) {
alert("输入非法字符Q\n正确的日期格式ؓ(f)(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;
}
}
在回家的路上我刻意努力的放了(jin)很多的屁。快到家?jin),肚子好受了(jin)很多,我觉得应该不会(x)再Z么问题(sh)(jin)。远q就看到?jin)在门边{着我的奛_Q她看v来有点兴奋。她大叫着_(d)“亲爱的,今晚Q我Z准备?jin)一份非常奇妙的、一定会(x)让你大吃一惊的C物?#8221;
q没q门Q女友就用一块布把我的眼睛紧紧蒙?jin)v来,说是要给我一个惊喜!q领着我坐C于餐桌前头的椅子里,q且让我发誓不会(x)L(fng)。突?dng)我感到又x(chng)屁了(jin)。恰恰就在这Ӟ奛_的手机响?jin)。这可救?jin)我的命了(jin)!我找借口说嫌p她到另一间屋子里L?sh)话Q她却非让我不能揭开蒙着眼睛的布Q还让我发誓Q之后才跑去另一间屋子里接电(sh)话。她一dQ我抓紧时机,把全w的重量都移C条腿上,把屁放了(jin)出来。这个屁攑־不仅声音很大Q而且气味p是腐臭的鸡蛋散发出的臭味。我几乎不能呼吸Q因此我摸到椅垫Q劲的向四周扇着Q妄图扇掉这N的气呟?
在我刚感觉好一点的时候,另一个屁又来?jin)。我又抬赯开始放Q它听v来就象是柴a(b)发动机快速{动的声音Q而且q一ơ气x(chng)N?jin)。ؓ(f)?jin)不让自q息,我用背挥舞着椅垫扇了(jin)hQ希望气味会(x)快散掉?
又是在一切将要恢复正常的时候,另一个屁又迫不及(qing)待的冲来?jin)。于是我站v来,弯下腎ͼ把屁股向后上Ҏ(gu)?jin)v来!把它放了(jin)出来。这个屁攑־真正U得上是一,qn后的报纸都被Ҏ(gu)C(jin)C..........
我侧耛_另一间屋子里奛_交谈的声韻I因ؓ(f)要遵守不L(fng)的诺aQ我也不敢打开眼罩Q只能在漆黑中不断放着屁,Z(jin)赶快把肚子中的气体全部排出,又不使屋里变得更臭!我解开?jin)裤腰带Q把内裤和长裤褪C(jin)腹以下Q把屁股露了(jin)出来Qƈ摸烦(ch)着打开?jin)n后阳台的门,几乎是将整个屁股都到阳CQ开始疯狂的放v屁来……Q啊Q好受多?jin)!之后Q我又手舞y的用椅垫满屋ؕ扇,祷q股恶臭能赶快散?#8230;…Q就q样Q在接下来的十几分钟以内Q我一边不断的攄屁,一边不断的扇着椅垫Q终于,当我听到她在?sh)话里说再见的时候,屋里的空气和我的肚子都已l好多了(jin)Q我q速的pM裤子Q整理了(jin)一下头发,开始优雅地、微W着{着我亲qҎ(gu)带给我惊喜?
当她走近的时候,我脸上带着满地微W,一付温存的样子。女友首先ؓ(f)Ҏ(gu)?jin)这么长旉的?sh)话向我道?jin)歉Q然后问我有没有偷偷掀开q布。在我向她保证没有偷看之后,奛_U走?jin)遮在我眼睛上的布,q对我说道,“意外吧!我的奛_今天非让我带她们来看看你Q她们说你在照片上很有风度,人长的很帅!喏!你看Q坐在桌前的q五位都是我单位里的好姐妹,而站在阳C的那六位是我上学时最要好的朋友!”
q时Q我才极为震惊和恐惧的发玎ͼ有一大堆奛_正围坐在我对面的桌边,而n后的阛_上则站着另一堆,她们都是来参加这个o(h)我感到非常意外的生日宴会(x)的。现在,她们每个上都带着一U无法言表的表情看着我,像发现?jin)火星h………………