?????????在《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
先講講做這個小程序的動機吧,昨天看了下以前學院的新聞,沒什么更新,但發現列表很長,保留了2003年1月至今的所有新聞。
這個新聞列表是大學期間我們了解學院信息的主要來源,都養成了每天先看新聞再看BBS的習慣。在大連實習期間更是如此,也算是產生感情了^__^,所以。。。決定把這700+新聞全部保存下來...
需求:指定一個網址,將這個網頁和里面所有的子鏈接頁面都下載下來,保存到指定的文件夾中。
如下圖所示:
需求有了,怎么完成呢?用迅雷下載全部鏈接?嗯,這是個好主意,(我確實也這么做了一次,連接數開得太多了,差點被封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的上課時間來編寫程序。。。
主網頁保存為index.html,子網頁按1、2、3排序生成1.html、2.html等
因為有Google Desktop,即使文件名是1.html...,搜索起來也是很方便的。也可以擴充下,將<a></a>中的新聞主題抽出來作為文件名。但這個程序對我來說已經足夠了,所以就不繼續做了。
總的來說用Perl還是很簡單的,庫也很多,寫起來挺方便!但是要記得常翻翻Perl手冊,呵呵
Technorati Tag :? Perl?LWP? Download? web? script
原文照抄如下,^__^
問題:裝了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
最開始 我在程序里使用SQL訪問數據庫時,都是直接用“+”將字段值嵌到SQL中。?
后來我開始使用PreparedStatement,在SQL里使用“?”標記參數,然后用setXXX方法給參數賦值。當時只知道這樣用是因為有setDate,setTimeStamp這些用“+”連接不能直接嵌入的值。
感覺PreparedStatement在性能方面應該也能快點,可能DBMS會重用,但不明底層原理。
這次《數據庫實現》課程終于讓我弄懂了:每個SQL語句都要通過 語法分析 -> 生成邏輯查詢計劃 -> 邏輯優化 -> 物理優化 等步驟生成具體的執行計劃,用PreparedStatement就可以生成一個執行計劃,以后只是參數改變(相當于執行計劃的執行環境改變),前面的四個步驟也會省略,從而提高了效率。
如果一個SQL語句要被反復多次執行,或多用戶同時操作,則應選用PreparedStatement!
執行力是工作中最重要的!
人有7次改變命運的機遇,第一次和最后一次沒有精力抓住(too naive 或 too old),中間兩次機遇錯失,其余三次機遇就看你能否抓住了。
昨天看了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分啊!^_^
預覽報表時提示無法顯示網頁,查看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異常)的錯誤也可以參照以上方法解決。