2009年4月16日 星期四

斷行符號的處理

字串中有斷行符號,可以把它取代成空白或HTML的<BR>標記。

Str.replace("\r\n"," ")

Str.replace("\r\n","
")

2009年4月15日 星期三

關於COLLATE Chinese_Taiwan_Stroke_CS_AS 用法

安裝的SQL Server是不區分大小寫的,
若要使用區分大小寫的SQL, 在Where後加上 COLLATE Chinese_Taiwan_Stroke_CS_AS

select * from Templatemaster
where TemplateID = 'PCA' COLLATE Chinese_Taiwan_Stroke_CS_AS

它另一個用途是如果要串兩個SQL資料庫, 也必須用到Chinese_Taiwan_Stroke_CS_AS

2009年3月18日 星期三

安裝 appserv + x64 tomcat 6.0 + win2003 x64

1.http://www.appservnetwork.com/?modules=&applang=tw 下載並安裝一舨的32位元的appserv,
這樣apache, php, phpmyadmin,mysql 就ok了.
方便又好用.

2.從 http://tomcat.apache.org/ 網站上下載tomcat , 但這是32位元用的.
先裝32位元的java及tomcat.
tomcat 及apache 連結方法請參閱這裏.

3.http://java.sun.com/javase/downloads/?intcmp=1281 下載64位元 JDK,
要for X64的

4.http://svn.apache.org/viewvc/tomcat/trunk/res/procrun/amd64/
從tomcat svn 下載 x64 的tomcat6.exe , tomcat6w.exe


5.先裝 JDK, 然後安裝tomcat , 但這只是32位元tomcat.
6.執行tomcat6w.exe 把每一個頁簽資訊都另外記錄下來.


7.將下載下的x64 tomcat6.exe及tomcat6w.exe 到tomcat\bin 目錄下, 把原x32
tomcat6.exe 及 tomcat6w.exe 蓋過去.


8.執行tomcat6w.exe , 把每一個頁簽設定都填回去.

9.再啓動tomcat 就完成了.
10.這樣java 核心及tomcat 6都是x64的, 我在x64 win2003上跑還蠻順的. 沒有發生過什麼問題.

2008年12月4日 星期四

如果使用javax 的功能

要使用javax 的功能, 只要在classpath中指定dt.jar就可以了.
例如
C:\Program Files\Java\jdk1.6.0_06\lib\dt.jar

2008年12月2日 星期二

自定package sample

package flymilk;
public class u_head_java {

public static void main(String args[]) {

System.out.println("Hello world!!");

}
}

//---------------------------------------------------------
設定class
set classpath=C:\flymilk;.
//---------------------------------------------------------
編譯這個class
javac -d . u_head_java.java
//---------------------------------------------------------
執行這個class
java flymilk.u_head_java
//---------------------------------------------------------

編好的class 放到 目錄下
C:\Tomcat\webapps\ROOT\WEB-INF\classes <--放class
C:\Tomcat\webapps\ROOT\WEB-INF\lib <--放jar 檔

class 裏面的function 必須是public 的

2008年11月14日 星期五

SQL資料庫還原令

如果SQL資料庫備份檔要還原的檔案位置, 和原備份位置不相同,
就要修改指令檔備份

指令範例:

RESTORE DATABASE [DSCSYS]

FROM DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\DSCSYS_backup_200811140000.bak\DSCSYS_backup_200811140000.bak'
WITH MOVE 'DSCSYS_data' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\DSCSYS.mdf',
MOVE 'DSCSYS_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\DSCSYS.log',
REPLACE;
GO

2008年10月20日 星期一

使用 apache fileupload (含中文亂碼修正)

之前上傳是使用SmartUpload, 原本是沒問題, 後來tomcat 更新之後.
上傳就出現亂碼, 在網路上花好幾天找解決方法, 但我都設不起來,
我就想下載新版SmartUpload, 後來才發現連SmartUpload網站都消
失了, SmartUpload大概也不會有人更新了. 所以我改用apache
的fileupload , 而且它還持續在更新中. 下面文章是我從各家好手
中的文章試出來, 然後匯整在一起來. 希望能幫大家的忙.
因為找資料試程式真的很辛苦.

一. 先到apache 網站下載 io 及 fileupload 元件
解壓縮後放到C:\Tomcat\webapps\ROOT\WEB-INF\lib 目錄中,
接著重開tomcat 就算成功完裝了.




二.測試上傳功能

<html>
<head>
<title>檔案上傳</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<b>檔案上傳</b></font></p>

<form name="UploadForm" enctype="multipart/form-data" method="post" action="test2.jsp">
<input type="file" name="File1" size="20" maxlength="20"> <br>
<input type="file" name="File2" size="20" maxlength="20"> <br>
<input type="submit"value="上傳">
</form>

</body>
</html>




接收上傳的頁面

<%@ page import="javax.servlet.*"%>
<%@ page import="javax.servlet.http.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.util.regex.*"%>
<%@ page import="org.apache.commons.fileupload.*"%>

<%@page contentType="text/html;charset=UTF-8"%>
<%
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");

String enc = System.getProperty("file.encoding");

out.println(enc);
%>
<html>
<head>
<title>文件上傳處理頁面</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<%

DiskFileUpload fu = new DiskFileUpload();

fu.setSizeMax(2*1024*1024);

fu.setSizeThreshold(4096);
//先處存到暫存區
fu.setRepositoryPath(application.getRealPath("/") + "temp/");
//開始上處
List fileItems = fu.parseRequest(request);
// 依序處理上傳文件
Iterator iter = fileItems.iterator();

//檢查上傳的檔案格式
String regExp=".+\\\\(.+)$";

//拒絕文件類型
String[] errorType={".exe",".com",".cgi",".asp"};
Pattern p = Pattern.compile(regExp);
while (iter.hasNext()) {
FileItem item = (FileItem)iter.next();
//如果是request item 就在這接收
if (item.isFormField()){
String name = item.getFieldName();
String value = item.getString();
out.println("name:"+item.getFieldName());
out.println("value:"+item.getString("UTF-8"));
}

//如果是上傳檔案, 就在這接收

if (!item.isFormField()) {
String name = item.getName();
long size = item.getSize();
if((name==null||name.equals("")) && size==0)
continue;
Matcher m = p.matcher(name);
boolean result = m.find();
if (result){
for (int temp=0;temp<errorType.length;temp++){
if (m.group(1).endsWith(errorType[temp])){
throw new IOException(name+": wrong type");
}
}
try{

//儲存檔案到指定位置


item.write(new File(application.getRealPath("/") + "temp/" + m.group(1)));

out.println(name+"  "+size+"<br>");
// out.println(new String(name.toString().getBytes(), "UTF-8")+"  "+size+"<br>");
}
catch(Exception e){
out.println(e);
}

%>
<TABLE class=text width=100% border=0>
<SCRIPT LANGUAGE="JavaScript">
function back(num)
{
num = num * (-1);

window.parent.frames[1].location.reload();
history.go(num);
}
</SCRIPT>

<TR>
<TD width="10%" >
<FORM METHOD="post">
<INPUT TYPE="button" VALUE="回上一頁" onClick="back(1)">

</FORM>
</TD>


</TR>
</table>
<%

}
else
{
throw new IOException("fail to upload");
}
}
}
%>
</body>
</html>