blogspot.com-GA4

星期六, 10月 30, 2010

JSTL SQL 語法查詢方式

JSTL 查詢 SQL語法的方式

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<sql:setDataSource dataSource="jdbc/sample2" />
<sql:query var="result" >
select NAME from APP.CUSTOMER
</sql:query>
<c:forEach items="${result.rows}" var="row" >
${row.NAME}<br>
</c:forEach>
</body>
</html>


JSTL 雖然提供了這種方式,不過我還是喜歡把DB 處理的部分分開處理,不過在做簡單的頁面的時候這種方式確實方便了很多

星期一, 10月 25, 2010

JSTL 判斷式、日期格式轉換

先設定要使用的 JSTL 語法標籤

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>


1. 判斷日期是否有輸入值有的話,沒有顯示No Value,有的話進行格式化轉換
※ 傳入格式為 字串 yyyyMMdd ,先轉為Date 型態再將其轉為 特定日期格式

<c:choose>
<c:when test="${empty queryDTO.issueDate}">No Value</c:when>
<c:otherwise>
<fmt:parseDate var="tmpObj" value="${queryDTO.issueDate}" type="DATE" pattern="yyyyMMdd" />
<fmt:formatDate value="${tmpObj}" pattern="yyyy/MM/dd" />
</c:otherwise>
</c:choose>


2. 先做字串分割,在進行日期格式轉換

<c:choose>
<c:when test="${empty queryDTO.seDate}">No Value</c:when>
<c:otherwise>
<fmt:parseDate var="tmpObj" value="${fn:substring(queryDTO.seDate,0,8)}" type="DATE" pattern="yyyyMMdd" />
<fmt:formatDate value="${tmpObj}" pattern="yyyy/MM/dd" />
~
<fmt:parseDate var="tmpObj" value="${fn:substring(queryDTO.seDate,9,17)}" type="DATE" pattern="yyyyMMdd" />
<fmt:formatDate value="${tmpObj}" pattern="yyyy/MM/dd" />
</c:otherwise>
</c:choose>

星期五, 10月 08, 2010

HTML Select Javascript 控制

HTML Select Javascript 控制

// 1. 取值方式
document.forms[0].demoSel.options[document.forms[0].demoSel.selectedIndex].value

// 2. 選取對應 下拉
var compElements = document.forms[0].demoSel;
for (var i=0; i< compElements.length; i++){
//loop through all form elements
if (compElements[i].value == company_id+","+company_brief){
compElements[i].checked = true;
}
}

星期日, 10月 03, 2010

fm 日期格式轉換

jstl 1.0
<@taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt"%>

jstl 1.1
<@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
※ 其 taglib 設定需確認 web.xml 中設定

<fmt:parseDate> 標籤用於解析一個日期,並將結果作為 java.lang.Date 類型的實例返回。
<fmt:parseDate> 標籤看起來和 <fmt:formatDate> 標籤的作用正好相反。

// 轉換 String -> Date
<fmt:parseDate var="tmpObj" value="${sourceStr}" type="DATE" pattern="yyyyMMdd" />
pattern: 來源格式
//轉換 Date -> String
<fmt:formatDate var="tmpStr" value="${tmpObj}" pattern="yyyy/MM/dd" />
pattern: 轉出格式

星期三, 9月 29, 2010

JSTL(fn)

fn:contains(string, substring)
如果參數string中包含參數substring,返回true

fn:containsIgnoreCase(string, substring)
如果參數string中包含參數substring(忽略大小寫),返回true

fn:endsWith(string, suffix)
如果參數 string 以參數suffix結尾,返回true

fn:escapeXml(string)
將有意義的XML (和HTML)轉換為對應的XML character entity code,並返回

fn:indexOf(string, substring)
返回參數substring在參數string中第一次出現的位置

fn:join(array, separator)
將array陣列項目用一給定的separator字串串在一起,組成新字串並返回。

fn:length(item)
返回item元素長度。

fn:replace(string, before, after)
用參數after字串去替換string中所有出現參數before的字串,並返回其結果

fn:split(string, separator)
以參數separator 分割string,返回一陣列

fn:startsWith(string, prefix)
如果參數string以參數prefix開頭,返回true

fn:substring(string, begin, end)
返回參數stringy部分的字串,從參數begin開始到參數end,包括end位置的字串

fn:substringAfter(string, substring)
返回參數substring在參數string中~後面的字串

fn:substringBefore(string, substring)
返回參數substring在參數string中前面的那一部份的字串

fn:toLowerCase(string)
將參數string所有字元轉換驗小寫,並返回其字串

fn:toUpperCase(string)
將參數string所有字元轉換驗大寫,並返回其字串

fn:trim(string)
去除參數string 首尾的空白,並返回其字串

星期三, 8月 18, 2010

Eclpise開發Tomcat 發佈問題調整

在發怖Tomcat時有時常因為專案檔案太多,因此在發佈的時候會有缺漏而無法啟動成功,在這邊提供幾個碰到這種問題時的檢查方法,如下的情況是有時候引用了其它的專案,在發佈的時候確無法啟動,而又沒有太多的訊息

ex:
嚴重的: Error listenerStart
2010/8/18 下午 03:12:37 org.apache.catalina.core.StandardContext start
嚴重的: Context [/xxx-web] startup failed due to previous errors
WARN: The method class org.apache.commons.logging.impl.SLF4JLogFactory#release() was invoked.
WARN: Please see http://www.slf4j.org/codes.html for an explanation.

1. 先到網站發佈目錄下檢查 .jar 檔案是不是有缺,到發佈目錄下的 WEB-INF/lib 中檢查
ps: 也有可能是其他的缺檔

2. 檢查引用的專案及 third party 是否有正確載入正確版本,如果同時載入不同版本的 jar 以及專案時,會導致發佈時抓錯版本,在這邊要注意一下


3. 如果在設定以及引用的檔案太多時可以另外使用 .classpath 文字模式來快速尋找


4. 最後檢查這J2EE實際載入的 lib 以及引用專案,有時候在引用專案或是調整 third party元件時,如果在這沒有勾選擇不會發佈到測試的 tomcat中

星期一, 8月 16, 2010

用語法 lock table

lock table 語法
CallableStatement cstmt = sb.pg.con.prepareCall("LOCK TABLE tx005 IN SHARE MODE");
cstmt.execute();
cstmt = sb.pg.con.prepareCall("LOCK TABLE tx007 IN SHARE MODE");
cstmt.execute();


限制筆數
CallableStatement cstmt = pg.con.prepareCall("set rowcount 3");
cstmt.execute();

星期二, 8月 10, 2010

調整Eclpise開發環境tomcat效能

1. 開啟Tomcat配置環境位置,貼入以下 設定
-Xms512m
-Xmx768m
-XX:PermSize=256M
-XX:MaxPermSize=512M



2. 如果在執行中的JVM有亂碼時,修改以下語系設定,或是另外選擇執行時的JVM

星期一, 8月 09, 2010

SVN匯出更新log

1.先查詢更新歷程


2.如果查詢歷程時,資料太多可以點選 (1) 用來過濾,在(2)用更新使用者來進行過濾,如果還是沒有的話就點選 (3)把歷程多抓一些出來顯示
ps. 歷程一開始只會顯示25筆,查不到想要的歷程時,就多使幾次 第(3)步


3. 選擇想要匯出的歷程,點選右鍵選擇 Generate ChangeLog


4. 選擇要匯出的方式,因為我的做法是將匯出的內容,匯出剪貼簿在整理,請依照各自的需要方式選擇

星期四, 8月 05, 2010

Eclpise開發Tomcat 自動發佈問題調整

在Ecplise 中可以直接進行Tomcat測試,但是有時候會發生只修改JSP檔案時,
就會發生Tomcat自動發佈重啟服務導致,可能在測試階段的服務重新啟動,
造成測試上的困擾,這時候就需要關閉自動發佈的功能:

1. 先點開tomcat服務設定
2. 在這邊的設定維持原狀可以不用調整


3. 點開Modules頁籤,把 Auto reloading enabled 前面的打勾拿掉


只要這樣設定以後,就不怕修改更新JSP頁面,Tomcat服務會自動重新發佈的問題,
但是如果想要看到修改 .java 檔案內容,請自己要記得重新重啟 Tomcat服務

星期五, 7月 02, 2010

struts 1.X 版中 taglib設定的差異

1.0 版當中的設定需要有 .tld
(1)需要有正確的 .tld 的 xml,並放到 WEB-INF\ 目錄下

(2)在 web.xml中設定對應 tld 位置
<taglib>
<taglib-uri>/tags/struts-bean</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-html</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-logic</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>


(3) 引用頁面中,設定對應使用 taglib 位置
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>

ps. struts 1.0 版的 tlds 檔,可以在 struts.jar中找到


在1.3 版中
(1) .tld 都包到了 struts-taglib-1.3.X.jar 裡面,所以將放入 lib 下

(2) 在頁面中引入要使用的 taglib
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>

星期四, 7月 01, 2010

struts 1.X 版本中的差異點

最近開始在密集接觸struts中,因為工作上可能還是會接觸到1.x的版本,因此就從 struts 1.3 開始摸,不過沒想到中間碰到了一些改版後被改調的方法,所以特別記錄下來。

// 1.0
if(servlet.getDebug()>=Constants.DEBUG)

// 1.1
if(Integer.parseInt(servlet.getInitParameter("debug"))>=Constants.DEBUG)


//1.0
errors.add(ActionError.GLOBAL_MESSAGE,new ActionError("."))

//1.1 之後沒有了 ActionError,改用 ActionMessage
errors.add(ActionMessages.GLOBAL_MESSAGE,.
new ActionMessage("error.logon.invalid"));


// 1.0
public ActionForward perform
// 1.2.4 之後
public ActionForward execute

星期二, 6月 22, 2010

Android托拉介面DroidDraw

目前我所知道的版本有

1. Google Code

2. DroidDraw

星期六, 6月 19, 2010

Eclipse 安裝 Android

官網

Eclipse 3.5 (Galileo) 的安裝方式,3.4的安裝可以見官方說明

1. Start Eclipse, then select Help > Install New Software.
2. In the Available Software dialog, click Add....
3. In the Add Site dialog that appears, enter a name for the remote site (for example, "Android Plugin") in the "Name" field.

In the "Location" field, enter this URL:

https://dl-ssl.google.com/android/eclipse/

Note: If you have trouble acquiring the plugin, you can try using "http" in the URL, instead of "https" (https is preferred for security reasons).

Click OK.
4. Back in the Available Software view, you should now see "Developer Tools" added to the list. Select the checkbox next to Developer Tools, which will automatically select the nested tools Android DDMS and Android Development Tools. Click Next.
5. In the resulting Install Details dialog, the Android DDMS and Android Development Tools features are listed. Click Next to read and accept the license agreement and install any dependencies, then click Finish.
6. Restart Eclipse.

星期六, 6月 12, 2010

blog 顯示語法設定

1. 打開後台開啟 設計 / 修改 html



2. 將以下內容插入 CSS設定內容中
/* Blogger版 */
.post code {
white-space: pre;
display: block; /* 指定元素顯示的形式 與區塊元素相同:block */
overflow:auto; /* 超出顯示範圍處理 全部顯示:visible 隱藏:hidden 捲軸:scroll 瀏覽器自動選擇:auto */
color:#ffffff;
font-family: Arial,Courier New; /* 文字字型 */
font-size: 10pt; /* 字型大小 */
line-height: 10px; /* 文字段落行高 */
padding: 10px 10px 10px 21px; /* 內距綜合設定 依序為上右下左 */
margin: 5px 20px 5px 20px ; /* 邊界綜合設定 依序為上右下左 */
border: 1px dashed #ccc; /* 框線綜合設定 依序為粗細 線類 顏色 */
/*背景設定 依序為 背景色碼 背景圖URL*/
background: #f0f0f0 url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5WvIBYayDEyXt7nN-dmpTEjmUON3LhZjupOqzHK16OBrWJc5-eDf_r_PlvthAKl7cqlMUkvNBFQgjlsq1KxAx2PL6Ui6pnthgOB8pMFAwqgFm6Th8ZI5TdCuf-eynRWcnVYPZ9A/) left top repeat-y;

}


/* Pixnet版 */
code {
white-space: pre;
display: block; /* 指定元素顯示的形式 與區塊元素相同:block */
overflow:auto; /* 超出顯示範圍處理 全部顯示:visible 隱藏:hidden 捲軸:scroll 瀏覽器自動選擇:auto */
font-family: Arial,Courier New; /* 文字字型 */
font-size: 10pt; /* 字型大小 */
line-height: 15px; /* 文字段落行高 */
padding: 10px 10px 10px 21px; /* 內距綜合設定 依序為上右下左 */
margin: 5px 40px 5px 40px ; /* 邊界綜合設定 依序為上右下左 */
border: 1px dashed #ccc; /* 框線綜合設定 依序為粗細 線類 顏色 */
background: #f0f0f0 url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5WvIBYayDEyXt7nN-dmpTEjmUON3LhZjupOqzHK16OBrWJc5-eDf_r_PlvthAKl7cqlMUkvNBFQgjlsq1KxAx2PL6Ui6pnthgOB8pMFAwqgFm6Th8ZI5TdCuf-eynRWcnVYPZ9A/) left top repeat-y; /*背景設定 依序為 背景色碼 背景圖URL*/
//max-height:400px;
}


3. 完成以上步驟後,在想要顯示的段落中加入
<code>
(1)取代HTML標籤語法將以下三個符號取代為:
< 取代為&lt; 、>取代為&gt;、& 取代為&amp;

(2)<code>
想要加入的內容...
</code>

CSS 的 white-space有三種屬性可以設定
1預設值normal:
會把空白、Tab或是換行都替換成一個半形的空白,並且文章太長時而超出區塊範圍的話,也會自動換行
2、nowrap:
一樣會把空白、Tab或是換行都替換成一個半形的空白,這是讓文章過長也不會自動換行的屬性
3、pre:
會正常顯示出空白、Tab與換行的樣式

星期六, 5月 08, 2010

jQuery Impromptu 彈出視窗 1

基本語法

$.prompt( msg , options )


整理出幾個基本常會用的用法

// 1. 簡易彈出視窗
$.prompt('Example 1');

// 2. OK,Cancel
$.prompt('Example 2',{ buttons: { Ok: true, Cancel: false } });


// 3. 跳出訊息視窗時,會預設按鈕,傳統的訊息視窗會預設在確認按鈕上,此部分在警告流程中,使用者很喜歡這樣的方式
$.prompt('Example 4',{ buttons: { Ok: true, Cancel: false }, focus: 1 });

// 4. 此使用 prefix 屬性來改變 css
$.prompt('Example 5',{ prefix: 'impromptu' });

// 5. 加入顯示特效
$.prompt('Example 6',{ show:'slideDown' });

// 6. 顯示自訂樣式彈出視窗
var brown_theme_text = 'Example 13'+
'<p> Save these settings?</p>'+
'<img src="images/help.gif" alt="help" '+
'class="helpImg" />';

$.prompt(brown_theme_text,{
buttons:{Ok:true,Cancel:false},
prefix:'brownJqi'
});


// 7. 多步驟決定彈出視窗
var statesdemo = {
state0: {
html:'test 1.<br/>test 1..<br/>test 1...',
buttons: { Cancel: false, Next: true },
focus: 1,
submit:function(v,m,f){
if(!v) return true;
else
$.prompt.goToState('state1');
return false;
}
},
state1: {
html:'test 2',
buttons: { Back: -1, Exit: 0 },
focus: 1,
submit:function(v,m,f){
if(v==0) $.prompt.close()
else if(v=-1)
$.prompt.goToState('state0');
return false;
}
}
};

$.prompt(statesdemo);



以上幾個是比較常用到的彈出視窗


參考資料來源:http://trentrichardson.com/Impromptu/index.php

甘特圖表工具

甘特圖:最主要的功能就是協助專案管理者了解目前專案中的細項工作,以及各項工作目前的進度以及應完成的時間等資訊的圖表,除此之外,專案小組中的資源分配,也可以透過甘特圖來顯示。

GanttProject–甘特圖式專案管理軟體,可以匯出/匯入與微軟Project相容的格式。


2010/05/08

星期二, 3月 23, 2010

OPENXML (Transact-SQL)用 SQL語法抓取 XML格式檔案

參考來源

讀取資料來源

DECLARE @idoc int
DECLARE @doc varchar(1000)
SET @doc ='
<ROOT>
<Customer CustomerID="VINET" ContactName="Paul Henriot">
<Order CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00:00">
<OrderDetail OrderID="10248" ProductID="11" Quantity="12"/>
<OrderDetail OrderID="10248" ProductID="42" Quantity="10"/>
</Order>
<Child>SON</Child>
</Customer>
<Customer CustomerID="LILAS" ContactName="Carlos Gonzlez">
<Order CustomerID="LILAS" EmployeeID="3" OrderDate="1996-08-16T00:00:00">
<OrderDetail OrderID="10283" ProductID="72" Quantity="3"/>
</Order>
</Customer>
</ROOT>
'
--Create an internal representation of the XML document.
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
-- Execute a SELECT statement that uses the OPENXML rowset provider.


顯示SQL讀取 XML

方式一

SELECT *
FROM OPENXML (@idoc, '/ROOT/Customer',1)
WITH (CustomerID varchar(10),
ContactName varchar(20),
Child varchar(10))


以下為結果集:
CustomerID ContactName Child
---------- -------------------- ------------------
VINET Paul Henriot NULL
LILAS Carlos Gonzlez NULL


如果相同的 SELECT 陳述式以 flags 設為 2 來執行 (表示元素中心對應),由於 元素不具有任何子元素,因此 XML 文件中兩個客戶的 CustomerID 及 ContactName 值會以 NULL 傳回。

※ 在文章中沒有寫到子元素的部分,紅色部分為子元素的結果,補充子元素的部分

以下為結果集:

CustomerID ContactName Child
---------- ----------- ------------------
NULL NULL SON
NULL NULL NULL

因此如果要子元素同顯示,則要改用可指定名稱


方式二

SELECT *
FROM OPENXML (@idoc, '/ROOT/Customer/Order/OrderDetail',2)
WITH (OrderID int '../@OrderID',
CustomerID varchar(10) '../@CustomerID',
OrderDate datetime '../@OrderDate',
ProdID int '@ProductID',
Qty int '@Quantity',
Child varchar(10) '/ROOT/Customer/Child'
)


以下為結果集:
OrderID CustomerID OrderDate ProdID Qty Child
------------------------------------------------------------------------
10248 VINET 1996-07-04 00:00:00.000 11 12 SON
10248 VINET 1996-07-04 00:00:00.000 42 10 SON
10283 LILAS 1996-08-16 00:00:00.000 72 3 SON


方式三:擷取邊緣資料表中的所有資料行。

SELECT *
FROM OPENXML (@idoc, '/ROOT/Customers')
EXEC sp_xml_removedocument @idoc

星期二, 3月 16, 2010

java新手犯的錯可讓人啼笑皆非~~String 比對

最近工作接到了某個公司的派遣~~真的遇到了以下的錯誤,
而這在Java語法裡面是有代表著不同的意義。

String的 三種比對 = =、equals、compareTo
1. = = 這種比對方式在其他語言中可以直接用來做字串的比對,
但是在Java中這樣的比對是用來檢查,引用關聯記憶體使用的物件是否相同,
所以當 new 兩個String時,這樣的比對馬上就出問題了

2. equals 這個方法才是Java正確的字串比對方式,而對於物件需要做比對時,也是使用此方式,而數字是用 = =

3. compareTo 這種方式是用來做字串的比對大小時使用的,可不是用來比對是否相等,但是居然還是有看到有人拿來做比對用,雖然是可以,但我個人還是非常不建議這樣子用


這是我目前看到有新手用了 1.3種方法來做比對,
雖然第3種方法可以,但在比對相同情形下還是不建議使用,
另外有Comarator 物件可以用來做比對排序

星期三, 2月 24, 2010

Ajax顯示圖片


  • iCarousel

    iCarousel是一個開源的javascript工具用於創建旋轉/輪播效果的控制項。

  • jCarousel Lite

    這個jQuery插件能夠幫助你以滾動(carousel)的方式來組織圖片和其他內容。

  • jCarousel

    jCarousel是一個jQuery插件用於控制一個列表專案的水平或垂直順序,列表專案的內容可以是靜態HTML內容或通過AJAX載入的內容。可以向前或向後滾動。


  • Carousel Component

    這個carousel元件可以用於水平或垂直地展示一個內容列表(包含在UL中的一組HTML LI元素)。

  • Carousel.us

    Carousel.us是一個prototype.js和scriptaculous.js框架開發的Javascript 3D carousel。


  • ThickBox

    ThickBox是一個模式對話方塊UI控制項。基於jQuery開發,可以用來展示單張或多張圖片,內嵌的內容,iframed的內容,或通過Ajax獲取的內容。

星期二, 2月 09, 2010

Javascript壓縮工具-yui compressor

yui compressor

可以將Javascript進行壓縮整理,加快執行效率

星期一, 1月 04, 2010

Jakarta 中 的 common-lang StringUtils

Jakarta 中 的 common-lang
StringUtils 是個好用的工具
列出幾個簡單好用的 method


//判斷是否為 null 空字串
StringUtils.isEmpty(str);
// 使用以下方法則相反
StringUtils.isNotEmpty(str)

// 判斷 string 是否為 空白(半形、全形都會為true)、""、或、null
StringUtils.isBlank(str)

// 比對 str1 str2 ,比對 Null 不會有null pointer 錯誤
StringUtils.equals(str1 , str2);

// 呼略大小寫比對
StringUtils.equalsIgnoreCase(str1 , str2);