<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>聰明的生活2 &#187; jsp</title>
	<atom:link href="http://blog.yslifes.com/archives/category/jsp/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.yslifes.com</link>
	<description>自己寫java程式的一些筆記</description>
	<lastBuildDate>Tue, 27 Jul 2010 02:13:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<atom:link rel='hub' href='http://blog.yslifes.com/?pushpress=hub'/>
	
<!-- Start Of Script Generated By WP-PostViews Plus -->
<script type='text/javascript' src='http://blog.yslifes.com/wp-includes/js/jquery/jquery.js?ver=1.4.2'></script>
<script type="text/javascript">
/* <![CDATA[ */
jQuery.ajax({type:'GET',url:'http://blog.yslifes.com/wp-content/plugins/wp-postviews-plus/postviews_plus.php',data:'todowppvp=add&type=cat&id=34_1',cache:false,dataType:'script'});
/* ]]> */
</script>
<!-- End Of Script Generated By WP-PostViews Plus -->
	<item>
		<title>[Servlet]利用JMagick即時產生縮圖</title>
		<link>http://blog.yslifes.com/archives/641</link>
		<comments>http://blog.yslifes.com/archives/641#comments</comments>
		<pubDate>Sat, 22 May 2010 13:44:20 +0000</pubDate>
		<dc:creator>yku</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[影像處理]]></category>
		<category><![CDATA[教學]]></category>
		<category><![CDATA[Jmagick]]></category>
		<category><![CDATA[servlet]]></category>

		<guid isPermaLink="false">http://blog.yslifes.com/archives/641</guid>
		<description><![CDATA[剛好有個網友提到如何利用Servlet來產生縮圖，利用Servlet來產生而不存放成檔案，這種及時取得圖像的方法，比較不建議使用在需要大量輸出圖的狀況下，這樣子在記憶體的使用上會很重。 而為什麼使用ImageMagick來做縮圖呢？其實Java本身也可來製做縮圖，可是因為本身浮點運算的問題，效果並沒有很好，雖然麻煩了點，還是外掛dll來使用ImagicMagick會來的好。 JMagick ImageMagick等介紹及下載請參考： JMagick-Java open source free影像壓縮 範例的結果： 利用imageToBlob這個函數來產生byte array做為輸出OutputStream ps.記得把檔案先放在c糟，請自行下載範例圖 package yslifes.yku; &#160; import magick.ImageInfo; import magick.MagickException; import magick.MagickImage; &#160; public class JMagickScale &#123; public static byte&#91;&#93; getCompressByte&#40;String RealPathName, int CompressWidth, int CompressHeight&#41; &#123; byte&#91;&#93; data = new byte&#91;1&#93;; if &#40;System.getProperty&#40;&#34;jmagick.systemclassloader&#34;&#41; == null&#41; &#123; System.setProperty&#40;&#34;jmagick.systemclassloader&#34;, &#34;no&#34;&#41;; &#125; try &#123; // 來源路徑 java.io.File source [...]]]></description>
		<wfw:commentRss>http://blog.yslifes.com/archives/641/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[Jsp技巧]看到錯誤碼?找到Exception位置呢?</title>
		<link>http://blog.yslifes.com/archives/634</link>
		<comments>http://blog.yslifes.com/archives/634#comments</comments>
		<pubDate>Mon, 10 May 2010 22:43:25 +0000</pubDate>
		<dc:creator>yku</dc:creator>
				<category><![CDATA[Exception]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[教學]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://blog.yslifes.com/archives/634</guid>
		<description><![CDATA[剛開始學習jsp時，看到了Exception就一個頭二個大，因為好像跟一般Java出現錯誤的表示方式不一樣，Exception的訊息寫的錯誤行數，總跟jsp裡的行數不太一樣？這樣子就不好判斷Exception產生在那裡，進而修改了！ 其實不然，在執行jsp網頁時web-server會把jsp檔先轉換成java檔，再由java檔編譯成class檔，所以要找出錯誤的地方就只需要找到java檔的所在，就可以了。 範例使用的環境是tomcat，Exception直接向網頁丟出，會看大概如下的畫面 可以看到錯誤是java.lan.NullPointException，就是有null的空指標錯誤(翻的不好，應該不能叫指標，java沒有指標) 錯誤訊息由圖上方至圖下面，一個程式一個程式向上丟出的錯誤訊息，也就是說org.apache.jsp_connect_jsp.jspService向org.apache.jasper.runtime.HttpJspBase.service丟出它的錯誤，而org.apache.jasper.runtime.HttpJspBase.service再向javax.servlet.http.HttpServlet.service丟出錯誤，以此類推。 找connect_jsp.java:136行，出NullPointException的地方在connect.jsp這隻程式的第136行，其它列的訊息，因為是系統程式，應該不是真的錯誤來源。 java的package結構，如org.apache.jsp ，也是目錄結構。 所以到tomcat目錄下的work\Catalina\localhost\0502\org\apache\jsp裡找到connect_jsp.java這程式，用記事本打開它。 ps.其中Catalina\localhost是預設的目錄，如果有更改config/server.xml內容，有可能會路徑不同。 ps.0502是網頁的子目錄，例如http://localhost:8080/0502/ 找到第136號錯誤的地方 result = stmt.executeQuery(qq);這行有NullPointException，再來只要解決這個錯誤就可以了。]]></description>
		<wfw:commentRss>http://blog.yslifes.com/archives/634/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>prototype Ajax回傳json物件的處理</title>
		<link>http://blog.yslifes.com/archives/620</link>
		<comments>http://blog.yslifes.com/archives/620#comments</comments>
		<pubDate>Sun, 25 Apr 2010 00:02:03 +0000</pubDate>
		<dc:creator>yku</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[教學]]></category>
		<category><![CDATA[json]]></category>

		<guid isPermaLink="false">http://blog.yslifes.com/archives/620</guid>
		<description><![CDATA[一般人在設計ajax成功回傳事件時，有幾種方式來處理回傳的資料，一種是純文字或html code，一種是xml格式那另一種就是json格式，json格式不像xml需要成對的tag，所以在回傳資料長度上會顯的短很快，如果整個網站都大量使用ajax方法的話，選擇json是一個很好的方法。 json的相關資訊可以在這裡看到：JSON in JavaScript prototype這個framework本身就有支援To JSON的方法，有二種格式可以轉換成json，一種是javascript的class，另一種就是純文字了，不過純文字的內容要為json格式才能被轉換，如下： &#123;&#34;bindings&#34;: &#91; &#123;&#34;ircEvent&#34;: &#34;PRIVMSG&#34;, &#34;method&#34;: &#34;newURI&#34;, &#34;regex&#34;: &#34;^http://.*&#34;&#125;, &#123;&#34;ircEvent&#34;: &#34;PRIVMSG&#34;, &#34;method&#34;: &#34;deleteURI&#34;, &#34;regex&#34;: &#34;^delete.*&#34;&#125;, &#123;&#34;ircEvent&#34;: &#34;PRIVMSG&#34;, &#34;method&#34;: &#34;randomURI&#34;, &#34;regex&#34;: &#34;^random.*&#34;&#125; &#93; &#125;; 所以在設計ajax response文字時，就特意的輸出成json格式的內容，再利用prototype轉成json物件，那就可以在javascript裡直接使用了。 以下用一個簡單的例子來說明，form request ajax要求一個查詢，查詢經由一個jsp做處理，處理好後輸出json格式回傳給剛才的request，接收到response後，轉換成javascript的json物件，再取出物件內容來顯示在畫面上。 底下是prototype Ajax的寫法，直接用form上的設定當成request，然後再處理responseText就可以了。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [...]]]></description>
		<wfw:commentRss>http://blog.yslifes.com/archives/620/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[教學]jsp Web的檔案上傳-FileUpload</title>
		<link>http://blog.yslifes.com/archives/526</link>
		<comments>http://blog.yslifes.com/archives/526#comments</comments>
		<pubDate>Mon, 22 Mar 2010 15:19:00 +0000</pubDate>
		<dc:creator>yku</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[程式]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[upload]]></category>

		<guid isPermaLink="false">http://blog.yslifes.com/archives/526</guid>
		<description><![CDATA[這是一個簡單的fileupload程式，把整個upload動作都包裝在UploadTool這個class裡，而在jsp裡再call此class來做檢查及上傳等動作。jar檔需放置WEB-INF/lib/裡，而程式complier後放置WEB-INF/classes/toolkie/裡。 首先需要二個第三方的jar檔 Apache Filupload及Apache common io 都下載Binary的jar檔就可以了 再來利用下面的程式來進行上傳作業 UploadTool.java package toolkie; import java.io.File; import java.io.UnsupportedEncodingException; import javax.servlet.http.HttpServletRequest; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import java.util.*; public class UploadTool { &#160; private int buffersize = 4096; &#160; private int SizeMax = 1024 * 1024;// 1Mbyte最大檔案大小 &#160; private File tempfile = null; &#160; private String [...]]]></description>
		<wfw:commentRss>http://blog.yslifes.com/archives/526/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Board討論區(1)</title>
		<link>http://blog.yslifes.com/archives/493</link>
		<comments>http://blog.yslifes.com/archives/493#comments</comments>
		<pubDate>Sun, 08 Nov 2009 06:56:12 +0000</pubDate>
		<dc:creator>yku</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[board]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jsql]]></category>

		<guid isPermaLink="false">http://blog.yslifes.com/archives/493</guid>
		<description><![CDATA[規畫會以下面幾個重點完成 概念 1.資料展示 包含 留言者名稱-有提供網站連結時，使用link 留言內容-remove Html Tag 留言時間 2.資料新增 包含 留言者名稱-必填 部落格連結-有連結時，必須包含. 留言者Mail-有填寫時，必須包含.及@ 留言內容 認證碼-提供重新取得認證碼功能 3.資料表格 包含 編號-autoEnCode 留言內容 留言者名稱 部落格連結 留言者Mail 留言時間-System Now DateTime 留言者ip 類型-私密或公開，預設公開 狀態-顯示與否，預設顯示 使用MySQL及jsp完成]]></description>
		<wfw:commentRss>http://blog.yslifes.com/archives/493/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache Roller Java WebBlog 安裝簡介 at GlashFish</title>
		<link>http://blog.yslifes.com/archives/405</link>
		<comments>http://blog.yslifes.com/archives/405#comments</comments>
		<pubDate>Thu, 08 Oct 2009 13:21:39 +0000</pubDate>
		<dc:creator>yku</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[glashfish]]></category>
		<category><![CDATA[webblog]]></category>

		<guid isPermaLink="false">http://blog.yslifes.com/?p=405</guid>
		<description><![CDATA[1.簡介 Apache Roller 是一套Java的WebBlog framework 官網 Apache Roller 它支援市面上大部份的資料庫（oracle、MSSQL、mysql、javadb、apache Derby,PostgresSQL…） Java application Server部份只要可以使用Servlet 2.4 API的Container都可以（resin、Tomcat 5.5 up、Glashfish 2.0 up…） Jdk部份則需要1.5 up ，如果是使用Roller 3.x則可以使用Java 1.4.2版本 2.事前準備 需要先安裝一個java Servlert Continaer Web Server，在這裡使用GlashFish 2.x做範例， 而資料庫部份，則是使用MySQL， 以上這二部份需要先自行安裝及設定完成 另外需要準備MySQL的JDBC Driver及JavaMail所需的jar檔 mysql-connector-java-x.x.x-bin.jar activation.jar mail.jar ps.Apache Roller支援i18n多國語系，為了讓URI支援i18n，所以在Tomcat下請設定/conf/server.xml &#60;Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" debug="0" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" /&#62; 3.開始安裝 一、下載Roller [...]]]></description>
		<wfw:commentRss>http://blog.yslifes.com/archives/405/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[jsp小技巧]利用Throw Exception來完成Ajax</title>
		<link>http://blog.yslifes.com/archives/403</link>
		<comments>http://blog.yslifes.com/archives/403#comments</comments>
		<pubDate>Mon, 28 Sep 2009 13:38:08 +0000</pubDate>
		<dc:creator>yku</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[opensource]]></category>

		<guid isPermaLink="false">http://blog.yslifes.com/archives/403</guid>
		<description><![CDATA[一般在寫Ajax時，最直覺的使用方法就是利用Ajax Object來要求Server給與回應， 再依回應的內容解西倒底是完成動作？還是有錯誤產生，如必填欄位未填。 這裡介紹一個小技巧，在編譯式的網頁伺服器語言可能比較合適使用。 大概的原理是利用程式在執行有錯誤時Throw Exception來當做錯誤訊息， 回傳給client，而client只要接收到503的錯誤，則就可以知道動作並未完成， 反之則是完成。 範例使用prototype來使用Ajax，傳送及回應，有需要可以參考： Ajax 使用prototype.js 1 以下是載行結果，當有填值時，則回應填寫的值， 沒填值的時候就回傳錯誤訊息。（Exception） １需要建立一個class extends Exception 裡面需實作String getMessage()，這是要給ErrorPage取得值使用的 package myexception; public class AjaxException extends Exception { &#160; private String message ; &#160; public AjaxException(String message) &#160; { &#160;&#160;&#160; this.message = message; &#160; } &#160; public String getMessage() &#160; { &#160;&#160;&#160; return this.message; &#160; } [...]]]></description>
		<wfw:commentRss>http://blog.yslifes.com/archives/403/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>java.sql.ResultSet absolute造成out of memory</title>
		<link>http://blog.yslifes.com/archives/360</link>
		<comments>http://blog.yslifes.com/archives/360#comments</comments>
		<pubDate>Fri, 31 Jul 2009 13:59:16 +0000</pubDate>
		<dc:creator>yku</dc:creator>
				<category><![CDATA[Exception]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[程式]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[out of memory]]></category>

		<guid isPermaLink="false">http://blog.yslifes.com/archives/360</guid>
		<description><![CDATA[java.sql.ResultSet 使用absolute方法可以移動ResultSet的指標到想要的筆數， 當 JDBC跟資料庫要資料時，會回傳一個ResultSet，但不是把所有查詢的結果均回傳至Web Server端， 而是只給前面幾筆資料，可以利用ResultSet的方法setFetchSize來設定一次回傳的筆數， (一次傳的多，等待的時間就比較長，傳的太少，要一直跟資料庫要ResultSet.next()也會比較慢) 當ResultSet向下移動碰觸或是快要碰觸到目前回傳的筆數時，會自動再跟資料庫要設定好的筆數， 而把目前筆數以上的資料全都暫存在記憶體裡。 以上是ResulSet的基本原理，當一次查詢的量夠大時，而利用absolute來移動到想要的Row時， 就有可能發生out of memory的問題， 舉個列子： 當想要取得總筆數來做分頁的totrec計算，這時利用absolute移動到最後一筆，取得getRow()來當總數， 這時資料庫會把所有的資料均吐出來給Web Server，而Web Server也會把資料暫存到記憶體裡， 而有多人一起執行這個動作時，像jsp同時有多人一起看同一頁時，則記憶體會完全來不及釋放， 試想有十萬筆*n個要求的資料暫存在記憶體裡，所以這很容易行成out of memory的Runtime Error。 解決方法其實很簡單，就是不要用absolute來取得總筆數，而是利用SQL先跟資料庫要總筆數， (select count(*) as totrec from table where 條件) 當總筆數大於零時，再跟資料庫查詢想要的資料範圍(Oracle:where field between a And b 或是MySQL: limit a,b)， 二次的請求一定比直接使用absolute佔用的記憶體少。 相關資料： Java Gossip: ResultSet 游標控制 Interface ResultSet]]></description>
		<wfw:commentRss>http://blog.yslifes.com/archives/360/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mask Login登入遮罩製作原理</title>
		<link>http://blog.yslifes.com/archives/320</link>
		<comments>http://blog.yslifes.com/archives/320#comments</comments>
		<pubDate>Mon, 22 Jun 2009 12:53:45 +0000</pubDate>
		<dc:creator>yku</dc:creator>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[prototype]]></category>

		<guid isPermaLink="false">http://blog.yslifes.com/archives/320</guid>
		<description><![CDATA[之前有介紹過Mask Login，那現在來介紹Mask Login製作的原理 首先可以看到當頁面顯示完成後，紅色的區塊為Browser的可示範圍 如果要做到遮罩Mask的效果目前最好的方法是遮住可示範圍就可以了 然後在Mask上面放上Login資訊就可以了 效果如下，上下Scroll 時登入畫面及Mask也會跟著動 這次要介紹的是另一種方式，是比上面的方式次一等級的（？） 範例如下 登入遮照 想法如下： 把整個畫面全都Mask起來，再把Login畫面計算到可視畫面中間 所以需要一個計算整個畫面的長寬的Script this.getWindowSize =  function() { var myWidth = 0, myHeight = 0; if( typeof( window.innerWidth ) == 'number' ) { //Non-IE myWidth = window.innerWidth; myHeight = window.innerHeight; } else if( document.documentElement &#38;&#38; ( document.documentElement.clientWidth &#124;&#124; document.documentElement.clientHeight ) ) { //IE 6+ in [...]]]></description>
		<wfw:commentRss>http://blog.yslifes.com/archives/320/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>登入遮罩</title>
		<link>http://blog.yslifes.com/archives/312</link>
		<comments>http://blog.yslifes.com/archives/312#comments</comments>
		<pubDate>Thu, 18 Jun 2009 10:43:00 +0000</pubDate>
		<dc:creator>yku</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[prototype]]></category>

		<guid isPermaLink="false">http://blog.yslifes.com/archives/312</guid>
		<description><![CDATA[登入的遮罩因為Ajax的發達而越來越多，不過每個browser所支援的方式都不太一樣 尤其是IE最搞怪，IE6 IE7 IE8都加減有點不支援或特別點，所以在實作javascript上也變的很麻煩 這裡有些網站做的範例有興趣的可以研究看看 iPeen 在內頁的登入畫面可以看到 funp 右上角就有登入 哇客滿 在最底層的商家，推薦書籤 我也做了一個範例，不過是工程師版的，所以很醜 之後會詳細的說明如何實作及提供原始碼 範例頁 http://www.yslifes.com/MyTest/LoginMaskV2/index.jsp 按登入就會出現啦， 帳號：admin 密碼：12345 按登出就會把登入的記錄取消， 登入成功後都會呼叫callback funcion，我是寫成alert(‘成功’);]]></description>
		<wfw:commentRss>http://blog.yslifes.com/archives/312/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>
