posts - 256, comments - 1315, trackbacks - 41, articles - 8
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

两天四疑问

Posted on 2004-09-03 10:56 FantasySoft 阅读(865) 评论(3)  编辑 收藏 所属分类: All About SoftMiscellaneous

        9月份的前两天,我仍然做着网站开发的工作。在开发的过程中,遇到了不少的问题,现在将典型的几个列示如下,供各位参考。
        第一个疑问是关于Javascript的,大家看一下以下的代码:

<html>
  
<head>
    
<script language="javascript">
      
function order()
      
{
            alert();
      }

    
</script>
  
</head>
  
<body>
  
<form>     
     
<input type="button" name="order" value="Click Me" onclick="order()" />
  
</form>
    </body>
</html>

        代码很简单,如果按了"Click Me"按钮后,是否会如愿弹出一个对话框呢?事实上,是不会的。原因是button的name与Javascript方法名字相同了,结果就造成了order方法没有被调用。解决办法是只要将方法名字做修改即可。虽然我知道了错误的原因,但是我却不知道为什么会这样,毕竟两者的作用域是不同的啊。
        第二个疑问是关于SQL的,大家再看一下以下的SQL语句:
        SELECT SUM(PRICE) AS SUM_PRICE FROM PRODUCT WHERE ID IN (1,3,4);
        SQL语句也很简单,就是将PRODUCT表中的PRODUCT ID为1、3、4的产品的价格加起来,得到一个总价,并且返回的列名为SUM_PRICE。需要额外说明的一点是PRICE是INT类型的,那么大家会觉得返回的SUM_PRICE是什么类型呢?由于我使用的是自己封装过的一个SqlExecutor类去处理返回的数据,而这个SqlExecutor使用ResultSet.getObject(string columnName)将所有返回数据存进一个SqlResults类中,而这个类包含是两个ArrayList,一个存放数据,一个存放columName。而getInt,getLong之类的方法则是定义在SqlResults类的,这些方法的工作则是从ArrayList中取出需要的数据,并且进行相应的类型转换。而对于这个返回的SUM_PRICE,我很自然的使用了getInt方法,结果是报出了类型转换的错误。查看源代码,发现getInt方法只是对返回数据进行了Integer和BigDecimal类型的检查。当时我仔细想了一下,由于是INT类型相加,那么有可能超出INT的范围,返回的就应该是Long类型才对了。接着,我就将getInt改为getLong了,类型转换的错误仍然存在。getLong方法中只是增加了对Long类型的检查。最后还是通过getObject方法得到了返回的类型,竟然是Doulbe!其实也很好理解了,由于SUM操作得到的数值是很难预料的,使用数值范围最大的类型来存放返回的数值也是为了得到最大的精度。后来我使用ResultSet.getInt方法尝试了一下,JDK提供的方法是工作得很好的。因此以后在封装自己的DAO类的时候,要注意这个地方了;
        第三个疑问是关于Tomcat的Session。问题的现象是,如果直接使用IP+端口号进行访问的话,session是会工作得很好的,但是如果使用了域名隐藏指向之后(例如,www.abc.com 隐藏指向了http://210.120.50.59:8080/webApp),session就莫名其妙的丢失了。这个问题到现在还没有解决呢,还请高手指点一二了;
        第四个疑问仍然与Tomcat有关。Tomcat的Connection Pool在工作了一段时间之后,当我需要从连接池取连接的时候,会报出Cannot get a connection, pool exhausted的异常,但是我很仔细的看过了自己的代码,都使用了finally将连接关掉了,而且就自己在测试,哪里会使用那么多的连接呢?这个问题也是悬而未决的,让我很郁闷。
        两天四疑问,路漫漫其修远兮,吾将上下而求索了。

Feedback

#1楼    回复  引用  查看    

2004-09-03 15:47 by nemo      
探讨第一个疑问:
http://www.cnblogs.com/huangyu/archive/2004/09/03/39363.aspx

BTW:你遗忘了</body>,尽管编译通过:)

#2楼    回复  引用  查看    

2004-09-04 01:02 by FantasySoft      
已经更正,谢谢nemo。谢谢您的关注!

#3楼    回复  引用  查看    

2004-09-06 22:31 by Liki [未注册用户]
Hi, perhaps, 我的Blog地址换了,放在自己的空间里了现在,能改一下连接么? thx!

http://ezlavie.com/liki/blog

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2004-10-14 18:01 编辑过
 
另存  打印
最新IT新闻:
· 万名Linux使用者向暴雪请愿Linux版《Diablo III》
· 56.com我乐网将全面转行 退出视频行业
· Joost借道TOM在线 将正式进军中国
· 微软副总裁公开承认Vista存在问题
· 互联网DNS存在重大漏洞 黑客可能控制网络流量