PIXNET Logo登入

狐的窩

跳到主文

享受生活

部落格全站分類:圖文創作

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 4月 29 週二 201413:41
  • Characterset problem when inserting into mysql database from java

哈,又是編碼問題。本來用 WebSphere 和 DB2 的環境,資料新增至資料庫中文都沒問題,怎麼一換到 tomcat 和 MySQL 這組合就中文新增到資料庫時就變成了問號。
最後試驗的結果,需在 connection string 加上 useUnicode=true&characterEncoding=utf8 這段設定,這樣中文新增到資料庫就會正常了,不會再是?字元。
JDBC use like
String conString = "jdbc:mysql://host/database?useUnicode=true&characterEncoding=utf8";
DataSource resource url like
url="jdbc:mysql://host/database?useUnicode=true&characterEncoding=utf8"
(繼續閱讀...)
文章標籤

mark528 發表在 痞客邦 留言(0) 人氣(33)

  • 個人分類:Java
▲top
  • 2月 23 週日 201422:02
  • Exception starting filter struts2 Unable to load configuration. - bean

原本在 WebSphere 跑得好好的程式,怎麼換到 Tomcat 又出問題了?
2014/2/23 下午 09:30:16 org.apache.catalina.core.StandardContext filterStart
嚴重的: Exception starting filter struts2
Unable to load configuration. - bean - jar:file:/D:/WebServer/tomcat-7.0.33/webapps/1qrcardadm/WEB-INF/lib/struts2-core-2.3.15.1.jar!/struts-default.xml:53:178
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:502)
at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74)
... 19 more
Caused by: Unable to load configuration. - bean - jar:file:/D:/WebServer/tomcat-7.0.33/webapps/1qrcardadm/WEB-INF/lib/struts2-core-2.3.15.1.jar!/struts-default.xml:53:178
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:70)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:446)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:490)
... 20 more
Caused by: Unable to load bean: type:org.apache.struts2.dispatcher.multipart.MultiPartRequest class:org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest - bean - jar:file:/D:/WebServer/tomcat-7.0.33/webapps/1qrcardadm/WEB-INF/lib/struts2-core-2.3.15.1.jar!/struts-default.xml:53:178
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:245)
at org.apache.struts2.config.StrutsXmlConfigurationProvider.register(StrutsXmlConfigurationProvider.java:102)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:226)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67)
... 22 more
Caused by: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileUploadBase$SizeLimitExceededException
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
at java.lang.Class.getDeclaredConstructors(Class.java:1836)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:235)
... 25 more
Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
... 29 more
最後從 Caused by: java.lang.NoClassDefFoundError: org/apache/commons/fileupload 看出個大概,將 commons-fileupload-1.3.jar 丟到 lib 去,問題解決。
(繼續閱讀...)
文章標籤

mark528 發表在 痞客邦 留言(0) 人氣(55)

  • 個人分類:Java
▲top
  • 2月 23 週日 201419:43
  • Connect to MySQL with JDBC driver

目錄
1. Connection to database with Java
2. MySQL JDBC Driver
3. Java JDBC connection example
1. Connect to database with java
在 java 要連接到資料最簡單就是使用各資料庫提供的驅動程式,透過 JDBC 提供的接口來使用和操作資料庫。
2. MySQL JDBC Driver
從 Java 要連接到 MySQL ,你必須使用 MySQL JDBC 驅動程式。最新版的驅動程式可以從 MySQL 官網 下載,要下載此驅動程式需要有 Oracle Web 的帳號(沒有,可以註冊一個新的)。
NOTE: 安裝過程完全沒顯示會裝在哪,直接會裝在系統槽,如C:,目錄則為 C:\Program Files\MySQL\MySQL Connector J ,目錄中一拖車的東西,其實所需要的只有 mysql-connector-java-版號-bin.jar 這個檔案。
3. Java JDBC connection example
NOTE:請記得將驅動程式的 jar 加到 classpath 中。
(繼續閱讀...)
文章標籤

mark528 發表在 痞客邦 留言(0) 人氣(375)

  • 個人分類:Java
▲top
  • 2月 21 週五 201418:25
  • How to get the HttpServletRequest in Struts 2

Struts 2 可透過 org.apache.struts2.ServletActionContext 來取得 HttpServletRequest
HttpServletRequest request = ServletActionContext.getRequest();
(繼續閱讀...)
文章標籤

mark528 發表在 痞客邦 留言(0) 人氣(75)

  • 個人分類:Java
▲top
  • 2月 21 週五 201418:14
  • How to get ip address in java servlet

一般都是用下列的方式來取得客戶端的 ip 位址
String ipAddress = request.getRemoteAddr();
可是當客戶端是經過 proxy server 或是 load balancer server 來連接,這樣就取不到原始的 ip 位址,此時要透過 http request Header 中的 X-FORWARDED-FOR 來取得 ip 位址
String ipAddress = request.getHeader("X-FORWARDED-FOR");
(繼續閱讀...)
文章標籤

mark528 發表在 痞客邦 留言(0) 人氣(476)

  • 個人分類:Java
▲top
  • 6月 26 週三 201316:02
  • java.lang.NoClassDefFoundError: org/apache/oro/text/perl/Perl5Util

問題:
使用org.apache.commons.validator.GenericValidator.matchRegexp,發生下列錯誤
Exception in thread "main" java.lang.NoClassDefFoundError:
org.apache.oro.text.perl.Perl5Util
at org.apache.commons.validator.GenericValidator.matchRegexp(GenericValidator.java:65)
at com.fesc.bot.batch.BatchJob.downloadFiles(Unknown Source)
at com.fesc.bot.batch.FD903C.exec(Unknown Source)
at com.fesc.bot.batch.FD903C.main(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.apache.oro.text.perl.Perl5Util
at java.net.URLClassLoader.findClass(URLClassLoader.java:434)
at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:665)
at java.lang.ClassLoader.loadClass(ClassLoader.java:644)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:358)
at java.lang.ClassLoader.loadClass(ClassLoader.java:627)
... 4 more
解決:
由錯誤訊息判斷應該缺少oro project的jar
連到ORO official site,卻發現As of 2010-09-01, the ORO project is retired.
改到common-validator official site,下載最新版本的jar,重新執行程式測試,確認錯誤不會發生。
(繼續閱讀...)
文章標籤

mark528 發表在 痞客邦 留言(0) 人氣(148)

  • 個人分類:Java
▲top
  • 6月 06 週四 201315:19
  • [java] Performance of StringTokenizer V.S. String.split

java 用來分割字串的方法,就我所知道有StringTokenizer和String.split。為了知道哪種效能比較好,寫了個小程式測了一下。
import java.lang.StringBuilder;
import java.lang.System;
import java.util.StringTokenizer;
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
public class Test {
  public static void main(String[] args) {
   StringBuilder sb = new StringBuilder();
   for (int i=1000; i<1100; i++) {
    sb.append(i).append(" ");
  }
  String str = sb.toString();
int runs = 100000;
for (int i = 0; i < 5; i++) {
{
long start = System.nanoTime();
for (int r = 0; r < runs; r++) {
StringTokenizer st = new StringTokenizer(str);
List list = new ArrayList();
while (st.hasMoreTokens()) {
list.add(st.nextToken());
}
}
long time = System.nanoTime() - start;
System.out.printf("StringTokenizer took an average of %.1f us%n", time / runs / 1000.0);
}
{
long start = System.nanoTime();
for (int r = 0; r < runs; r++) {
List list = Arrays.asList(str.split(" "));
}
long time = System.nanoTime() - start;
System.out.printf("String.split took an average of %.1f us%n", time / runs / 1000.0);
}
}
}
}
結果顯示:
StringTokenizer took an average of 12.7 us
String.split took an average of 9.8 us
StringTokenizer took an average of 12.6 us
String.split took an average of 9.4 us
StringTokenizer took an average of 12.6 us
String.split took an average of 9.4 us
StringTokenizer took an average of 13.2 us
String.split took an average of 9.4 us
StringTokenizer took an average of 12.5 us
String.split took an average of 9.5 us
看來String.split表現得比較好
(繼續閱讀...)
文章標籤

mark528 發表在 痞客邦 留言(0) 人氣(336)

  • 個人分類:Java
▲top
  • 6月 06 週四 201315:16
  • [java] String.split()用法

在java,可以使用String.split(delimiter),將字串分割成數個token,得到一個回傳的String array。
例如:
String str = "aaa:bbb:ccc:ddd";
String[] tokens = str.split(":");
for (String token:tokens) {
   System.out.println(token);
}
結果顯示:
aaa
bbb
ccc
ddd
如果字串中有多個分隔符號時,就須加上"|"。
String str = "aaa:bbb-ccc_ddd";
String[] tokens = str.split(":|-|_");
for (String token:tokens) {
   System.out.println(token);
}
結果顯示:
aaa
bbb
ccc
ddd
當delimiter用到特殊字元時,如".", "|", "$",此時要在特殊字元前面加上"\\",才會得到正確的結果。
String str = "aaa-bbb-ccc.ddd";
String[] tokens = str.split("-|\\.");
for (String token:tokens) {
   System.out.println(token);
}
結果顯示:
aaa
bbb
ccc
ddd
(繼續閱讀...)
文章標籤

mark528 發表在 痞客邦 留言(1) 人氣(60,454)

  • 個人分類:Java
▲top
  • 5月 13 週一 201316:21
  • [Java]String.format 好好用

java 1.5 String.format 以前就覺得很好用,本想查查有多少 Conversion 可以用,沒想到一查 Formatter 中的各種 Conversion ,稍微試了一下,以前像 Date 處理、add leading zero、金額加上","等情況,都變得很容易處理了。
import java.util.Date;
public class StringFormatT {
public static void main(String[] args) {
System.out.println("===== test argument index ======================================================");
System.out.println("original\t10\t20");
System.out.println("format\t\t%1$s\t%1$d\t%2$s\t%2$d");
System.out.println(String.format("result\t\t\"%1$s\"\t%1$d\t\"%2$s\"\t%2$d", 10, 20));
System.out.println("original\t10\t20\t30\t40");
System.out.println("format\t\t%1$s\t%3$d\t%4$s\t%2$d");
System.out.println(String.format("result\t\t\"%1$s\"\t%3$d\t\"%4$s\"\t%2$d", 10, 20, 30, 40));
System.out.println("================================================================================");
System.out.println("===== formatted as string ======================================================");
System.out.println("original\t\"abc\"\tnull\t(byte)1\t3.14");
System.out.println("format\t\t%s\t%S\t%s\t%S");
System.out.println(String.format("result\t\t%s\t%S\t%s\t%S", "abc", null, (byte)1, 3.14));
System.out.println("================================================================================");
System.out.println("===== formatted as boolean =====================================================");
System.out.println("original\t\"abc\"\tnull\t(byte)1\t3.14");
System.out.println("format\t\t%b\t%B\t%b\t%B");
System.out.println(String.format("result\t\t%b\t%B\t%b\t%B", "abc", null, (byte)1, 3.14));
System.out.println("================================================================================");
System.out.println("===== formatted as hex =========================================================");
System.out.println("original\t\"100\"\tnull\t100\tnew Integer(100)\t3.14");
System.out.println("format\t\t%h\t%H\t%h\t%H\t\t\t%h");
System.out.println(String.format("result\t\t%h\t%H\t%h\t%H\t\t\t%h", "100", null, 100, new Integer(100), 3.14));
System.out.println("================================================================================");
System.out.println("===== formatted as character ===================================================");
System.out.println("original\t'A'\t97\t97");
System.out.println("format\t\t%s\t%C\t%c");
System.out.println(String.format("result\t\t%s\t%C\t%c", 'A', 97, 97));
System.out.println("================================================================================");
System.out.println("===== formatted as integer =====================================================");
System.out.println("original\t100\t100\t100");
System.out.println("format\t\t%d\t%o\t%h");
System.out.println(String.format("result\t\t%d\t%o\t%h", 100, 100, 100));
System.out.println("================================================================================");
System.out.println("===== formatted as big number ==================================================");
System.out.println("original\t123456789L");
System.out.println("format\t\t%1$d\t\t%1$,d");
System.out.println(String.format("result\t\t%1$d\t%1$,d", 123456789L));
System.out.println("================================================================================");
System.out.println("===== formatted as float =======================================================");
System.out.println("original\t123456789.98765");
System.out.println("format\t\t%1$.2a\t\t%1$.2e\t\t%1$.2f\t\t%1$.2g");
System.out.println(String.format("result\t\t%1$.2a\t%1$.2e\t%1$.2f\t%1$.2g", 123456789.98765));
System.out.println("================================================================================");
System.out.println("===== formatted as date ========================================================");
long currentTime = System.currentTimeMillis();
Date date = new Date();
System.out.println("original\tCurrent datetime use System.currentTimeMillis()");
System.out.println("format\t\t%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS");
System.out.println(String.format("result\t\t%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS", currentTime));
System.out.println("format\t\t%1$tF %1$tT");
System.out.println(String.format("result\t\t%1$tF %1$tT", currentTime));
System.out.println("original\tCurrent datetime use java.util.Date");
System.out.println("format\t\t%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS");
System.out.println(String.format("result\t\t%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS", date));
System.out.println("================================================================================");
System.out.println("===== What's the effect of width.precision on String? ==========================");
System.out.println("original\tabcdefg");
System.out.println("format\t\t[%1$s]\t\t[%1$10s]\t[%1$10.4s]\t[%1$-10s]");
System.out.println(String.format("result\t\t[%1$s]\t[%1$10s]\t[%1$10.4s]\t[%1$-10s]", "abcdefg"));
System.out.println("================================================================================");
System.out.println("===== padding easy ==========================");
System.out.println("original\tadd leading zero");
System.out.println("format\t\t%012d");
System.out.println(String.format("result\t\t%012d", 123));
System.out.println("================================================================================");
System.out.println("===== test new line ============================================================");
System.out.println("original\t[%n]");
System.out.println("format\t\t%n");
System.out.println(String.format("result\t\t[%n]"));
System.out.println("================================================================================");
}
}
結果顯示:
===== test argument index ====================================================== original 10 20 format %1$s %1$d %2$s %2$d result "10" 10 "20" 20 original 10 20 30 40 format %1$s %3$d %4$s %2$d result "10" 30 "40" 20 ================================================================================ ===== formatted as string ====================================================== original "abc" null (byte)1 3.14 format %s %S %s %S result abc NULL 1 3.14 ================================================================================ ===== formatted as boolean ===================================================== original "abc" null (byte)1 3.14 format %b %B %b %B result true FALSE true TRUE ================================================================================ ===== formatted as hex ========================================================= original "100" null 100 new Integer(100) 3.14 format %h %H %h %H %h result bdf1 NULL 64 64 11e29ba7 ================================================================================ ===== formatted as character =================================================== original 'A' 97 97 format %s %C %c result A A a ================================================================================ ===== formatted as integer ===================================================== original 100 100 100 format %d %o %h result 100 144 64 ================================================================================ ===== formatted as big number ================================================== original 123456789L format %1$d %1$,d result 123456789 123,456,789 ================================================================================ ===== formatted as float ======================================================= original 123456789.98765 format %1$.2a %1$.2e %1$.2f %1$.2g result 0x1.d7p26 1.23e+08 123456789.99 1.2e+08 ================================================================================ ===== formatted as date ======================================================== original Current datetime use System.currentTimeMillis() format %1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS result 2013-05-13 16:08:57 format %1$tF %1$tT result 2013-05-13 16:08:57 original Current datetime use java.util.Date format %1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS result 2013-05-13 16:08:57 ================================================================================ ===== What's the effect of width.precision on String? ========================== original abcdefg format [%1$s] [%1$10s] [%1$10.4s] [%1$-10s] result [abcdefg] [ abcdefg] [ abcd] [abcdefg ] ================================================================================ ===== padding easy ========================== original add leading zero format %012d result 000000000123 ================================================================================ ===== test new line ============================================================ original [%n] format %n result [ ] ================================================================================
(繼續閱讀...)
文章標籤

mark528 發表在 痞客邦 留言(0) 人氣(351)

  • 個人分類:Java
▲top
  • 1月 31 週四 201315:49
  • Problem Using Java execute shell script with piped symbol command or redirect the output

果然多試幾個指令後,發現之前的用法,雖然沒什麼問題,但是遇到指令有帶 | 或是重新導向的語法時,問題就顯示出來,需改用下面的方式就解決了。
import java.io.*;
import java.net.*;
import java.util.*;
public class runshell {
    public static void main(String a[]) throws Exception {
        List cmds = new ArrayList();
        cmds.add("sh");
        cmds.add("-c");
        cmds.add("ps -ef | grep -v grep");
        ProcessBuilder pb =new ProcessBuilder(cmds);
        Process pl = pb.start();
        String line = "";
        BufferedReader p_in = new BufferedReader(new InputStreamReader(pl.getInputStream()));
        while ((line = p_in.readLine()) != null) {
            System.out.println(line);
        }
        p_in.close();
    }
}
(繼續閱讀...)
文章標籤

mark528 發表在 痞客邦 留言(0) 人氣(55)

  • 個人分類:Java
▲top
12»

文章搜尋

好康資訊

熱門文章

  • (16,019)Excel:如何讀取固定欄位值
  • (15,178)用 excel 來記錄體重及體脂肪
  • (336)紙模:史上最強的水管工 馬力歐
  • (11,740)Shell Script:運用 date 指令取得日期時間(Linux)
  • (7,234)Shell Script: 控制文字顏色
  • (1,927)Perl: 快速分解檔案路徑及名稱。 use File::Basename
  • (11,149)忘記PostgreSQL資料庫管理者密碼,要如何重新設定
  • (4,863)Oracle內建常用字串函數
  • (309)紙模:能天使貓型鋼彈
  • (3,380)在Windows安裝xdebug(Debug tool for php)

文章分類

toggle 資料庫 (5)
  • DB2 (8)
  • SQL Server (6)
  • MySQL (7)
  • Oracle (10)
  • PostgreSQL (6)
toggle 手工物製作 (3)
  • 模型 (25)
  • PaperCraft (110)
  • 手帳 (3)
toggle 學習心得 (3)
  • PMP (1)
  • 讀書心得 (2)
  • 學習心得 (17)
toggle 程式設計 (15)
  • 專案管理 (1)
  • Websphere (1)
  • HTML (3)
  • Visual C++ (8)
  • Windows 8 (1)
  • Java (20)
  • JSP (4)
  • Web (6)
  • C# (11)
  • Windows Scripting Host (1)
  • Shell Script (3)
  • ASP.NET (6)
  • WebPI (1)
  • PHP (5)
  • Perl (7)
toggle 生活綜合 (2)
  • 生活資訊 (73)
  • 生活雜記 (25)
toggle 網路資源 (2)
  • 圖像和圖示 (3)
  • 網路空間應用 (1)
toggle 軟體應用 (5)
  • Windows 8 (1)
  • CentOS (7)
  • excel (6)
  • iphone (25)
  • 虛擬軟體 (2)
  • 未分類文章 (1)

文章精選

個人資訊

mark528
暱稱:
mark528
分類:
圖文創作
好友:
累積中
地區:

參觀人氣

  • 本日人氣:
  • 累積人氣: