编程(Java-Web)
May 12
使用JDBC链接oracle报java.sql.SQLException: 无效的列索引: getValidColumnIndex的解决以及java.sql.ResultSetMetaData.getColumnLabel和getColumnName的区别学习
使用JDBC链接oracle报java.sql.SQLException: 无效的列索引: getValidColumnIndex的解决以及java.sql.ResultSetMetaData.getColumnLabelgetColumnName的区别学习
在搭建的项目中使用原来是通过如下方式把查询结果放到map里面的
Map<String, String> col_itlife365 = new HashMap<String, String>();
for (int i = 0; i < rs.getMetaData().getColumnCount(); i++)
{
String title = rs.getMetaData().getColumnLabel(i);
col_itlife365.put(title, rs.getString(title));
}
row.add(col_itlife365);
报错了java.sql.SQLException: 无效的列索引: getValidColumnIndex,网上查询并学习了解后rs.getMetaData().getColumnLabel(i);中i是从1 开始算的,所以修改为如下
Map<String, String> col_itlife365 = new HashMap<String, String>();
for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++)
{
String title = rs.getMetaData().getColumnLabel(i);
col_itlife365.put(title, rs.getString(title));
}
row.add(col_itlife365);
并学习了getColumnName和getColumnLabel两者都是索引从1开始,两者的区别如下:
getColumnName返回的是sql语句中field的原始名字
getColumnLabel是field的SQL AS的值。
比如如下的查询语句:
select
a.name as name
,a.description as description
,b.description as relatedDescription from a,b where ...
此时,getColumnName(3) == "description";而getColumnLabel(3) == "relatedDescription"
网上查询官网的API:

getColumnLabel
String getColumnLabel(int column)
throws SQLException
Gets the designated column's suggested title for use in printouts and displays. The suggested title is usually specified by the SQL AS clause. If a SQL AS is not specified, the value returned from getColumnLabel will be the same as the value returned by the getColumnName method.
Parameters:by www.itlife365.com
column - the first column is 1, the second is 2, ...
Returns:
the suggested column title
Throws:by www.itlife365.com
SQLException - if a database access error occurs
getColumnName
String getColumnName(int column)
throws SQLException
Get the designated column's name.
Parameters:

column - the first column is 1, the second is 2, ...
Returns:
column name
Throws:
SQLException - if a database access error occurs

这个也许和数据库也有关系。by www.itlife365.com
网友经测试,发现在SQLServer数据库中不存在这个问题,两种方法获取到的字段名是一致的。
为保险起见,建议使用getColumnLabel。
如果你想将ResultSet的结果映射到HashMap中,注意一定使用getColumnLabel,而不要用getColumnName,这样可提高程序的健壮性
the different between java.sql.ResultSetMetaData.getColumnLabel和getColumnName
the-different-jdbc-getColumnLabel-getColumnName-getValidColumnIndex
---end by itlife365.com
Apr 22

web.xml中load-on-startup的作用
直接上一个dwr的配置文件参考
<servlet>
   <servlet-name>dwr-invoker</servlet-name>
   <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
   <init-param>
    <param-name>debug</param-name>
    <param-value>true</param-value>
   </init-param>
   <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
   <servlet-name>dwr-invoker</servlet-name>
   <url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
我们注意到它里面包含了这段配置:<load-on-startup>1</load-on-startup>,那么这个配置有什么作用呢?

贴一段英文原汁原味的解释如下:
Servlet specification:
The load-on-startup element indicates that this servlet should be loaded (instantiated and have its init() called) on the startup of the web application. The optional contents of these element must be an integer indicating the order in which the servlet should be loaded. If the value is a negative integer, or the element is not present, the container is free to load the servlet whenever it chooses.   If the value is a positive integer or 0, the container must load and initialize the servlet as the application is deployed. The container must guarantee that servlets marked with lower integers are loaded before servlets marked with higher integers. The container may choose the order of loading of servlets with the same load-on-start-up value.

翻译过来的意思大致如下:
1)load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。
2)它的值必须是一个整数,表示servlet应该被载入的顺序
3)当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;
4)当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。
5)正数的值越小,该servlet的优先级越高,应用启动时就越先加载。
6)当值相同时,容器就会自己选择顺序来加载。
所以,<load-on-startup>x</load-on-startup>,中x的取值1,2,3,4,5代表的是优先级,而非启动延迟时间。
how-use-load-on-startup-on-web-xml
how-use-load web.xml

Jun 11

前言

手机平台的技术发展与趋势,「从本机(Native Application)走向云端(Cloud Computing)应用」,是一个不能不谈的发展方向。在云端的架构之下,应用程序都可以由单机形式转变为Web Application。因为运算不在手机端了,是在服务器端;所以,「如果要你撰写一个能秀出服务器端图片的软件,你要怎么做?」
 

Jun 11

今天终于了解了什么是JIL ,下面请看:
各位开发者:
给大家介绍一个简单、实用、易赚钱的手机应用开发技术--JIL Widget(移动微技)。
 
该技术可以解决以下问题:
1、手机应用开发门槛高:只需WEB编程技术,即可开发多平台的手机应用,包括Symbian(V3、V5)、Windows Mobile、OPhone平台。
2、适配难:由于该技术可以真正实现跨手机平台运行,不需要针对不同手机平台开发不同版本,因此可以做到一次开发、到处运行。
3、赚钱难:只需1-2个月就可以完成开发并实现收益。具体请访问MM开发者社区或者JIL官网。
 
目前,全球JIL Widget应用数量已经超过25000个,支持JIL Widget技术的运营商超过20个。在国内,MM上的JIL Widget应用数量已经达到300个左右,开发者数量超过10000个,支持JIL Widget的手机类型超过110款,数量超过2500万台。
JIL Widget发展迅猛,在全球运营商的大力推进下,势必成为移动互联网时代下,手机业务的完美承载方式。
 
更多JIL Widget信息,请访问:
JIL Widget开发者论坛:http://dev.10086.cn/cmdn/bbs/forum-19-1.html
JIL Widget开发者社区:http://dev.10086.cn/upload/wiki/jil/index.htmlwww.jil.org
 
1. JIL的背景:
2008年4月,中国移动、软银和沃达丰达成协议,共同投资建立“联合创新实验室”(Joint Innovation Lab,JIL)。2009年4月,北美运营商Verizon Wireless也宣布加入JIL。四家公司计划以联合创新实验室为平台,基于联合的市场规模和研发实力,发挥产业协同作用,开发移动服务,驱动创新,加速移动互联网服务的商业化进程,从而使其在全球范围内的客户受益。
JIL在成立之初启动了“JIL Widget(移动微技)”项目。该项目是在中国移动BAE项目以及其他运营商在Widget领域研发成果的基础上开展的。JIL Widget项目的目标在于构建端到端的JIL Widget应用的生态系统,在保证JIL Widget应用能够“编写一次,跨平台运行”的前提下,降低开发者开发成本并丰富移动互联网终端应用。
  
2. 技术背景:
Widget是一种基于互联网Web技术的小应用,采用JavaScript、Html、CSS及Ajax等标准Web技术进行开发,具备开发快捷、体积小巧、界面华丽、用户体验良好、资源消耗少等优点,适合于娱乐、工作、资讯、游戏、学习等各种应用,已经在各种桌面操作系统上得到了广泛的应用。随着移动终端应用技术的发展,Widget在移动领域也受到越来越多的关注,形成了移动终端上新的应用形式-Mobile Widget。
JIL Widget是遵循JIL规范的Mobile Widget,结合了移动终端和移动互联网应用的特点,为手机用户带来良好的呈现方式和互联网体验。JIL Widget具有界面个性化、小巧轻便、开发门槛低、潜在开发者众多、跨平台运行等特点,有助于降低业务或应用开发和部署的成本,并极大丰富移动互联网应用的种类和数量。


Feb 26
【更新】
2011/02/20 V2.1.2.0220.0 (2.1.2 beta 1)
*每次会话的首次登入后台都需要验证管理员密码。
*修改了一些过滤方法,避免某些安全问题。
*实验性的与内容长度相关的垃圾信息检测方式。

【关于“与内容长度相关的垃圾信息检测”】
- 本特性为实验性质,将视试用反馈决定是否保留或更改。
- 2.1.2 beta 1 带有此实验功能,默认开启,不可禁用。
- 启用该功能后,将以访问者打开一篇日志或打开留言本的时间为 A 点,其提交留言或评论时的时间点为 B 点,系统将检测 A 与 B 之间的间隔时间对于该信息的长度而言是否为一个合理的值,以此最大程度地确保每条发言都是提交者亲自输入的(而不是直接复制粘贴的垃圾信息,或用群发器发出)。
- 欢迎到论坛报告试用反馈。

【关于安全性的说明】
1. 在这一版中,在每次浏览器会话中,管理员首次进入管理界面时都需要重新验证密码。
2. 为了避免在登陆后台的前提下,由于误点攻击者精心构造的链接而产生不良效果,在这一版中,系统对所有留言和评论中的链接进行了接管。管理员在点击这些链接时,将强制先退出后台登陆状态,然后跳转到相应的链接。
3. 但用户仍需注意本系统以外的链接的安全性。如果您已登陆了后台,请不要点击陌生的链接。
4. 为了确保安全,建议在管理操作结束后重启浏览器或直接登出。

http://bo-blog.com/weblog/index.php
分页: 1/4 第一页 1 2 3 4 下页 最后页 [ 显示模式: 摘要 | 列表 ]