B/S系统,有哪些一件有趣的事作文bug,或者经典的bug

7,227被浏览5,345,075分享邀请回答1.3K120 条评论分享收藏感谢收起58872 条评论分享收藏感谢收起帐号安全提示
即日起穷游网将实行手机绑定实名制,绑定手机后就可以正常使用穷游的写帖、创建行程、点评、足迹、问答等功能。
穷游大洋洲
谈谈我对A,B,S,以及BUG的看法!
谈谈我对A,B,S,以及BUG的看法!
看了几天帖子,基本看懂了A,B,S以及bug的事件.
谈谈我的看法.
对于公布可以帮助穷游er省掉便利费啊,汇率损失啊,或者机场税之类的BUG.
大家都是欢迎的.确实可以帮助到大家省下不少的费用.
但是对于那些纯0机票,大面积大批量的订购,你最后不可能全部用到.
完全浪费了大家资源,扰乱了正常的秩序.这是不可取的.
对于去年底的regular票的货币转换BUG,这个BUG是不适合公布的.
因为严重损害了航空公司的利益.
如果自己需要定张倒无所谓,有人借着这个BUG大量订购,
然后拿来转卖,赚取不道德的利润,就不可取了.
这相当于抢劫.
如果是的银行POS机出问题了,有种你也去大量的取款试试看.
叛你个无期徒刑.
有人借着自己有几个粉丝,在那里拼命的解释,
解释就是掩饰!
这里确实有很多心态扭曲的人。不在少数。::emot7
================================
但是对于那些纯0机票,大面积大批量的订购,你最后不可能全部用到.
完全浪费了大家资源,扰乱了正常的秩序.这是不可取的.
原帖由 yaka88 于
08:25 发表
解释就是掩饰!
妈吖 最后个掩饰 。。。厌世。。。
原帖由 厌世 于
08:33 发表
妈吖 最后个掩饰 。。。厌世。。。
要不要申请专利保护?
又没说你,晕倒啊
好不容易事件平息点.....就让它过去吧
大家都别开贴了吧
和谐啊维稳啊
火前留名,瓜子,花生,汽水出售::emot80
原帖由 矮人狙击手 于
08:36 发表
好不容易事件平息点.....就让它过去吧
大家都别开贴了吧
和谐啊维稳啊
你看万恶的资本主义从来不要河蟹和维稳。。
公道自在人心。。。
如果是的银行POS机出问题了,有种你也去大量的取款试试看.
叛你个无期徒刑.
这种情况的发生,也只限于在天朝才有可能,对吧,哈哈.........
原帖由 wz485026 于
08:42 发表
如果是的银行POS机出问题了,有种你也去大量的取款试试看.
叛你个无期徒刑.
这种情况的发生,也只限于在天朝才有可能,对吧,哈哈.........
一般万恶的地方都是追讨不当得利。不至于无期
原帖由 矮人狙击手 于
08:36 发表
好不容易事件平息点.....就让它过去吧
大家都别开贴了吧
和谐啊维稳啊
喔,来自天朝的声音啊.
因为那是POS先出错,不是取钱的人先错,POS机的管理人有责任的
估计这帖很快也不会在廉航版看到了
现在闲人真是不少,没事干去马路转转多好啊,没准碰个瓷还能挣几百呢.
相关阅读1/3
谈谈我对A,B,S,以及BUG的看法!
穷游兴趣小组
https://www.baidu.com/s?wd=336被浏览128,020分享邀请回答China.Net),由清华的onlyer和faster开发和维护(实际上所有暗黑2的私服用的都是onlyer的版本,onlyer曾经是山寨版的开发者之一)。玩了一段时间后就想开BOT,希望得到更多更好的装备,不巧的是正好那时候私服做了外挂检测(当时暴雪的官方版本还没这功能),禁止开挂。外挂检测的方法很简单,被我轻松破解,结果是全服只有我开外挂,很爽。有趣的是GM也知道我在开,但是从来不封我帐号。他们的态度是,人家能开凭的是技术,没能力的人别眼红。开了一段时间,onlyer也没有要升级的意思。我想调戏一下他们,故意放出了外挂程序,让所有人都能开,但是留了后手,因为我已经猜到了他们会怎么改。果然很快onlyer就升级了反外挂程序。然后,就又只有我一个人在开。然后,他们放弃了,再也没有升级过反外挂。。。开BOT打装备是通过提高单位时间的打怪次数去对抗装备的掉落概率,虽然能得到一些稀有装备,但是非常耗时间和耗机器,而且再怎么开,也很难得到顶级装备,因为掉落的概率实在太低了。我想得到顶级装备。最方便的办法,是在本机先改好装备然后把存档传到服务器上。本机编辑装备容易,很多工具可以做到,上传存档是关键。一种办法是直接黑了存档服务器,登录上去换掉存档,但我觉得太费劲,没必要。我研究了CEBN游戏服务器的拓扑结构:登录服务器和存档服务器放在清华主楼,由faster(当时好象是清华的讲师)管理;游戏服务器由清华学生自己出机器,一般架设在系实验室。faster是清华老师,自己不玩游戏,掌握游戏服务器的GM是学生,自己也在游戏里玩。于是我说服了一位GM一起合作分赃,他提供游戏服务器,我通过操纵游戏服务器和存档服务器的通信,上传了存档。。。然后,获得顶级装备的结果是悲剧的,我失去了游戏的乐趣,后来进入游戏都只是为了和朋友们聊天。。。比较搞笑的是GM同学对暗黑2的装备系统不够精通,改出了一件超缀装备,拿到游戏中炫耀,被人一眼识破,灰头土脸。刚玩暗黑2的时候,版本是1.09d。这个版本持续了很长时间,一直没有升级,因为那时暴雪在集中资源开发魔兽世界。突然有一天,暗黑2升级到了1.10,原来所有的外挂都不能用了。当时用的最多的外挂是Mousepad的maphack和各种BOT,可以说开挂的没有不用maphack的。升级后maphack不能用了,等了一段时间,Mousepad也没有升级maphack的意思。于是外挂高手纷纷出动,做了各种简单版maphack,但都不如原版好用,功能也不齐全。我另辟蹊径,没有自己开发maphack,而是在原版的基础上打补丁,使得原版maphack可以在1.10上使用,具有全部功能。我本是好意,想给大家提供一个可用的全功能maphack,不料Mousepad对我很不爽,在暗黑的游戏黑客论坛上把我骂了一通。后来才知道,Mousepad迟迟不出新版maphack的原因是他当时在开发收费的新版本(之前都是免费的),我搅了他的生意。当时我也很生气,想报复他,于是把他的原版maphack逆向工程用C语言还原了出来,并在此基础上开发自己的全功能maphack,以开源的形式发布了。我把自己的maphack起名为hackmap,意思是我的maphack是hack了原版maphack得到的。1.10以后的各种maphack,除了原作者Mousepad的版本,我估计其他版本或多或少都基于或者参考了我的版本。Mousepad的版本怕再被人逆向工程,从此加了壳(自己做的壳)。暴雪的外挂检测系统叫Warden,普遍用于暴雪的各个系列游戏,如暗黑,魔兽世界,魔兽争霸,星际争霸等。Warden系统的工作原理大概是这样:游戏客户端可以不定时地从服务器下载最新的外挂检测代码,在客户端运行,检测客户端是否有作弊行为,结果反馈给服务器,检测内容包括游戏代码或数据是否被非法修改,是否有已知的外挂程序在运行等。暗黑2是从1.11版本开始引入了Warden系统,从此暴雪和黑客们开始了猫鼠游戏。暗黑2外挂程序发展出了一些反外挂技术,比如白名单、外挂程序名随机化、进程外外挂等。我的hackmap是重度进程内外挂,需要拦截上百处游戏代码,引用到很多游戏内部的数据结构,除了上述基本的防护措施,我还计划过更高级的保护技术,基本想法是利用驱动程序在内核态操纵内存页面,在Warden没有运行时启用外挂,Warden运行时则呈现干净页面,隐藏外挂。不过后来由于失去了对外挂的兴趣,没有实现。在游戏黑客的圈子里,Mousepad是我知道的顶级黑客,C语言编程能力高超,逆向工程的水平相当了得。另一个我还有印象的是一个小小黑客,荷兰人,当时大约只有13岁,用AutoIt写外挂,在MSN上跟我请教,程序写的像模像样。还记得有一个暗黑玩家给我email,以色列人,问题完全记不得了,印象深刻的是他的英语实在太烂了,当时看得我狂笑。暗黑2的游戏黑客圈子里也有人利用外挂赚钱。Mousepad是卖外挂,还有人弄了clientless bot(也就是不需要跑原版的游戏客户端),资源占用很低,通过一机多网卡多开,在电信机房租用很多服务器7x24打怪,通过卖装备赚钱。16534 条评论分享收藏感谢收起2011 条评论分享收藏感谢收起当前位置: >>
0、 需要标识符 a) 不在函数内 1、 非法表达式开始 b) 可能:丢失括号 . 2. no data found a) 可能:setInt(1,100)中,没有 100 这个值 3. 找不到符号 a) 可能:没导入包 4. 指定了无效 URL a) 可能:数据库名或 IP 错误,即连接出错 5. 类路径没有找到 a) 可能: ClassNotFoundException: oracle.jdbc.driver.OracleDriver b) 原因: 一般是指包名写错,或者没有 import 包,或者没有在类路径中找到 jar 文件 c) 解 决: 没有加载 Oracle 驱动 jar,在.bash_profile 中把 ojdbc14.jar 加进来 6. 空指针异常 a) 可能: 数据源错误 比如数据库名或 IP 错误 7. 不能执行查询 a) 可能: 数据库中表的问题,比如列名不存在 8. invalid identity a) 可能: 列名出错 9. 若在数据库中创建了 两个 sequence ,运行时出现异常可能是先后执行了多次 select 语 句,导致与原有的序列号产生冲突1 10. 表名或列名不存在 a) 可能:表不存在或者没有插入数据到表中 11. 不支持的类,类的版本错误 a) 可能:没有导入 jdk5.0,或者编译器仍为 1.4 12. MappingNotFoundException a) Maybe: In the Eclipse Not refersh , or not exist in the dirctory 13. HibernateException: /hibernate.cfg.xml not found a) Maybe1: hibernate.cfg.xml not in the root directory b) Maybe2: Could not parse configuration . c) resolve: database not connect or use another database 14. ConstraintViolationException a) Maybe: used a not true database 15. 驱动没有找到 或者 JDBC Driver not found 可能:连接数据库的驱动 jar 包不存在或者版本不一致,比如将旧的版本换成新的会造成该 类错误 16. 空指针异常 , java.lang.NullPointerException a) 可能 1:数据库连接出错,比如在 hibernate.cfg.xml 中的数据错误会导致异常。 17. 数据插入异常 ,GenericJDBCException: could not insert a) 可能 1:没有建立表或 者表中没有任何数据 b) 可能 2:插入数据后没有执行提交语句:commit 18. LazyInitializationException 或者延迟加载异常 a) 可能 1: 没有在查询语句中加 fetch 19. IdentifierGenerationException a) 可能 1:高位表没有初始化(比如 hi_value 中没有记录) 20. could not initialize a collection: [hibernate.entity.Role.modules#32768] Syntax e rror: Encountered &-& at line 1, column 132.2 a) 错误原因: &set name=&modules& table=&module-role& lazy=&false&&红色字部分中 “-”为非法字符,替换为 module_role21. could not insert collection rows: [hibernate.entity.Module.roles#1] Module.hbm.xml 文 件 的 如 下 配 置 中 加 入 inverse=在 ”true” &set name=&roles& table=&module_role& inverse=&true&&22.在部署 Struts 时,出现如下错误信息: HTTP Status 404 - Servlet action is not available type Status report message Servlet action is not available description The requested resource (Servlet action is not available) is not available. 问题原因: 1.、web.xml 文件中未配置 ActionServlet。 2、struts-config.xml 文件未配置你要访问的 Action。 3、你的 jsp 文件 form 标记中 action 属性的路径名称错误。 4、非以上三种情况。 针对以上 4 种情况相应的解决方案如下: 1 、 在 web.xml 文 件 中 加 上 ActionServlet 的 配 置 信息 ?????? /WEB-INF/struts-config.xml? ?2、在 struts-config.xml 文件检查你要访问的 Action 配置文件。 3、检查 jsp 文件 form 标记中 action 属性的路径名称是否与 struts-config.xml 文件中 action 标记的 path 属性的路径名称一致。3 4、非以上情况的解决办法就是检查 web 容器的 log 日志,如果时 tomcat 则检查下 logs 目录下的 localhost_log 文件,看里边是否记录有错误信息,然后根据错误信息提示将其纠 正。23. java.lang.NoClassDefFoundError: org/apache/commons/beanutils/Converter 缺 少 spring-framework-2.0.3\lib\jakarta-commons\commons-beanutils.jar 24. ava 代码 Caused by: java.lang.NoClassDefFoundError: org/objectweb/asm/Type 缺 少 spring-framework-2.0.3\lib\asm\asm-2.2.2.jar 包,版本不同,该包的名字有相应的区 别 java 代 码Caused by: java.lang.NoClassDefFoundError: org/dom4j/DocumentException 缺少 spring-framework-2.0.3\lib\dom4j\dom4j-1.6.1.jar 包,版本不同,该包的名字有相 应的区别 把 这 个 包 进 去 就 可 以 了 : \Spring206\lib\dom4j 、 dom4j-1.6.1.jar java 代 码 Caused by: java.lang.NoClassDefFoundError: org/apache/commons/collections/Se quencedHashMap 缺少 spring-framework-2.0.3\lib\jakarta-commons\commons-collections.jar 包,版本 不同,该包的名字有相应的区别 java 代 码Caused by: java.lang.NoClassDefFoundError: net/sf/cglib/proxy/CallbackFilter 缺少 spring-framework-2.0.3\lib\cglib\cglib-nodep-2.1_3.4
nested exception is org.hibernate.exception.SQLGrammarException: could not get next sequence valu e Caused by: org.hibernate.exception.SQLGrammarException: could not get next s equence value 原因:没有加 Sequence 或者数据库的方言写错了 26, 我的配置文件 &id name=&id& column=&id&& &generator class=&native& /& 然后我运行保存一条数据进去 The database returned no natively generated identity value 就会报这个错误 因为你 native 是根据看底层数据库的能力选择 identity, sequence 或者 hilo 中的一个 而 我建表的时候 id 没有指定 alter table `student` change `id` `id` int auto_increment 我们把我们的表的结构小小的 改动一下就没问题了 27, UpdateManager 无法启动
15:21 如果在应用程序安装过程中, 暴力中断安装 程 序 , 会 出 现 如 下 状 况 : 1.apt-get remove 和 dpkg --remove 无 法 删 除 软 件 2.UpdateManager 无法启动 3.新立得软件包管理程序无法启动 以上可能是 deb 损坏之 类造成的 sudo dpkg -r sqldveloper 正在读取软件包列表 ... 完成 正在分析软件包的依赖 关系树... 完成 E: 软件包 sqldeveloper 需要重新安装,但是我无法找到相应的安装文件。 解决方法:1. &/id&5 从 /var/lib/dpkg/status 中把对应的段删掉 重要:修改之前请先备份 在 status 中找到你对应的包删除就 OK 了... 28, Exception in thread &main& java.lang.NoClassDefFoundError: antlr/ANTLRException 少了 antlr-2.7.5H3.jar 包,从 D:\eclipse\eclipse\plugins\com.genuitec.org.hibernate.eclipse_4.1.1\myeclipse-dat a\3.0\lib 29, Caused by: java.lang.NoClassDefFoundError: javax/transaction/Synchronization Spring206\lib\j2ee\jta.jar 30, Caused by: java.lang.IllegalArgumentException: Cannot convert value of type [$Proxy3] to req uired type [business.impl.PriceBiz] for property 'priceBiz': no matching editors or c onversion strategy found 在 java 类中设置 priceBiz 时应该设置的是接口 PriceBizIf,而非实现类 18, 数组越界 可能 1: 在命令行后面需要加入参数. 可能 2:加入的参数错误 19, car is not mapped 可能 1: 在 cfg.xml 中没有增加映射的 hbm.xml 文件在&mapping.../&中 找到 可能 1: hbm.xml 文件中的 &property name =&&& 有问题, 也许是 name 的值与对应类中 的成员名不一致 30,SQLException: 无当前连接 可能 1:在比如创建帐户时没有对相应的方法添加到 20, 属性没有 缺 少&list&中去,比如这个没有加入:&value&newAccount&/value&6 &bean id=&transactionAdvisor& class=&org.springframework.aop.support.NameMatchMethodPointcutAdvisor&& &property name=&advice&& &ref bean=&advice&/& &/property& &list&&property name=&mappedNames&& &value&transfer&/value&&/list& &/bean&31,SQLException: Syntax error: Encountered &table& at line 1, column 8. 可能 1;执行 SQL 时 出 现 冲 突 , 可 能 是 SQL 语 句 中 使 用 了 关 键 字 作 为 变 量 来 用 , 比 如 update order set balance=1000000; 其中 order 被用作表名来使用,这是错误的,因为 order 是个关键字,用在 order by 中 32, Caused by: java.sql.BatchUpdateException: ORA-02291: integrity constraint (SD070 2.FK82D343CF49A4B831) violated - parent key not found Caused by: org.hibernate.exception.ConstraintViolationException: Could not execu te JDBC batch update 有 可 能 是 ID 生 成 策 略 的 问 题 , 我 将 它 XML 映 射 文 件 改 成&generator class=&increment& /&就好了 33,
16:21:43,290 ERROR [org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/OSS].[action]] - Ser vlet.service() for servlet action threw exception org.hibernate.NonUniqueObjectException: a different object with the same identifi er value was already associated with the session: [entity.Module#2] java.util.Concur7 rentModificationException 原因:已经有对象拥有了所选择的 module,用 clear(),而不是 remove(); 34, ERROR [org.apache.catalina.session.ManagerBase] - IOException while loading per sisted sessions: java.io.InvalidClassException: entity.M local class incompatibl e: stream classdesc serialVersionUID = -5445758, local class serialVe rsionUID = -484429 java.io.InvalidClassException: entity.M local class incompatible: stream classd esc serialVersionUID = -5445758, local class serialVersionUID = -297 429 在 Module 中加上一个关键字:transient 35, Caused by: java.sql.BatchUpdateException: ORA-02292: integrity constraint (SD070 2.SYS_C) violated - child record found 原因:有其他的表引用了该表的外建,所以报这个异常,如果没有引用就不会出现 36, 出现数组越界的时候 , 看看是不是循环时没有加 =, 比如 : for(int i = 1; i&arr.i++) 可 以改成 for(int i = 1; i&=arr.i++) 1.如果使用 Ant 和 Junit 是被报找不到 test,检查一下是否误用了 private 出错信息: &failure message=&No tests found in test.AllTest& type=&junit.framework.AssertionFailedError&&junit.framework.AssertionFailedError: No tests found in test.AllTest8 该错误有个很特别的特点,当你不通过 ant 来运行测试,而是通过 AllTest 类来运行的话, 可以正常运行。小心哦 2.如果遇到报:表名无效,且 jvm 报严重错误,看看是不是用了数据库的保留关键字来做 表名了,如 User。 3.使用 ant 时必须小心 ant 的 classpath 它用的不是 IDE 的 classpath,小心!4.小心下边的异常, exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) setter of xp.bean.Use rs.?& type=&net.sf.hibernate.PropertyAccessException&&java.lang.ClassCastException at xp.bean.UsersMetaClass1.setPropertyValues(&generated&) at net.sf.hibernate.persister.AbstractEntityPersister.setPropertyValues 上 次 出 现 该 错 错 误的原因是: 源文件里我的 class 类型为一个类 Contact contact 而跑到 mapping 里却成了 Set,呵呵厉 害。 5.突然间冒出大量的 NullPointException 重新 build 一下看看先。 6.=&Flush during cascade is dangerous - this might occur if an object was deleted and then re-saved by cascade& 7.Tapestry 的出错信息: Class com.bookshop.Hello does not implement the IPage interface. location: conte xt:/WEB-INF/Home.page, line 6 原因:与显示有关的哪个 java 类没有从 IPage 家族继 承。 8.使用 ant 时给出的路径好象不允许出现空格。 9. 由于使用 ant 时用 junit 做测试的话,classpath 中出现 j2ee.jar 的话,问题多多。例如9 xml 格式的 log 文件生成不了,莫名其妙的 NullPointException 等。所以我设置了两个包 个包含 j2ee.jar,为编译用;一个没有,为 junit 用 10. 进行单元测试时,在查询返回后应马上 assertNotNull() ,这样可以更快速的定位 NullPointException 11.要使用 ResourceBundle 的话,要千万小心。必须用日志记录下它的状态。还有该属性 文件应该放在 classes 下面。 12. 当要显示任何页面时,都被提示无效,那么应该检查一下 lib 目录了,还有一些很奇怪 的异常,例如你明明可以找到一个类但是服务器却提示 ClassNotDefException,那么估计 是缺少了该类所必须的包了。或者多了不兼容的包,如, xdoclet 系列包不被 struts 的 lib 目录所兼容 13.编写 clone 时从 Java 编程思想(2nd)上学到的(732): .引数传递过程中会自动产生别名 (alias)。 .没有局域对象(local objects), 只有局域性的(local)references。.reference 受范围(scope) 的限制,对象则否。 .对象的寿命从来不是 Java 的讨论议题(因为有垃圾回收机制) 14.try catch finally 的域居然 是分离的。 15.jsp 乱码的其中一个原因:charset=&gb2312& 等号&=&的两边不允许有空格。16.我的基于 Displaytag 的简单报表解决方案。 http://displaytag.sourceforge.net/ ;下 载 displaytag.jar 和 displaytag.tld displaytag.jar 放在 lib 目录,而 displaytag.tld 放在 WEB-INF 目录,在 web.xml 中为 displaytag.tld 声明一下。 &taglib&10 &taglib-uri&http://displaytag.org&/taglib-uri&; &taglib-location&/WEB-INF/displaytag.tld&/taglib-location& &/taglib& 在 jsp 里使用前,加上 &%@ taglib uri=&http://displaytag.org& prefix=&display& %& 注意该软件有个 bug,他要用的一个包 common-lang.jar 版本必须在 2.0 以上。 如果碰 到下面异常,则应坚持一下是否该包的版本问题。 java.lang.NoSuchMethodError: org.apache.commons.lang.StringUtils.capitalize(Ljava/lang/S)Ljava/lang/S 然后就可放心使用了 &display:column property = &xxx&/&其中 xxx 为对象中的带有 getter 的变量&。 定义表 格的样子,用 css 定义。如 TABLE.its THEAD TR { BACKGROUND-COLOR: #69c } TABLE.its TR.even { BACKGROUND-COLOR: #def } 在使用分页时,可能会出现这种情况,点击其他页时,弹出下载窗口,让你下载当前 jsp 页 面,这是因为你在当前页面读取了数据的缘故。解决办法为在 action 里读取数据而不是 在 jsp 里。可以参考 http://www.displaytag.org/example-paging.jsp?d-26189-p=2 17. 使 用 displaytag 时,在一列中放入多个元素 必须在 display:table 中定义一个 id &display:table name = &allBooks& class = &its& pagesize = &5& id = &item&& &displ ay:column title = &操作&& &a href =&/Bookshop/admin/bookManagement.do?action=view&id=&%=((Book)item).getI d()%&& target = &_blank& &查看&/a& &a href =&/Bookshop/admin/bookManagement.do?action=edit&id=&%=((Book)item).getId11 ()%&&&编辑&/a&&a href =&/Bookshop/admin/bookManagement.do?action=delete&id=&%=((Book)item).ge tId()%&&&删除&/a& &/display:column& 要在 displaytag 中使用链接,必须具备 paramId,否则不显示为链接 &display:column property = &product.name& href = &viewDetailV2.0.jsp& title = & 书 名& paramId=&item& paramProperty=&product.id&/& 可以这样使用 display &display:column property = &product.id& title = &ID&/& 其中 product 为对象 18.&bean:write name = &xxxx& property = &xxx&/& session.getAttribute()取到的东西。 19.实验 struts-upload 例子时要注意的地方: 1.If you would rather write this file to another file, please check here: 这一行要打 钩 2.If you checked the box to write to a file, please specify the file path here: 在 这 里要重命名如:c:\b.jpg 上传成功的话,会出现提示 The file has been written to &c:\b.jpg& 20.Hibernate 的 like 可以这么用: Query query = session.createQuery(&from src.persistent.Book as book where u pper(book.name) like :name &); .list(); 21.Hibernate 出现 duplicate import : className 异常也可能是因为忘了为持久类在 configuration 中 addClass 了 query.setString(&name&, &%&); result = query 可 以 直 接 取 到12 22.&logic:iterate id = &author& name = &authors&& name 所引用的是 session 里的 attribute。 23.如果发现要出现询问下载的情况,有可能是因为要跳转的页面出现了问题。试试在要跳 转到的页删掉 &%@ page contentType=&text/ charset=gb2312&%& 24.如果 JSP 页面跳转时出 现下边的错误信息: The request sent by the client was syntactically incorrect (Invalid path /web/shoppi ngCart was requested). 原因是 struts-config 的 action = &x& 写成了 action = &x.do& 25.在 struts 中,strut-config.xml 中,forward 时使用 redirect = &true&可以将.do 重定 向为.jsp 26.以后在判断相等性之前先用 logger 把两个值显示出来。 customer_id VARCHAR2(255) not null, (customer_id) ) 29.在 junit 中尽量使用 assertEquals 代替 assertT 30.Hibernate 如果 Child extends Parent 那么 from Parent as parent 也将会将 Child 选出来,而 from Child as child 则不会选出 Parent 31.Hibernate 使 用 hibernate 的 one-to-one 时 , 应 该 两 方 向 都 set, 否 则 会 报 password VARCHAR2(255), primary keysave NullPointException parent.setChild(child); child.setParent(parent); 32.Hibernat e 遇到下边的异常,估计是与因为外键出现了问题: java.lang.NullPointerException at13 net.sf.hibernate.persister.AbstractEntityPersister.getPropertyValue(AbstractEntityPe rsister.java:675) at net.sf.hibernate.id.ForeignGenerator.generate(ForeignGenerator.java:33) 如: * @hibernate.id generator-class = &foreign& * @hibernate.generator-param name = &property& value = &customer& * @hibernate.one-to-one name = &custmoer& class = &src.persistent.Customer& val ue 的值和 one-to-one 中 name 的值不符,则会出现上边的异常。如果不显示指定 name 则默认取成员变量名 如 Customer a 则 name = &a& 需要小心的是不是类名。 所以, 以后最好显示指定名字为好。33.出现异常: Exceptionobject references an unsaved transient instance - save the transient insta nce before flushing: src.persistent.Product 原因没有为某对象进行 set 设置, 如上边的这个就是某对象没有调用 setProduct 34. &xxx action = &/a& 不用.do 和根目录名 &a href = &b.do& 需要.do 和根目录名 35. Caused by: java.sql.SQLException: ORA-02291: 违 反 完 整 约 束 条件 (BOOKSHOP.FK4AAEE 47687CCA6B) - 未找到父项关键字 如果你觉得该做的 e 是出现这个问题,那么检查一下,是否将类的继承关系在 hibernate 的 mapping 中反映了出来。joined-subclass 或 subclass 例如 a extends b 如果持久类 c 需要 Set 的是持久类 a,那么你把 b 传入, 而 b 又没有在 mapping 中将父子 关系反映出来的话,就会出现该异常 36. 使用 DynaActionForm 需要注意的问题 在 struts-config 声明 &form-bean name=&memberloginForm& dynamic =&true& type=&org.apache.struts.14 action.DynaActionForm&& &form-property name = &name& type = &java.lang.String&/& &form-property na me = &password& type = &java.lang.String&/& &/form-bean& 在 Action 里将 form 强制转化成 DynaActionForm, 然后 get(&属性名&)就可以了 37.那位 大 侠 能 给 出 一 个 用 hibernate 进 行 分 页 得 实 际 例 子 , 学 习中! http://forum.hibernate.org.cn/viewtopic.php?t=1772 Query q = s.find(&.....&); q.setFirstResult(10); // 从 第 11 条 记 录 开 始 q.setMaxResults(100); // 取 出 100 条 ...... 38.struts 的 validate 最简单实现 1.首先准备好错误提示信息。 xxx.properties 里 errors.required={0} is required.(默认已有) 2.Form 必须从 ValidatorForm 继承 3.不可以重载 ValidatorForm 的 validate 函数 4.在 validate.xml 中为你想验证的表单进行验证设计。 例如 &form name=&logonForm&& &field property=&userName& depends=&required&& &arg0 key=&prompt.userNa me&/& (该参数将在显示错误信息是从 xxx.properties 读取 prompt.userName,填入{}方括号里, 取代 0。如果是 arg1 将将填入{1}位置,以此类推。 &/field& &/form&不需要在 action 里做任何处理。只管 forward 就行了。作为 forward 的目标页,不需要任 何有关用于处理出错信息的处理。 39.服务器报 The requested resource (/xxxx/xxx.htm) is not available. 的 很 奇 怪 的 一 个 的 可 能 原 因 在 web.xml 中 定 义 的 tld , 没 有 找 到 或 者 是 lib 目 录 下 的 包 太 多 出 现 了 问 题。 如 &taglib& &taglib-uri&/spring&/taglib-uri&15 &taglib-location&/WEB-INF/spring.tld&/taglib-location& &/taglib& 如 WEB-INF 目录下不存在 spring.tld 的话,就会报上边的错误 40. spring 的 xxx-servlet.xml 的 使 用 SimpleFormController 系 列 的 类 问 &p题: &bean id = &priceIncreaseForm& class=&PriceIncreaseFormController&& roperty name=&sessionForm&&&value&true&/value&&/property& me=&beanName&&&value&priceIncrease&/value&&/property& =&commandClass&&&value&PriceIncrease&/value&&/property& e=&formView&&&value&priceIncrease&/value&&/property& uccessView&&&value&hello&/value&&/property& nager&& &ref bean=&prodMan&/&&property na &property name &property nam&property name=&s&property name=&productMa&/property& &/bean&这里要注意几个问题: (1)上边的 PriceIncrease 是了类名,必须在 classes 里存在该类,否则报: PropertyVetoExceptionsException: 1 errors:-- ErrorCodedPropertyVetoException: message=[Failed to convert property value of type [ java.lang.String] to required ty pe [ java.lang.Class] for property named 'commandClass'; nested exception is: java .lang.IllegalArgumentException: Invalid class name [PriceIncrease]: PriceIncrease]; e rrorCode=[typeMismatch] java.lang.IllegalArgumentException: Invalid class name [PriceIncrease]: PriceIncreas e (2)&property name=&formView&&&value&priceIncrease&/value&&/property& 这 一 行 必 不 可 少 , priceIncrease 是 页 面 的 名 字 , 他 将 会 是prefix + priceIncrease + suffix 如果缺少该行,则报:16 javax.servlet.ServletException: Error in ModelAndView object or View resolution en countered by servlet with name 'pocketSpring': View to render cannot be null with ModelAndView [ModelAndView: materialized View is [null]; Model=[{priceIncreas e=PriceIncrease@148e798, org.springframework.validation.BindException.priceIncrease=org.springframework .validation.BindException: BindException: 0 errors}]] 使用 Errors 的 rejectValue 相关问 题: rejectValue( java.lang.String field, java.lang.String errorCode, java.lang.Object[] erro rArgs, java.lang.String defaultMessage) Reject the given field of the current object, using the given error description. 当 前 对象指的是 xxx-servlet.xml 中与 validator 类有联系的哪个对象。 第一个是:当前对象的属性名,必须存在 第二个是:将要从属性文件中读取的消息 第三个 是:传递给所读取的消息的参数,如: error.too-low=You have to specify a percentage higher than {0}! 第四个是: 当从属性 文件中读取消息不成功时,所 reject 的值 以 后 从 request 中 读 取 parameter 可 以 借 用 spring 的 RequestUtils 包 里 的 getStringParameter public static java.lang.String getStringParameter( javax.servlet.http.HttpServletRequest request,java.lang.String name,java.lang.String defaultVal) Get a string parameter, with a fallback value. Never throws an exception. Can pass a distinguished value to default to enable checks of whether it was supplied. 不 会17 抛异常 Hibernate 的问题:2.1rc 的问题 INFO: cache provider: net.sf.ehcache.hibernate.Provider net.sf.hibernate.HibernateException: could not instantiate CacheProvider: 解 决 办 法,2.1rc 比以前的版本多需要一个包 ehcache.jar 43.static 的问题 static 函数只可以访问 static 成员变量。 而 static 变量可以被任何成员函数访问。 44. java.lang.NoClassDefFoundError: javax/transaction/Synchronization]; 需 要 添 加 JTA.jar点子商城项目技术总结:Joy To The World Robert Bonfiglio 第一天: 1. 创建 4 个 Maven 项目,ecps-parent:Maven-archetype-quikstart 类型的 jar 项目的父工程, 用来管理下面的三个工程(通过 pom 配置文件来进行管理)。 2. ecps-core:核心 jar 工程,其他 2 个工程都继承这个工程。 3. ecps-console、ecps-portal 都是 webapp 的 war 项目、这 2 个项目依赖 ecps-core 并继承 ecps-parent。 4. Caused by: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for mybatis.sqlMap.EbBrandMapper.insert 原因: mapper.xml 中没有加入 namespace mapper.xml 中的方法和接口 mapper 的方法不对应 mapper.xml 没有加入到 mybatis-config.xml 中(即总的配置文件), 例外: 配置了 mapper 文件的包路径的除外 mapper.xml 文件名和所写的 mapper 名称不相同。 5. org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.xml.IncompleteStatementException: Could not find SQL statement to include with refid 'mybatis.sqlMap.EbBrandMapper.Base_Column_List' 解析: 在 sqlXXMapper 文件中缺少了文件:&sql id=&Base_Column_List&& WARNING - @mbggenerated This element is automatically generated by MyBatis Generator, do not modify. This element was generated on Thu Oct 31 09:42:42 CST 2013.18 BRAND_ID, BRAND_NAME, BRAND_DESC, IMGS, WEBSITE, BRAND_SORT &/sql& ? com.sun.jersey.api.client.ClientHandlerException: com.sun.jersey.api.client.ClientHandlerException: A message body writer for Java type, class com.sun.jersey.api.client.WebResource, and MIME media type, application/octet-stream, was not found at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(U RLConnectionClientHandler.java:128) 解决方案: wr.put(String.class,bytes);这句写错:传参必须bytes。 ? com.sun.jersey.api.client.UniformInterfaceException: PUT http://localhost:8099/pic/upload/.jpg returned a response status of 403 解决方案: Constants里面服务器端口一定要写正确,pic图片服务器端口: Localhost:8090,而我写的是:console的端口,故而出错。 ? ### Error querying database. 或 OUT 参数:: 2 解决方案: 发现地址写错: function submitUpload(){ var opt = { //重新指定form的action的值 url:&${path}/brand/uploadPic.do&,//这个地方的地址写错导致。 type:&post&, dateType:&text&, data:{ fileName:&imgsFile& }, success:function(responseText){ var obj = $.parseJSON(responseText); alert(&lll&); $(&#imgsImgSrc&).attr(&src&,obj.fullPath); $(&#imgs&).val(obj.fullPath); alert(obj.fullPath); }, error:function(){ alert(&系统错误&); } }; $(&#form111&).ajaxSubmit(opt); } ? 提交editBrand表单发现后台brandName没有获取到值。 原因:设置了属性:disabled=”disabled”.导致后台没有获取到值。 Cause: java.sql.SQLException: 索引中丢失 IN19 解决方案: 去掉这个属性,或者设置替代方案:readonly=”readonly”. 这样后台就可以获取到值。 ? DEBUG [org.springframework.web.servlet.DispatcherServlet] DispatcherServlet with name 'springmvc' processing POST request for [/ecps-console/item/queryItemByCondtion.do]
11:58:13,685 [http-8099-exec-8] WARN [org.springframework.web.servlet.PageNotFound] - No mapping found for HTTP request with URI [/ecps-console/item/queryItemByCondtion.do] in DispatcherServlet with name 'springmvc'查询按钮不起作用: 解决方案:发现地址写错。 ? select * from eb_ 此语句会把表锁住,别人将无法访问此表,必须等到表修改完毕提交之后,才能解锁。 这个语句运行在PL/SQL中手动修改数据。 ? FCKeditor:文本区域获取不到焦点,并且工具栏少一行,点击按钮,父页面消失不见。 解决办法: 这是由于浏览器兼容性的问题,调节浏览器模式就ok。 例如:360浏览器:从兼容模式跳到极速模式。 ? 值过多的情况。 采用批量处理,把数据封装在map集合中,然后把map集合传递给mybatis的mapper文件 insertBacth。 ? Name属性使用id的原因解析:&input type=&radio& name=&${para.featureId }& value=&${val }&&${val }& Name属性使用id, 那么表单提交: 我们可以在后台使用: request.getParameter(name 属性值);的方式来获取value值。 1. 如果是checkbox的话, 那么就需要使用: getParameterValues(name);来返回数 组形式的value值。因为其可以多选。 ? PUT:http://localhost:9094/ecps-pic/upload/111.jpg return a response status 409; 解析:这个错误的原因是由于taglibs里面地址、ecps-pic工作空间目录下upload目录 引起的。 Taglib与Constans里面地址不一致。 工作空间temp webapp下面没有upload目录。造成这一原因。 ? PL/SQL连接不了数据库的几种情况。 ? ? ? 权限不够。Win7限制了权限,需要使用管理员权限来运行。 数据库与PL/SQL位数不匹配。如:Oracle为64位,PL/SQL为32位,那么连不上。20 一、如果您的系统提示&找不到 msvcr71.dll&或&msvcr71.dll 缺失& 或者&msvcr71.dll 错误&等等,请不用担心,请把 msvcr71.dll 下载到本机。 二、直接拷贝该文件到系统目录里: 1、 Windows 95/98/Me 系统,将 msvcr71.dll 复制到 C:WindowsSystem 目录 下。 2、Windows NT/2000 系统,将 msvcr71.dll 复制到 C:WINNTSystem32 目录 下。 3、Windows XP/WIN7 系统,将 msvcr71.dll 复制到 C:WindowsSystem32 目 录下。 三、然后打开&开始-运行-输入 regsvr32 msvcr71.dll&,回车即可解决错误提 示!? 如下错误: 建不了maven 的quickstart和 wabapp项目21 解决方案:通过错误提示可以看出缺少文件,那么通过寻找目录可以发现,repository 目录里 面还有一个 repository,而我们的仓库只写了第一层 repository,故而出错。 ? Oracle 卸载多次,使得 PL/SQL 连不上数据库path == E:\oraclient_2;E:\oracle\oradata\E:\oracle\E:\Program Files\Java\jdk1.5.0_04\E:\Tomcat5028\%SystemRoot%\system3 2;%SystemRoot%;%SystemRoot%\System32\Wbem 问题出现了.随后我该成如下: path == E:\E:\oracle\oradata\E:\oracle\E:\Program Files\Java\jdk1.5.0_04\E:\Tomcat5028\%SystemRoot%\system3 2;%SystemRoot%;%SystemRoot%\System32\Wbem 打开 Path:发现确实是环境变量多了,造成连不上的根本原因就在这。 ? PL/SQL 连接数据库出错。解决方案: 还有一种坑爹的情况是 tns.ora 文件里,连接符前面有空格,如果没有动过这个文件,应该没 问题。 你 oracle 安装成功后,一直未停止数据库(即数据库是启动的) ,客户端配置成功后,应该一 直不会有什么问题。 而一旦你和我同事一样,有时把 Oracle 安装在虚拟机中,而且 Oracle 安装完毕后,没在进行 任何监听的配置,则虚拟机再启动,则就会出现 ORA-12514 的问题。如下图如下是解决思路: 根据出错信息判断出客户端未监听到实例服务名22 ? ?通过重启服务的方式启动数据库,再次连接仍无法连接服务器。 既然第一种方法不能解决问题,那就第二种方法。考虑监听 listener.ora 监听配置文件 listener.ora 中可以不必指定监听的服务名(安装 Oracle10g 后也是没有指定的) 。正常情况下一般只要数据库启动,客户端连接数据库也没有什么问题,但是有时重复 启动关闭也会出现 ORA-12514 错误。 既然 listener.ora 中没有指定监听, 我们可以在 listener.ora 文件中指定监听的实例名, 这样该问题应该可以连接。 步骤如下: ? 在 oracle 服务器 Oracle 安装目录(我的在 E:Oracle10g 下,每个人的不一样,根 据自己的情况查找)Network/admin 目录下找到 listener.ora 我的如下图所示 # listener.ora Network Configuration File: E:Oracle10gnetworkadminlistener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = E:Oracle10g) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = ORCL) (ORACLE_HOME = E:Oracle10g) (SID_NAME = ORCL) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) (ADDRESS = (PROTOCOL = TCP)(HOST = onest)(PORT = 1521)) ) ) 标红的为我添加的部分,ORCL 为监听的实例名。 ? 然后在 Oracle 服务器的服务中重新启动监听服务 ,然后在oracle 客 户 端 通 过 再 次 配 置 对 Orcl 实 例 的 监 听 , 如 下 图 所 示?结果出现如下图的提示。23 ?这时我们不要着急,只需要 oracle 服务器重新启动一下,再次连接即成功。这也是我 们配置完 listener.ora 监听后,经常忘记的。再次尝试,可以看到客户端可以连接 上 oracle 服务器了,而且 PL/SQL 再次连接也没有问题了。而有些朋友在配置客户端时, 连接数据库成功, 而使用 PL/SQL 时, 又出现了如下图所示的问题。 这又如何解决呢?为什么 oracle 客户端已经连接成功了,而 PL/SQL 确不行呢?64 位 win7 会把 32 位应用程序默认的安装到 Program Files (x86)目录下,那两个括号可能让 oracle 郁闷了。改变安装路径为一个比较“大众化”的路径,再次进行数据库连接,一切问 题都解决了1、我用 tnsping orcl 是可以成功的 24 2、我用 sqlplus username/password@orcl 也是可以连接通的我就奇怪了问题到底出在哪里了,监听重 新配置了还是报一样的错误 最后解决方法: 在 sqlnet.ora 中加了一句话: NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT) ok 这样程序就不报错了。C:\Users\Administrator&sqlplus username/pwd@orcl_5 SQL*Plus: Release 10.2.0.1.0 C Production on 星期一 5 月 21 20:29:42 2012 Copyright (c) , Oracle. All rights reserved. 连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 C 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL& tnsping 一下,看看是不是 ip 地址或者端口写错了,经过观察,确实没有任何问题。 C:\Users\Administrator&tnsping orcl_5 TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 C Production on 21-5 月 -:59 Copyright (c) , Oracle. All rights reserved. 已使用的参数文件: D:\oracle\product\10.2.0\client_1\network\admin\sqlnet.ora 已使用 TNSNAMES 适配器来解析别名 Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.5)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl))) OK (40 毫秒) C:\Users\Administrator& 转到服务器端,发现用 easy connect 连接也没有什么问题。 我们再回到错误中“ORA-12154: TNS: 无法解析指定的连接标识符”,我没用连接串,为什 么报 tns 无法解析,我们再做个测试,随便写个连接串,如下: C:\Users\Administrator&sqlplus username/pwd@sssssss SQL*Plus: Release 10.2.0.1.0 C Production on 星期一 5 月 21 21:15:13 2012 Copyright (c) , Oracle. All rights reserved. ERROR: ORA-12154: TNS: 无法解析指定的连接标识符 请输入用户名: 原来也是这个错误,也就是说,把“192.168.0.5:1521/orcl”这个当成个连接字符串了。 我们打开 sqlnet.ora 文件,里有如下两个配置项 SQLNET.AUTHENTICATION_SERVICES= (NTS) NAMES.DIRECTORY_PATH= (TNSNAMES) 重点是 NAMES.DIRECTORY_PATH 这个配置项,发现了问题。 NAMES.DIRECTORY_PATH : 配 置 网 络 连 接 时 所 使 用 的 连 接 方 式 , 一 般 情 况 有 tnsnames,hostname,onames,ezconnect,ldap 等,出问题的客户端,用的是 tnsnames,怪25 不得它把“192.168.0.5:1521/orcl”当成连接字符串来用。 解决办法: 1)sqlnet.ora 文件添加连接方式,如下: NAMES.DIRECTORY_PATH= (TNSNAMES,EZCONNECT) 2)干脆把这个参数干掉,即注释掉即可,如下: #NAMES.DIRECTORY_PATH= (TNSNAMES) 至此问题解决。出现如上的原因是,可能是大家再配置 oracle 客户端时,虽然链接成功了,步骤上可能有些错 误。大家使用 Net Cofiguration Assistant 客户端时重新配置了 Orcl,而不是添加,我们 应该如下步骤处理,就不会出问题了。 ? ? 、如果 Net Cofiguration Assistant 中已经有了 Orcl。我们可以重新配置 、如果 Net Cofiguration Assistant 中没有 Orcl,我们应该添加 示。 具体界面如下图所如果大家该步处理也没有问题了,listener.ora 修改成功,并且重新启动了 oracle 服务器, 无论 oracle 客户端还是 PL/SQL 都能够成功连接数据库了。 总结一下。当大家遇到“ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务”错误的 解决步骤: ? ? 、通过重启服务的方式启动数据库,再次连接尝试。 、如果第一种方法不可行,我们采用第二种方法 ? ? ? 正确添加 listener.ora; 重新启动了 oracle 服务器,并检查 oracle 所有服务是否启动; oracle 客户端 Net Cofiguration Assistant 正确添加或重新配置实例名26 希望该篇博文,能够解决大家的问题。 错误原因分析: ―――――――― 检查监听,发现未设置对服务名的监听(Oracle10g 默认安装后不自动设置监听) 。 当你的 tnsnames.ora 文件中的 SERVICE_NAME 没有向你想要连接的数据库服务器中的监 听器注册的时候,就会出现这个错误信息。如果你的客户端配置没有发生变化,那么数据库服务 器配置就必须进行改变,否则你用来进行连接的 SERVICE_NAME 就永远不会注册到监听器。 注册到监听器的 SERVICE_NAME 是由数据库实例的 service_names 参数来决定的。查看 参考指南中的服务器文档来找到有关当这个参数没有设置的时候, 它的默认值是如何设置的详细 信息。你可以通过明确地对其进行设置,来避免它被另一个参数的变化所影响。 你还有可能是遇到了定时的问题。如果监听器被重新启动,那么数据库实例就必须向它重新 注册。通常情况下,每 60 秒就会出现这样的问题。如果你迫不及待,那么就以数据库管理员的 身份登录到数据库服务器,并且运行“更改系统注册器” ,这样就可以强制它立即注册到监听器 中。 ―――――――――――――――――――――――――――――――――――――――― ― 解决办法: ―――――― 1. 打开文件&&OracleHome&/network/admin/listener.ora& ,你将看到如下的内容: SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = D:\oracle\product\10.2.0\db_1) (PROGRAM = extproc) ) ) 2. 将下面的语句添加到上面的语句中去。 (SID_DESC = (GLOBAL_DBNAME = ORACLE) (ORACLE_HOME = D:\oracle\product\10.2.0\db_1) (SID_NAME = ORACLE) ) 3. 文件的内容则变成了如下所示: SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = D:\oracle\product\10.2.0\db_1) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = ORACLE) (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)27 (SID_NAME = ORACLE) ) ) 4. 保存文件,然后重新启动监听服务 TNSListener 就可以了 ! 问题解决 ---------------------主动跟被动的关系 1.是让 listener 主动加载服务 原因是 添加 (SID_DESC = (SID_NAME = orcl) (ORACLE_HOME = /data/cache1/oracleDB/oracle/product/10.2.0/db_2) ) 后,在使用 lsnrctl start 监听程序时会将 listener 的服务注册到进程监视器(pmon)中 2.listener 被动加载服务 如果没有该内容,那么由实例的 pmon 进程在 listener 中注册服务,对 listener 来讲,就是 被动了。 这也就是为什么先启动监听后启动数据库能够正常连接的,反之不行的原因了。?EL 表达式异常。 第一种可能:页面有重复字段提交,比如:有 2 个 input 输入框、那么提交过去的就是一个数组形式,这样就会出错。 第二种可能:今天在做数据分页显示的时候遇到了一个问题,经过测试,证实是 Tomcat 6 的一个 bug, 我所用的版本为:apache-tomcat-6.0.36,和 7.0.30 均能复现。下面详细描述一下这个 bug: 该 bug 是在 JSTL&c:forEach&标签中发现的, 后来分析是 EL 表达式实现时产生的问题。 jsp 页面中有一个 list 需要遍历,这个 list 的类型为 ArrayList&String&,我在其中放置的数据为 (为方便我写成数组的形式):[&1&,&...&,&4&,&5&,&6&,&7&,&8&,&...&,&10&],这是一个很常见的带 页码缩略的分页导航。在展示这些数据的时候我使用了下面的代码:[html] view plaincopy1. &c:forEach var=&looper& items=&${pageHelper.pageList}&& 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. &c:choose& &c:when test=&${looper eq pageHelper.pageDot}&& &p&分页游标的 点点点&/p& &/c:when& &c:when test=&${looper eq pageHelper.pageNo}&& &p&当前页为第${looper}页面&/p& &/c:when& &c:otherwise& &p&分页游标:${looper}&/p& &/c:otherwise& 28 12.&/c:choose&13. &/c:forEach&这里 pageHelper 就是分页组件,其中预设了 pageDot 为&...&,pageNo 为当前的页码(假 设为 6) ,其他情况直接显示分页游标。在循环遍历中只不过使用了最基本的条件判断语句, 由于 pageList 在定义中已经明确指出是 List&String&, 按逻辑应该 eq 是按照字符串判断的, 但是居然出异常了:[java] view plaincopy1. javax.el.ELException: Cannot convert ... of type class java.lang.String to c lass java.lang.Long为什么会出现“类型转换错误”呢?通过分析代码走向,当进入循环后,list 中的第一条数据 是“1”,而 pageHelper.pageNo 为 long 型,此时 tomcat 的 EL 表达式解析器会把 looper 类 型转换为 Long 型而不是把 pageHelper.pageNo 类型转换为 String 进行比较,当遍历到下 一元素时, looper=&...&, 这时 looper 的类型已经确定, 比较的时候 tomcat 还要试图将 looper 转换为 Long 类型,于是就出错了。 为此我专门写了一个实例代码:[html] view plaincopy1. &c:forEach var=&looper& items=&${pageHelper.pageList}&& 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. &c:choose& &c:when test=&${looper eq fn:trim(pageHelper.pageDot)}&& &p&分页游标的 点点点&/p& &/c:when& &c:when test=&${looper eq fn:trim(pageHelper.pageNo)}&& &p&当前页为第${looper}页面&/p& &/c:when& &c:otherwise& &p&分页游标:${looper}&/p& &/c:otherwise& &/c:choose&13. &/c:forEach&很简单,每次比较的时候都把后者用 fn:trim 方法进行去除左右非可见字符。相当于强制转 换为 String 类型,此时 tomcat 又可以正常解析代码,并未报错。 同样的一套代码, 我将其部署到 resin 中发现无论是修改前还是修改后都能正常运行, 可见, 应该是 tomcat 的 bug。? java.sql.SQLException: 错误原因分析: ORA-01400: 无 法 将 NULL 插 入 (&GUANGXI&.&EB_ITEM&.&ITEM_ID&)29 商品表关系分析: EB_ITEM:EB_FEATURE:EB_PARA_VALUE:EB_SKU:30 Eb_Sku 与最小销售单元是:一对多的关系,故而在 Eb_Sku 里面创建 LIST 集合。 EB_SPEC_VALUE:EB_ITEM_CLOB:理清表之间的关系:Eb_item( 商 品 ) 、 Eb_Feature( 所 有 商 品 的 公 共 属 性 ) 、 Eb_para_Value 、 Eb_Sku 、 Eb_Spec_Value、Eb_Item_CloB. Eb_Item?Eb_Feature:一对多、Eb_para_Value,Is_Spec=0 时(基本属性)。31 Eb_Feature?Eb_Sku:一对多、Eb_Sku?Eb_Spec_value 一对多。Is_Spec=1 时(规格属 性) Eb_item?Eb_para_value:一对多 select * from eb_para_value t where t.item_id=3203IN的查询语句 select * from eb_item ei,eb_sku es,eb_para_value epv where ei.item_id = es.item_id and es.sku_price&1000 and es.sku_price&5000 and ei.brand_id=1002 and epv.item_id=ei.item_id and epv.para_value in ('android4.0','直板'); Eb_Item?Eb_Sku:一对一 ? 删除规格 function clickRemove(id){ if(id!=”#sp_0div1”) { $(id).remove(); }else { alert(“默认最小销售单元不能删除!”); } } $(id)为什么没有#? 解析:因为我们在页面函数中传递时使用:clickRemove(“#sp_0div1”)传递时已经加入#32 号了,故而使用$(id)即可. ?Error updating database. Cause: java.lang.IllegalArgumentException:Mapped Statements collection does not contain value for mybatis.sqlMap.EbSkuMapper.insert### Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for mybatis.sqlMap.EbSkuMapper.insert 错误原因分析:没有引入这个文件在 sqlMapConfig.xml 文件中。 新插入数据关系表示:?页面始终没有回显值。无法回显原因解析:原因可能是我要放入 html 代码的地方:文本文件有空格。?解决办法:成功解决问题。 IE6/78 中,弹出字符串的长度是 4,即忽略了空格。33 ? ? ? ? ? ? ?IE9/Firefox/Safari/Chrome/Opera 中,弹出则是 7,即没有忽略空格。 这时候拿.html()的返回值作为代码分支的条件明显在非 IE 浏览器中会出错。 如果非要使用元素的 html 内容作为判断条件,解决办法很简单 1,写 html 时去掉空格 2,调用 html()方法后再调用 trim,如 var str = $('#user').html().trim(); 详细出处参考:http://www.jb51.net/article/26757.htm MyBatis generator 无法完成自动生成 javabean 和 mapper.xml 文件。错误原因解析:工程名写错!targetProject=”ecps-core1”项目名写错,ecps_core1 的下划线在配置文件中写成了中横线。故而找不着项目:project does not exist。 ? ? $('.filter li').slice(7,len-2).hide(); slice:下拉收缩。 Caused by: java.lang.ClassNotFoundException: Cannot find class: BaseResultMap错误点: 看到那个 resultType 了么,就是它惹的祸,这里把 resultType 改为 resultMap 就 OK 啦, 重启 tomcat,木有异常啦 ★. 错误:Element type &select& must be declared. 配置就发现了问题所在是因为我违背了 DTD 的声明格式。 我的 ibaties 的 DTD 格式是: 1、sql-map-config.xml 中的 DTD 格式34 &!DOCTYPE sqlMapConfig PUBLIC &-//iBATIS.com//DTD SQL Map Config 2.0//EN& &http://www.ibatis.com/dtd/sql-map-config-2.dtd&& 改成:&!DOCTYPE sqlMapConfig PUBLIC &-//ibatis.apache.org//DTD SQL Map Config 2.0//EN& &http://ibatis.apache.org/dtd/sql-map-config-2.dtd&& 2、Student.xml 中的 DTD 格式 &!DOCTYPE sqlMap PUBLIC &-//iBATIS.com//DTD SQL Map Config 2.0//EN& &http://www.ibatis.com/dtd/sql-map-config-2.dtd&& 改成:&!DOCTYPE sqlMap PUBLIC &-//ibatis.apache.org//DTD SQL Map 2.0//EN& &http://ibatis.apache.org/dtd/sql-map-2.dtd&& ★. Element type &selectkey& must be declared.selectkey 元素类型必须声明。表示 selectkey 现在不符合 dtd 约束。? 二次请求问题 问题:查询数据时,数据总是请求 2 次,检查地址,缓存都没问题,各种配置也没问题,但是 就是请求 2 次。 问题发现:原来在图片回显里面有个 src 属性,给属性设置了#,而 src 属性会自动加载地址, 由于是#,那么就默认加载 form 表单的请求。 ? ? 在 insert 时,不需要判断字段是否为空,这时只需去绝对字段即可。 The Apache Tomcat Native library whichallows optimal performance in production environments was not found on the java.library.path: Tomcat 启动的时候出现下面这样的提示:
lifecycleEvent 信息 : The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:/Java/jdk1.5.0_05/.;C:/WINDOWS/system32;C:/WINDOWS;d:/ruby/.;..;D :/Java/jrockit-R26.0.0-jdk 实际这是建议使用 apache 的 apr。 如果想使用 apr 的话, 实际操作很简单,3519:44:11org.apache.catalina.core.AprLifecycleListener 下载 http://tomcat.heanet.ie/native/1.1.9/binaries/win32/tcnative-1.dll 将这个文件复制到 C:/WINDOWS/system32/下面 然后重新启动 tomcat,就会发现 tomcat 的控制台信息为:
19:48:42 org.apache.coyote.http11.Http11AprProtocol init 信息: Initializing Coyote HTTP/1.1 on http-9080最近把 Eclipse 的 maven 插件从 m2eclipse 更新到 m2e 后出了一些莫名其妙的的问题。今 天又出了一个,就是 Eclipse 新建的 Maven Web project 在 tomcat 里启动后报错,具体报 错信息如下:Shell 代码 1. 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting propert y 'source' to 'org.eclipse.jst.jee.server:test1' did not find a matching pro perty.对于这个问题,网上很多人给出的原因和解决方案如下: 写道 出现 SetPropertiesRule 警告的原因是因为 Tomcat 在 server.xml 的 Context 节点中不支持 source 属性:&Context docBase=&…& path=&/…& source=&org.eclipse.jst.j2ee.server:…&/& 解决方法是在 Servers 视图里双击创建的 server,然后在其 server 的配置界面中选中 &Publish module contexts to separate XML files&选项。 不过我按这种方式操作后发现还是会报这个问题, 除了这种方式之外网上也没有什么参考资 料了,这个问题纠结了我几天。仔细检查工程结构后发现我的工程根目录下生成了一个 WebContent 文件夹。具体截图如下:一般来说正常的 maven 项目的 web 资源文件都是默认位于 src/main/webapp 下, WebContent 只是普通的 Dynamic Web project 使用的默认 Web 文件目录。而我这个工程36 竟然同时生成了这两个目录,而且两个目录下都有 WEB-INF 文件夹。这个是不是问题的根 源呢?为了排查,我又重新新建了一个 maven web project,工程名为 test2。新建完后发现并没 有生成 WebContent 文件夹。我们都知道,Eclipse 中建 Maven Web 工程需要添加 Project Facets。具体步骤如下图所示: 1.右键--Properties2. 选择 Project Facets,然后点击右边的 Convert to faceted from...37 3. 在弹出的窗口中选择 Dynamic Web Module4. 如上图所示在窗口下方还有一个 Further configuration available...,点击后弹窗如 下,打开完后终于找到了原因所在,在这一步需要设置工程的 content directory, 如果不设置,目录名称默认就是 WebContent。38 前一步我是没有设置,所以才会生成默认的 WebContent 目录。添加完 Facets 后,把 test2 工程部署在 tomcat 启动,发现之前的错误已经不存在了。 解决完问题后,心里还是有点不踏实,问题的根源到底是什么呢。逐一比对了两个工程的文 件内容后终于发现了区别所在。区别在于工程.settings 文件夹下。.settings 目录下的文件附 图如下:上图高亮的部分的两个文件就是区别所在。 其中.jsdtscope 中有一行定义:Xml 代码 1. &classpathentry kind=&src& path=&WebContent&/&而 test2 工程的定义如下:Xml 代码 1. &classpathentry kind=&src& path=&src/main/webapp&/&39 另外 org.eclipse.wst.common.component 文件中定义了工程的 wb-resourceXml 代码 1. &wb-resource deploy-path=&/& source-path=&/WebContent& tag=&defaultRootSourc e&/&test2 工程的定义如下:Xml 代码 1. &wb-resource deploy-path=&/& source-path=&/src/main/webapp& tag=&defaultRoot Source&/&综上所述,推测 tomcat 在部署工程时会去查找.settings 中定义的配置。如果配置有问题, 则会报错。上面的问题,只要把 test1 工程.settings 目录下对应的两个文件的配置修改后重 新部署就能正常启动了。 ? The expression ?paramList? evaluated to a null value.出现错误原因:paramList 不能为空,但是现在却为空。&foreach collection=&paramList& item=&param& & and exists (select * from eb_para_value epv where epv.item_id = ei.item_id and epv.para_value = #{param}) &/foreach& 使用 foreach 时, collection 里面的 paramList 必须不能为 null。 否则出错。 错误原因: public List&EbItem& queryItemByConditionForPortal(String skuPrice, Long brandId, String paramList) { // TODO Auto-generated method stub Map&String,Object& map = new HashMap&String, Object&(); if(skuPrice!=null && !&&.equals(skuPrice)) { //获取页面传递的价格区间 String[] prices = skuPrice.split(&-&); Integer minPrice = Integer.parseInt(prices[0]); Integer maxPrice = Integer.parseInt(prices[1]); map.put(&minPrice&, minPrice); map.put(&maxPrice&, maxPrice); } map.put(&brandId&, brandId); String[] params = {}; if(paramList!=null && !&&.equals(paramList)) { //String[] params = {}; String[] split = paramList.split(&,&);40 if(split!=null) { params = } //map.put(&paramList&, params); } map.put(&paramList&, params); List&EbItem& list = ebItemDao.queryItemByConditionForPortal(map); }可以看见,paramList已经不为null了。在 SQL 开发过程中,动态构建 In 集合条件查询是比较常见的用法,在 Mybatis 中提 供了 foreach 功能,该功能比较强大,它允许你指定一个集合,声明集合项和索引变量, 它们可以用在元素体内。它也允许你指定开放和关闭的字符串,在迭代之间放置分隔符。这 个元素是很智能的,它不会偶然地附加多余的分隔符。下面是一个演示示例: &select id=&findByIdsMap& resultMap=&BaseResultMap&& Select &include refid=&Base_Column_List& /& from jria where ID in &foreach item=&item& index=&index& collection=&list& open=&(& separator=&,& close=&)&& #{item} &/foreach& &/select& 但由于官方文档对这块的使用,描述的比较简短,细节上也被忽略掉了(可能是开源项 目文档一贯的问题吧), 也使用不少同学在使用中遇到了问题。 特别是 foreach 这个函数中, collection 属性做什么用,有什么注意事项。由于文档不全,这块只能通过源代码剖析的方 式来分析一下各个属性的相关要求。 collection 属性的用途是接收输入的数组或是 List 接口实现。但对于其名称的要求, Mybatis 在实现中还是有点不好理解的,所以需要特别注意这一点。 下面开始分析源代码(笔记使用的是 Mybatis 3.0.5 版本) 先找到 Mybatis 执行 SQL 配置解析的入口41 MapperMethod.java 类中 public Object execute(Object[] args) 该方法是执行的入口.针对 in 集合查询,对应用就是 selectForList 或 SelctForMap 方法。但不管调用哪个方法,都会对原来 JDK 传入的参数 Object[]类型,通过 getParam 方法转换成一个 Object,那这个方法是做什么的呢?分析源码如下:上图中标红的两处,很惊讶的发现,一个参数与多个参数的处理方式是不同的(后续很 多同学遇到的问题,就有一大部分出自这个地方)。如果参数个数大于一个,则会被封装成 Map, key 值如果使用了 Mybatis 的 Param 注解,则会使用该 key 值,否则默认统一使 用数据序号,从 1 开始。这个问题先记下,继续分析代码,接下来如果是 selectForList 操 作(其它操作就对应用相应方法),会调用 DefaultSqlSession 的public List selectList(String statement, Object parameter, RowBounds rowBounds) 方法又一个发现,见源代码如下:42 上图标红部分,对参数又做了一次封装,我们看一下代码现在有点清楚了,如果参数类型是 List,则必须在 collecion 中指定为 list, 如果是数据 组,则必须在 collection 属性中指定为 array. 现在就问题就比较清楚了, 如果是一个参数的话, collection 的值取决于你的参数类型。 如果是多个值的话, 除非使用注解 Param 指定, 否则都是数字开头, 所以在 collection 中指定什么值都是无用的。下图是 debug 显示结果。43 针对上面分析的结果, 下面给出了一个使用的解决方案, 希望对大家对帮助。在使用这个功能是需要特别注意以下规则: 1. 当查询的参数只有一个时 findByIds(List&Long& ids) 1.a 如果参数的类型是 List, 则在使用时,collection 属性要必须指定为 list &select id=&findByIdsMap& resultMap=&BaseResultMap&& Select &include refid=&Base_Column_List& /& from jria where ID in &foreach item=&item& index=&index& collection=&list& open=&(& separator=&,& close=&)&& #{item} &/foreach& &/select& findByIds(Long[] ids) 1.b 如果参数的类型是 Array,则在使用时,collection 属性要必须指定为 array &select id=&findByIdsMap& resultMap=&BaseResultMap&& select &include refid=&Base_Column_List& /& from jria where ID in &foreach item=&item& index=&index& collection=&array& open=&(& separator=&,& close=&)&& #{item} &/foreach& &/select& 2. 当查询的参数有多个时,例如 findByIds(String name, Long[] ids) 这种情况需要特别注意, 在传参数时, 一定要改用 Map 方式, 这样在 collection 属性可以 指定名称 下面是一个示例 Map&String, Object& params = new HashMap&String, Object&(2); params.put(&name&, name); params.put(&ids&, ids); mapper.findByIdsMap(params); &select id=&findByIdsMap& resultMap=&BaseResultMap&& select &include refid=&Base_Column_List& /& from jria where ID in &foreach item=&item& index=&index& collection=&ids& open=&(& separator=&,& close=&)&& #{item} &/foreach& &/select&44 完整的示例如下: 例如有一个查询功能,Mapper 接口文件定义如下方法: List&Jria& findByIds(Long... ids); 使用 in 查询的 sql 拼装方法如下: &select id=&findbyIds& resultMap=&BaseResultMap&& select &include refid=&Base_Column_List& /& from jria where ID in &foreach item=&item& index=&index& collection=&array& open=&(& separator=&,& close=&)&& #{item} &/foreach& &/select&js 中 return 的用法一、返回控制与函数结果, 语法为:return 表达式; 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的 结果。 function test(){ var thenum=&90&; alert(thenum); return function(){ var thenum=&110&; alert(thenum); } } var result=test();//90 result();//110 二、返回控制, 无函数结果,语法为: 在大多数情况下,为事件处理函数返回 false,可以防止默认的事件行为.例如,默认情况下点 击一个&a&元素,页面会跳转到该元素 href 属性指定的页. return false 就相当于终止符,Return true 就相当于执行符。 在 js 中 return false 的作用一般是用来取消默认动作的。比如你单击一个链接除了触发你 的 onclick 时间(如果你指定的话)以外还要触发一个默认事件就是执行页面的跳转。所以如 果 你想取消对象的默认动作就可以 return false。 首先在 js 中,我们常用 return false 来阻止提交表单或者继续执行下面的代码,通俗的来说 就是阻止执行默认的行为。45 function a(){ if(True) },这是没有任何问题的。 如果我改成这种 function Test(){ a(); b(); c(); } 即使 a 函数返回 return false 阻止提交了,但是不影响 b()以及 c()函数的执行。在 Test ()函数里调用 a()函数,那面里面 return false 对于 Test()函数来说,只是相当于返回值。而不能阻止 Test()函数执行。 总之:return false 只在当前函数有效,不会影响其他外部函数的执行。 三:总结 retrun true; 返回正确的处理结果。 return false;分会错误的处理结果,终止处理。 return;把控制权返回给页面。 return 后面的语句不会被执行,相当于 break 的功能,但 break 只用于循环中。? Caused by: java.lang.IllegalArgumentException: Result Maps collection already contains value for yycg.base.dao.mapper.SysuserMapper.BaseResultMap 错误解析:返回集合包含值 错误原因: &select id=&countByExample& parameterType=&custom.yycg.po.SysuserExample& resultType=&java.lang.Integer& & &select id=&countByExample& parameterType=&yycg.base.po.SysuserExample& resultType=&java.lang.Integer& & 发现 parameterType 写错类型写错。field ?id' doesn't have a default value 这个错的原因:是由于 hbm 文件的增长策略和数据库不匹配引起的。 改为 increment 就解决。Type 是 integer 类型。46 解析原因:increment 是 hibernate 提供的增长策略,而这个表是手动创建的,所以只能使用 hibernate 来维护表的关系。 而当我们配置 native 时就出错,上面的错误。就是因为这个表是手动创建的,数据库没有提供 相应的策略。 当我们使用 hibernate 自动生成表时,可以发现数据库 id 字段是 auto_increment,此时 native 生效。严重: IOException while loading persisted sessions: java.io.EOFException 严重: Exception loading sessions from persistent storage baidu 了一下,结合网上提供的解决方法,我也在此做个备份. 分析:EOFException 表示输入过程中意外地到达文件尾或流尾的信号,导致从 session 中获取数据失败。异常 是 tomcat 本身的问题, 由于 tomcat 上次非正常关闭时有一些活动 session 被持久化 (表现为一些临时文件) , 在重启时, tomcat 尝试去恢复这些 session 的持久化数据但又读取失败造成的。 此异常不影响系统的使用。 解决办法: 将 tomcat6/work/Catalina/localhost/yourProjectName/SESSIONS.ser 删除。如果正常关闭服务端,该文件是 自动删除的。 注:yourProjectName 是你当前正在工作的 Web 项目名称。 考虑到每个人的 tomat 的工作目录不同,建议在“搜索”功能中找到你的 SESSIONS.ser 文件,而且只需要删 除../yourProjectName/下的 SESSIONS.ser 即可。 语法:&marquee& …&/marquee& 使用移动属性 marquee,不仅仅可以舞动你的文字,还可以应用于图片,表格等等。 &marquee direction=left&欢迎光临科讯青年学习频道!&/marquee& direction=left,表示方向。上面文字效果是“欢迎光临科讯青年学习频道!”从右向左移动!另外,方向 还有 right,up,down。 除了方向,我们还可以添加其他限制的元素: 移动的方式: 循环移动: loop=n (n, 表示次数) 回移动:behavior=alternate 外观: 47 绕圈移动: behavior=scroll 只走一次: behavior=slide 来 字号:&font size=n&(n,变量)对齐方式:align=top/middle/bottom底色:bgcolor=Blue(预定义色彩,如:Black,Olive,Teal,Red,Blue,Maroon, Navy,Gray,Lime,Fuchsia,White,Green, Purple,Silver,Yellow,Aqua 或 16 进制数码) 其它: 速度:scrollamount=n(n,变量) 延时:scrolldelay==n(n,变量)&marquee direction=&向什么方向移动& height=&移动区域高度& width=&移动区域宽度& scrollamount=&移动 速度& onmouseover=this.stop() onmouseout=this.start()&& onmouseover 设置鼠标放在移动区域的时候暂停移动 onmouseout 鼠标离开的时候继续滚动 ? Caused by: java.lang.ClassNotFoundException: org.springframework.jdbc.support.lob.LobHandler at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) ... 52 more 错误解析:缺少 jar 包所致。Spring-jdbc-release.jar 所致。 ? Oracle 删除表空间后再次操作出现:数据库未打开错误。解决方案: 1》 2》 3》 4》 5》 sqlplus /nosql conn /as sysdba alter database datafile ‘xxx.dbf ’执行:alter database open 时,出现:数据文件 1 与后台进程文件不同recover datafile 1; alter dat --add parameter in pfile首先确认 jquery 引入路径正确,而且 jquery 的的确确是被引入进来了,通过 firefox 可以看到 jquery 代码。 在这样的情况,发现连$(&#id&)都找不到对象或者$(function(){})根本就没起作用,那么可能的原因除了网上 所说的: jquery 有时不起作用,语法正确,引入 js 文件正确就是不起作用原因: html 元素不符合标准,比如 span 里面嵌套 div,form 中嵌套 form,table 中嵌套 form 等。 48 myeclipse 有警告提示:比如 Invalid location of tag (form)等 其实最后一条“table 中嵌套 form”应该可以去掉,因为我见过这样的情况,jquery 仍旧是有效的。 而最后我要补充一下我遇到的前所未有的原因: 在引入 jquery 的同时,自定义了 function $()。这样就造成 js 无法找到 jquery 的$()。造成 jquery 失效。 搜索 Google 后,结果可以归纳为 3 种: 没有启用 FSO 功能 IE 安全设置级别过高 没有安装 MSXML 但针对现在项目检查后,以上均不是问题所在,在项目中带有个测试页面,可以检查服务器端是否能正常 运行 jQuery,内容和 jQuery 官方网站的内容一样: 代码 复制代码 代码如下: &html& &head& &script type=&text/javascript& src=&js/jquery.js& /& &script type=&text/javascript&& $(document).ready(function() { $(&a&).click(function() { alert(&Hello world!&); }); }); &/script& &/head& &body& &a href=&#&&Link&/a& &/body& &/html& 可无论如何就是不能在 IE 或火狐中看到 jQuery 弹出的&OK&提示,我就辶恕谑俏抑葱幸韵虏街瑁 下载最新的 jQuery 脚本替换掉项目中带有的版本 检查每行 javascript 代码 检查 IE 安全设置,设置为最低 ………… 均没有见到效果,直到今天突然才发现,该页面调用 jQuery 的引用行是这样书写的 &script type=&text/javascript& src=&js/jquery.js& /& 我改成 &script type=&text/javascript& src=&js/jquery.js& &&/script& “OK”终于弹出来了…… 但问题还没有结束,项目开发者是在母版页中包含了 jQuery, 源码如下 代码 复制代码 代码如下: &asp:ScriptManager ID=&ScriptManager1& runat=&server& & &Scripts& &asp:ScriptReference Path=&~/js/jquery.js& /& &/Scripts& &/asp:ScriptManager& 查阅 ASP.NET 官方论坛可以看到答案 http://forums.asp.net/t/1377657.aspx,我将 Script 控件属性添加 EnablePartialRendering=&true& 和 EnableScriptGlobalization=&false& 后,一切正常,至此问题全部解决,项 目成功部署。 总结:感谢楼下花时间看完我这篇文章,但我查阅了 W3C 关于 html 中引用&script&脚本的规范 http://www.w3.org/TR/REC-html40/interact/scripts.html#h-18.2.2.3, 也未找到&script /&这样写法是不符合规 范的定义,只看到了提倡尽可能不用闭合标记&&&而是用&&&比较好(如“ y & x”比&x & y&好)。 又见留言,再度感谢。但我想表达的意思是,这种写法仅在 asp.net 环境下会出现问题,如果在 php 中这 样书写&script src='.....' type='text/javascript' /&,在 apache 环境下可以正常运行并得到结果。49 ?点击下一页不起作用,到第二页:上一页图标,下一页图标也不现实。解析:经过最终发现,最终错误在 Jquery 代码逻辑错误:后台语句都生成,sql 语句也执行。参数也传递 一切都正常,那么查询不出值,到底是为什么呢? 解答:最终发现:PL/SQL 里面出现事务未提交,一直阻塞结果执行。故而一直 没有查询出值。?50
赞助商链接

我要回帖

更多关于 有趣的自动控制系统 的文章

 

随机推荐