在《J2EE》课程实验里写了些jsp和servlet代码,将遇到的一些问题和解决方法贴上,自己mark一下 && 供大家参考

1、jsp:usebean标签中, 若引用的bean不存在,会自动调用默认构造器生成一个javabean实例,所以不要在servlet里再用session.getAttribute来判断bean是否为空(因为肯定不为空),应该判断里面的字段是否为null或为初始化状态。

2、jsp:usebean 的class属性应该是类的全名(包括包名)。在前面<%@ import>中import的包,在tag里不起作用,只对jsp里面的java代码有用,所以tag里要使用类的全名

3、post时如果表单里有中文,会出现中文乱码,在servlet里调用request.getParameter之前执行request.setCharacterEncoding("gb2312");就可以正确识别和显示中文了;

如果是url中用中文参数,如someaction.jsp?q=中文问题,则要加一个filter来setEncoding,因为post和get传送参数的处理方式不一样。url中包含中文参数的设置参考:http://www.itet.cn/0512456328001529/JSP/0691214511318687.html

posted @ 2007-01-09 21:28 罗明 阅读(1050) | 评论 (16)编辑 收藏
 

先讲讲做这个小程序的动机吧,昨天看了下以前学院的新闻,没什么更新,但发现列表很长,保留了2003年1月至今的所有新闻。

这个新闻列表是大学期间我们了解学院信息的主要来源,都养成了每天先看新闻再看BBS的习惯。在大连实习期间更是如此,也算是产生感情了^__^,所以。。。决定把这700+新闻全部保存下来...

需求:指定一个网址,将这个网页和里面所有的子链接页面都下载下来,保存到指定的文件夹中。

如下图所示:
news.jpg


需求有了,怎么完成呢?用迅雷下载全部链接?嗯,这是个好主意,(我确实也这么做了一次,连接数开得太多了,差点被封orz ),但咱们是搞软件的@_@,这个小功能是不是写个程序就能搞定,用Java?想到那一堆Stream的封装(new BufferedReader(new BufferedOutputStream(new FileOutputStream(new File("blabla.html")))))...我就头晕。

小程序用脚本语言?应该不错!

Perl还是Python?。。。经过一番网上查询论证,似乎:Perl语法复杂,但简练,API库也超级多;Python语法清晰易懂,有点像Java,适合开发大型应用。

Java是我的最爱,也算熟悉了,就学点bt的吧,用Perl

完成代码期间主要参考了Perl文档中URL,HTML::LinkExtor,HTTP::Request的用法,Perl中国的一篇文章《LWP与WEB的基本使用》,还占用了J2EE的上课时间来编写程序。。。

 1 #
 2 # Copyright (C) 2007 罗明 <andyluo197(at)gmail.com>
 3 #
 4
 5 use  strict  " vars " # 严格遵循my scope定义
 6
 7 use  LWP :: Simple;
 8 use  HTML :: LinkExtor;
 9 use  HTTP :: Request :: Common;
10 use  LWP :: UserAgent;
11 use  URI :: URL;
12
13 #  从命令行参数中取主网页地址和保存文件夹
14 my   $url   =   $ARGV [ 0 ]; 
15 my   $location   =   $ARGV [ 1 ];
16
17 #  子程序,解析主网页中的链接地址
18 my   @urls   =  ();
19 sub  urlCallback
20 {
21      my ( $tag ,   %attr =   @_ ;
22      return   if   $tag  ne  ' a ' ;
23      push ( @urls ,   values   %attr );
24 }
25
26 #  用于解析链接的LinkExtractor
27 my   $p   =  HTML :: LinkExtor -> new( \& urlCallback);
28
29 #  载入主网页内容,及解析链接地址
30 my   $ua   =  LWP :: UserAgent -> new;
31 my   $res   =   $ua -> request(HTTP :: Request -> new(GET  =>   $url ) ,   sub { $p -> parse( $_ [ 0 ])});
32
33 #  将链接的相对路径转换为绝对路径
34 my   $base   =   $res -> base;
35 @urls   =   map  { $_   =  url( $_ ,   $base ->   abs @urls ;
36
37 #  将网页写入文件
38 $ua -> request(GET( $url ) ,   $location   .   ' \\index.html ' );
39 my   $index   =   1 ;
40 foreach ( @urls )
41 {
42      $ua -> request(GET( $_ ) ,   $location   .   ' \\ '   .   $index   .   ' .html ' );
43      $index += 1 ;
44 }


主网页保存为index.html,子网页按1、2、3排序生成1.html、2.html等

因为有Google Desktop,即使文件名是1.html...,搜索起来也是很方便的。也可以扩充下,将<a></a>中的新闻主题抽出来作为文件名。但这个程序对我来说已经足够了,所以就不继续做了。

总的来说用Perl还是很简单的,库也很多,写起来挺方便!但是要记得常翻翻Perl手册,呵呵

Technorati Tag :  Perl LWP  Download  web  script

posted @ 2007-01-03 21:00 罗明 阅读(2619) | 评论 (15)编辑 收藏
 

原文照抄如下,^__^

问题:装了Google Toolbar的用户在网页搜索框里点右键,不会出现Custom Search菜单,导致不能将“迅雷搜索功能”添加到Toolbar。

市场需求:很多用户都装了google toolbar,里面有一个定制搜索的功能(Custom Search),可以将一些自己喜欢的搜索功能添加到toolbar,方便搜索,比如百度mp3搜索,天网搜索,在线字典搜索 等等。

建议:有可能是迅雷的搜索按钮的样式,导致Google Toolbar不能正确识别该搜索框。希望能做稍微修改,使其支持Google Toolbar的识别,让Google Toolbar的用户使用迅雷更加方便,谢谢你们Excellent的产品!

我的Email:andyluo197(AT)gmail.com

欢迎交流!

Technorati Tag :  迅雷googlecustom search

posted @ 2006-12-30 18:56 罗明 阅读(690) | 评论 (16)编辑 收藏
 
     摘要: CSS属性列表 及 对应的JavaScript DOM属性映射,手册  阅读全文
posted @ 2006-12-09 21:40 罗明 阅读(1838) | 评论 (16)编辑 收藏
 

最开始 我在程序里使用SQL访问数据库时,都是直接用“+”将字段值嵌到SQL中。 

String sql  =   " select s.name from student s where s.id=' "   +  sId  +   " ' ";


后来我开始使用PreparedStatement,在SQL里使用“?”标记参数,然后用setXXX方法给参数赋值。当时只知道这样用是因为有setDate,setTimeStamp这些用“+”连接不能直接嵌入的值。

感觉PreparedStatement在性能方面应该也能快点,可能DBMS会重用,但不明底层原理。

这次《数据库实现》课程终于让我弄懂了:每个SQL语句都要通过 语法分析 -> 生成逻辑查询计划 -> 逻辑优化 -> 物理优化 等步骤生成具体的执行计划,用PreparedStatement就可以生成一个执行计划,以后只是参数改变(相当于执行计划的执行环境改变),前面的四个步骤也会省略,从而提高了效率。

如果一个SQL语句要被反复多次执行,或多用户同时操作,则应选用PreparedStatement!

posted @ 2006-11-01 20:18 罗明 阅读(1753) | 评论 (19)编辑 收藏
 
在MySQL里创建外键时(Alter table xxx add constraint fk_xxx foreign key),提示错误,但只提示很简单的信息:ERROR 1005 (HY000): Can't create table '.\env_mon\#sql-698_6.frm' (errno: 150)。根本起不到解决问题的作用。

要看错误的详细提示,可以使用命令:(在MySQL Manual里搜索“errno 150”时找到)

SHOW ENGINE INNODB STATUS;     //针对用INNODB存储方式的数据库

在信息中有一组【LATEST FOREIGN KEY ERROR】会有最近错误的详细描述和解决办法。
如:
Cannot find an index in the referenced table where the referenced columns appear as the first columns, or column types in the table and the referenced table do not match for constraint.
(译:不能在“被reference的表”里找到包含“被reference字段”的索引,或者是两个关联字段类型不匹配)

(我犯的错误是没有在主表中设置主键-_-!,即第一种原因)
posted @ 2006-10-06 22:53 罗明 阅读(4709) | 评论 (18)编辑 收藏
 
SSA41779 (WinCE).JPG

哈哈,还有一箱酒呢!中秋节快乐!
posted @ 2006-10-05 21:49 罗明 阅读(482) | 评论 (0)编辑 收藏
 
     摘要: 搞笑的火星人图解  阅读全文
posted @ 2006-08-28 16:18 罗明 阅读(584) | 评论 (14)编辑 收藏
 
     摘要: Sun公司一名员工自己创作的歌,关于Java EE 5,很有意思的一首歌,程序员业余生活也可以这么丰富!  阅读全文
posted @ 2006-06-30 08:40 罗明 阅读(3630) | 评论 (2)编辑 收藏
 
     摘要: Google Earth若干景点  阅读全文
posted @ 2006-06-20 12:28 罗明 阅读(1422) | 评论 (0)编辑 收藏
 
在EJB3.0代码里直接用select new EntityClass(p.attr1,substring(p.attr2),...) .....报错,说不能识别“(”,估计就是substring后面的“(”,难道是EJB QL没这种语法?

在网上找这样的代码或实现方法未果,查EJB 3.0规范,里面有一个EJB QL的范式描述,原来在QL里只能在where条件里使用字符串函数,在select new里估计是不行了,后来想到select new 要调用EntityClass的构造函数来构建EntityClass实例,所以考虑在EntityClass的构造方法里调用substring等方法,实践之,执行成功,mark!

(文章短了点,但如果能解决别人的问题,也是不错的。post完继续写程序,hoho)
posted @ 2006-05-30 22:03 罗明 阅读(1371) | 评论 (0)编辑 收藏
 
今天听了余世维先生的讲座,没白排一个多小时的队-_-!,讲得比想象的要激情,话题触及到政治、社会、国际关系、历史。。。感觉印象比较深,我要努力的地方,主要有以下几点(总结^_^):

1、多涉猎各个学科知识,知识多元化。工科的多阅读工商管理、经济、贸易、人文等方面的书籍和杂志,不说一本一本看,也要一月读几篇。

2、遇事多沟通。这也是管理的五大要素之一。前几天因为学习忙没有搭理项目上的“老板”,没有联系,这也是缺乏沟通!

3、逆境不可怕,心态最重要,逆商是人成功的重要因素。

4、提高素质和修养,这是我们做每件小事时都要注意的。

5、执行力。任务发下来了,能不能保质保量按时完成,这是执行力;尽职做好工作中的每一件事,也是一种执行力;

执行力是工作中最重要的!

人有7次改变命运的机遇,第一次和最后一次没有精力抓住(too naive 或 too old),中间两次机遇错失,其余三次机遇就看你能否抓住了。

posted @ 2006-05-19 23:24 罗明 阅读(1482) | 评论 (3)编辑 收藏
 
Google Page Creator可以上传文件,当然就可以上传网页了,线下编辑网页时可以加入Google AdSense广告的JavaScript,然后再上传到Pages(不过这种网页不能用Page Creator在线编辑了,每次都得上传更新).
posted @ 2006-04-23 22:35 罗明 阅读(1356) | 评论 (6)编辑 收藏
 
发信站: BBS 珞珈山水站 (Fri Apr 21 09:24:12 2006)
1.作为遗产留个我娃
让go-vern-ment抽走点遗产税
2.3个月未登陆被系统回收 就这么个下场
我会在死前收购QQ,然后宣布解散.以后我不能用QQ,别人也别想用
3.带到那边继续使用!
4.让我小子帮我24小时开机不下,弄个骷髅图标,就OK了,嘎嘎
5.留给我的小蜜吧,她那时才二十出头,这也算我这个老牛对她的一点补偿
6.给我的宝宝 ,西西 让他泡MM
7.叫活着的朋友每天把Q挂在线上,打开自动回复:“我真的死了”
8.此人已葬于终南山,有事请到坟前烧纸。
9.QQ死的肯定比我早。。。
10.逢年过节叫你娃给你烧点QQ币啥地!!~  
posted @ 2006-04-22 11:19 罗明 阅读(1132) | 评论 (0)编辑 收藏
 

昨天看了IBM Developerworks上一篇介绍WTP的教程,对照着使用WTP1.0完成一个J2EE示例书签应用程序,服务器使用JBoss,数据库用的是Derby,Eclipse版本3.1.1。

在新建JBoss Server时,因为本机上已有Tomcat占用了8080端口(未启动),所以将监听端口由默认的8080改成了8081,结果运行服务器后:JBoss进程明明正常启动(根据Console得出),但WTP的Servers视图却提示“Timeout waiting for JBOSS 3.2.3 to start. Server did not start after 50000s”,服务器的状态也显示Stopped。但改成默认的8080就一切正常。怎么能出这种问题呢?难道WTP就是通过查询8080有没有JBoss在监听,从而判断JBoss是否启动成功?强烈怀疑这是一个Bug,不知道在最新版Eclipse和WTP改过来没有

PS: 用老版的Eclipse3.1.1来开发也是迫不得已,本来已安装了Callisto最新完整版(Eclipse3.2M5),但在J2EE透视图中就是看不到EJB项目分类,新建EJB项目也抛出若干个异常,看Log发现是JFace插件里抛出了NullPointerException,总之是做不下去了,不知道这样的Callisto怎么会算MileStone,: (

那个50000s应该是50000ms吧,50000s可是13时53分啊!^_^

posted @ 2006-04-18 10:10 罗明 阅读(2889) | 评论 (3)编辑 收藏
 
     摘要: 110个知名Java项目,包括项目描述和链接。  阅读全文
posted @ 2006-04-15 18:49 罗明 阅读(18251) | 评论 (8)编辑 收藏
 
     摘要: Google 拼音:输入法,即时收录网上的流行词汇,多机同步自定义词汇和常用词汇;Google Browser Sync:(Firefox 插件)提供Firefox网页访问历史的多机共享;Google Web History:记录你访问过的网页历史。。。。。  阅读全文
posted @ 2006-04-13 20:01 罗明 阅读(2076) | 评论 (2)编辑 收藏
 
     摘要: PCWorld评出的2005年100佳产品  阅读全文
posted @ 2006-04-13 19:31 罗明 阅读(1400) | 评论 (0)编辑 收藏
 
今天第一次试用了Google Pages,有100MB空间,延续了Google简单明了的风格。制作页面的过程也是行云流水,一气呵成,绝对的所见即所得,n多种风格可以挑选。整个网页,包括布局、尾注、页眉、网页上所有文字,都是你说了算,没有丝毫累赘。新建页标题名即网页文件名,又是简单明了,估计也更便于信息的归类和检索。这就是我使用的感受了,总体感觉挺好!

目前只知道在左栏可以列出所有文章,但不知道具体分页怎么做,莫非自己在页尾列出各个页号及上下页链接?

要是再加一个Google搜索栏搜索整站内容就更好了,不过自己就应该可以实现哦,just try!
posted @ 2006-04-13 16:55 罗明 阅读(2169) | 评论 (42)编辑 收藏
 

预览报表时提示无法显示网页,查看D:\eclipse\workspace\.metadata\.log文件后发现错误:
!MESSAGE Exception occurred starting the embedded application server.
!STACK 0
org.apache.commons.logging.LogConfigurationException:
org.apache.commons.logging.LogConfigurationException:
org.apache.commons.logging.LogConfigurationException: 
     Class org.apache.commons.logging.impl.Log4JLogger does not implement Log
...

搜索plugins目录下的log文件,发现既有Log4j又有CommonsLogging,将plugins目录下的org.apache.jakarta_log4j_logging_version.jar移出Eclipse目录(移出Classpath),重启动Eclipse,就可以预览了。

其他Web服务器不能启动(如Eclipse的Help打不开,JBoss提示上述Log异常)的错误也可以参照以上方法解决。

posted @ 2006-04-09 18:44 罗明 阅读(6507) | 评论 (6)编辑 收藏
仅列出标题
共14页: 上一页 1 2 3 4 5 6 7 8 9 下一页 Last