
2005年6月7日
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
</head>
<body>
?<SCRIPT language="javascript">
?function next()
?? {
?? if(event.keyCode==13)event.keyCode=9;
? }
?</SCRIPT>
<form name="form1" method="post" action="">
<input onkeydown="next()" name="text1">
<input onkeydown="next()" name="text2">
<input onkeydown="next()" name="text3">
<input onkeydown="next()" name="text5">
<input onkeydown="if(event.keyCode==13)event.keyCode=9" name="text4">
? <input type="submit" name="Submit" value="Submit">
? <input type="reset" name="Submit2" value="Reset">
</form>
</body>
</html>
posted @
2006-04-04 13:24 似水流年 閱讀(3300) |
評論 (1) |
編輯 收藏
摘要: 以下是摘自http://xdoclet.sourceforge.net/xdoclet/tags/hibernate-tags.html的內容
@hibernate Tag Reference
Tags for declaration of Hibernate descriptor file
Applies to: All classes, at class level and on get...
閱讀全文
posted @
2005-11-15 14:03 似水流年 閱讀(1126) |
評論 (0) |
編輯 收藏
一.安裝
1.安裝jdk1.5,E:\server\jdk1.5
2.安裝mysql 4.0,E:\server\mysql
3.安裝Ant 1.6,E:\apache-ant-1.6.2
4.安裝tomcat5.5,E:\tomcat5
二.系統路徑的設置:
1、JAVA_HOME = E:\server\jdk1.5
2、MYSQL_HOME = E:\server\mysql
3、ANT_HOME = E:\apache-ant-1.6.2
4、CATALINA_HOME = E:\tomcat5
5、path,%JAVA_HOME%\bin;%ANT_HOME%\bin;%CATALINA_HOME%\bin;%MYSQL_HOME%\bin
三.安裝appfuse-1.8.2,E:\jbproject\appfuse
1.將..\appfuse\lib\junit3.8.1\junit.jar拷貝到%ANT_HOME%/lib目錄下
2.根據需要修改build.properties以下部分
#database.jar=${postgresql.jar}
#database.type=postgresql
#database.host=localhost
#database URL for creating other databases (doesn't work with pgsql)
#database.admin.url=jdbc:${database.type}://${database.host}/template1
#database.admin.username=postgres
#database.admin.password=postgres
#hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
#database.driver_class=org.postgresql.Driver
#database.url=jdbc:${database.type}://${database.host}/${database.name}
我只修改了database.admin.password=我的mysql密碼
3.安裝的可選項,
如果你希望使用 iBATIS 作為持久化framework, 查看extras/ibatis目錄下的 README.txt 文件或者運行 ant install-ibatis。
如果你希望使用 Spring 作為web framework, 查看 extras/spring 目錄下的 README.txt 文件或者運行 ant install-springmvc。
如果你希望使用 WebWork 作為web framework, 查看extras/webwork 目錄下的 README.txt 文件或者運行 ant install-webwork。
如果你希望使用 JSF 作為web framework, 查看 extras/jsf 目錄下的 README.txt 文件或者運行 ant install-jsf。
如果你希望使用 Tapestry 作為web framework, 查看 extras/tapestry 目錄下的 README.txt 文件或者運行 ant install-tapestry。
四.新建項目
1. 在控制臺,E:\jbproject\appfuse>ant new 按照提示輸入application名稱(myapp),database名稱(mydb),package名稱(com.jinn).
2. 如果package名稱不是org.appfuse,拷貝appfuse下的ApplicationResources_zh_CN.properties和ApplicationResources_zh.properties到對應的路徑下myapp下。(注意如果你的package名稱不是org.appfuse(或不是以org開頭?沒有做過測試),會提示你輸入the first part of your new package,先別忙著
輸入,看看myapp,跟appfuse一樣,我要你著重看看myapp\web\WEB-INF\classes下的ApplicationResources_zh_CN.properties或ApplicationResources_zh.properties
跟appfuse下是一樣的。輸入the first part of your new package,例如com,再看看myapp\web\WEB-INF\classes下的ApplicationResources_zh_CN.properties或ApplicationResources_zh.properties
它的內容變了。原來appfuse在執行rename package的過程中把相關的properties內容做了處理。這會造成頁面顯示亂碼。
3. 運行E:\jbproject\myapp>ant setup ,BUILD SUCCESSFUL,在瀏覽器輸入http://localhost:8080/myapp。一切正常,此時打開查看${CATALINA_HOME}\webapps\myapp\WEB-INF\classes\ApplicationResources_zh_CN.properties,已被編碼轉換。
4. 關閉tomcat,運行E:\jbproject\myapp>ant test-all,出錯," failed with message "Wrong document title found! Expected "AppFuse
~ ???è?????" but got "AppFuse ~ ???è?????",顯然還是資源文件編碼的問題,注意控制臺有段提示"test with locale 'zh'",將myapp\web\WEB-INF\classes>ApplicationResources_zh.properties更名為ApplicationResources_zh.properties.bak
運行E:\jbproject\myapp\web\WEB-INF\classes>native2ascii -encoding gbk ApplicationResources_zh.properties ApplicationResources_zh.properties
再次運行E:\jbproject\myapp>ant test-all BUILD SUCCESSFUL
參考文章:http://raibledesigns.com/wiki/Wiki.jsp?page=AppFuseQuickStart_zh
posted @
2005-11-15 11:20 似水流年 閱讀(636) |
評論 (0) |
編輯 收藏
AppFuse的Ant任務
This page contains a listing of the most common Ant targets in AppFuse that I use in my daily development. For a complete list of tasks, type "ant -projecthelp" at the command line.
任務 |
描述 |
setup |
建立database, 配置tomcat和deploys expanded war |
clean |
Removes build artifacts |
compile |
編譯所有的文件 |
deploy |
編譯、然后部署到Tomcat |
deploy-web |
部署JSP和靜態Web內容到Tomcat |
install |
使用Tomcat的Manager程序安裝Web程序. 對于向遠程服務器上部署程序很適合 |
list |
列出Tomcat已經安裝、部署好的應用 |
refresh |
Undeploys, cleans, 然后重新部署. |
reload |
使Tomcat重新裝載所有程序 |
remove |
刪除Tomcat部署好的程序 |
setup-db |
創建數據庫,并插入范例需要的數據 |
setup-tomcat |
復制JDBC驅動和context.xml到Tomcat相應目錄下 |
test-all |
運行所有用于測試dao, service和web的測試用例 |
test-dao |
測試dao模塊 |
test-service |
測試service模塊 |
test-web |
使用Mocks測試Action/Controller (不需要容器) |
test-jsp |
在Tomcat中運行Canoo WebTest (啟動/停止Tomcat, 執行前Tomcat應該被停止) |
test-canoo |
當Tomcat已經運行時,執行Canoo WebTest |
test-reports |
產生測試報告 |
undeploy |
從 $CATALINA_HOME/webapps中刪除war文件和相應的目錄 |
posted @
2005-11-11 14:14 似水流年 閱讀(426) |
評論 (0) |
編輯 收藏
三個需要的程序包:
commons-dbcp-1.2.1.jar
http://apache.linuxforum.net/dist/jakarta/commons/dbcp/binaries/
struts-legacy.jar
http://apache.linuxforum.net/dist/jakarta/struts/struts-legacy/
commons-pool-1.2.jar
http://apache.linuxforum.net/dist/jakarta/commons/pool/binaries/
strut-config.xml
<data-sources>
<data-source key="mysqlWebDB" type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="description" value="Mysql DataSource For zyweb" />
<set-property property="driverClassName" value="org.gjt.mm.mysql.Driver" />
<set-property property="url" value="jdbc:mysql://localhost:3306/zyweb?useUnicode=true&characterEncoding=GBK" />
<set-property property="username" value="root" />
<set-property property="password" value="zyadmin" />
<set-property property="maxActive" value="10" />
<set-property property="maxWait" value="5000"/>
<set-property property="defaultAutoCommit" value="false" />
<set-property property="defaultReadOnly" value="false"/>
</data-source>
</data-sources>
posted @
2005-10-13 16:24 似水流年 閱讀(656) |
評論 (0) |
編輯 收藏
Java 中對文件的讀寫操作之比較
一.在 JDK 1.0 中,通常是用 InputStream & OutputStream 這兩個基類來進行讀寫操作的。
InputStream 中的 FileInputStream 類似一個文件句柄,通過它來對文件進行操作,類似的,在
OutputStream 中我們有 FileOutputStream 這個對象。
用FileInputStream 來讀取數據的常用方法是:
FileInputStream fstream = new FileInputStream(args[0]);
DataInputStream in = new DataInputStream(fstream);
用 in.readLine() 來得到數據,然后用 in.close() 關閉輸入流。
完整代碼見 Example 1。
用FileOutputStream 來寫入數據的常用方法是:
FileOutputStream out out = new FileOutputStream("myfile.txt");
PrintStream p = new PrintStream( out );
用 p.println() 來寫入數據,然后用 p.close() 關閉輸入。
完整代碼見 Example 2。
二.在 JDK 1.1中,支持兩個新的對象 Reader & Writer, 它們只能用來對文本文件進行操作,而
JDK1.1中的 InputStream & OutputStream 可以對文本文件或二進制文件進行操作。
用FileReader 來讀取文件的常用方法是:
FileReader fr = new FileReader("mydata.txt");
BufferedReader br = new BufferedReader(fr);
用 br.readLing() 來讀出數據,然后用br.close() 關閉緩存,用fr.close() 關閉文件。
完整代碼見 Example 3。
用 FileWriter 來寫入文件的常用方法是:
FileWriter fw = new FileWriter("mydata.txt");
PrintWriter out = new PrintWriter(fw);
在用out.print 或 out.println 來往文件中寫入數據,out.print 和 out.println的唯一區別是后者寫
入數據或會自動開一新行。寫完后要記得 用out.close() 關閉輸出,用fw.close() 關閉文件。
完整代碼見 Example 4。
-------------------------------------------------------------- following is the source code of examples------------------------------------------------------
Example 1:
// FileInputDemo
// Demonstrates FileInputStream and DataInputStream
import java.io.*;


class FileInputDemo
{

public static void main(String args[])
{
// args.length is equivalent to argc in C

if (args.length == 1)
{

try
{
// Open the file that is the first command line parameter
FileInputStream fstream = new FileInputStream(args[0]);
// Convert our input stream to a DataInputStream
DataInputStream in = new DataInputStream(fstream);
// Continue to read lines while there are still some left to read

while (in.available() !=0)
{
// Print file line to screen
System.out.println (in.readLine());
}
in.close();

} catch (Exception e)
{
System.err.println("File input error");
}
}
else
System.out.println("Invalid parameters");
}
}

Example 2:
// FileOutputDemo
// Demonstration of FileOutputStream and PrintStream classes
import java.io.*;

class FileOutputDemo


{

public static void main(String args[])
{
FileOutputStream out; // declare a file output object
PrintStream p; // declare a print stream object


try
{
// connected to "myfile.txt"
out = new FileOutputStream("myfile.txt");
// Connect print stream to the output stream
p = new PrintStream( out );
p.println ("This is written to a file");
p.close();

} catch (Exception e)
{
System.err.println ("Error writing to file");
}
}
}

Example 3:
// FileReadTest.java
// User FileReader in JDK1.1 to read a file
import java.io.*;


class FileReadTest
{

public static void main (String[] args)
{
FileReadTest t = new FileReadTest();
t.readMyFile();
}

void readMyFile()
{
String record = null;
int recCount = 0;

try
{
FileReader fr = new FileReader("mydata.txt");
BufferedReader br = new BufferedReader(fr);
record = new String();

while ((record = br.readLine()) != null)
{
recCount++;
System.out.println(recCount + ": " + record);
}
br.close();
fr.close();

} catch (IOException e)
{
System.out.println("Uh oh, got an IOException error!");
e.printStackTrace();
}
}
}

Example 4:
// FileWriteTest.java
// User FileWriter in JDK1.1 to writer a file
import java.io.*;


class FileWriteTest
{

public static void main (String[] args)
{
FileWriteTest t = new FileWriteTest();
t.WriteMyFile();
}

void WriteMyFile()
{

try
{
FileWriter fw = new FileWriter("mydata.txt");
PrintWriter out = new PrintWriter(fw);
out.print(“hi,this will be wirte into the file!”);
out.close();
fw.close();

} catch (IOException e)
{
System.out.println("Uh oh, got an IOException error!");
e.printStackTrace();
}
}
}

posted @
2005-06-23 17:46 似水流年 閱讀(902) |
評論 (2) |
編輯 收藏
<embed src="autostart="true" loop="true" width="200" height="150" >
把這個網址http://wmt2.aboutmedia.com.tw/Aboutmedia/warner/mtv/naying-021011_01v_120k.wmv換成你要看的電影就行了
有圖像的rm格式:
<OBJECT classid='clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA' height=288 id=video1 width=305 VIEWASTEXT>
<param name='_ExtentX' value='5503'>
<param name='_ExtentY' value='1588'>
<param name='AUTOSTART' value='-1'>
<param name='SHUFFLE' value='0'>
<param name='PREFETCH' value='0'>
<param name='NOLABELS' value='0'>
<param name='SRC' value='http://media.cdut.edu.cn/ram/new/xiaoxin1.ram'>
<param name='CONTROLS' value='Imagewindow,StatusBar,ControlPanel'>
<param name='CONSOLE' value='RAPLAYER'>
<param name='LOOP' value='0'>
<param name='NUMLOOP' value='0'>
<param name='CENTER' value='0'>
<param name='MAINTAINASPECT' value='0'>
<param name='BACKGROUNDCOLOR' value='#000000'>
</OBJECT>
無圖像的rm格式:如相聲,歌曲。。。
<object ID='video2' WIDTH='300' HEIGHT='62' CLASSID='CLSID:CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA'>
<param name='_ExtentX' value='9657'>
<param name='_ExtentY' value='847'>
<param name='AUTOSTART' value='-1'>
<param name='SHUFFLE' value='0'>
<param name='PREFETCH' value='0'>
<param name='NOLABELS' value='0'>
<param name='SRC' value='http://210.242.69.206/ramgen/broadcast/BCC/encoder/hipop.rm'>
<param name='CONTROLS' value='StatusBar,controlpanel'>
<param name='CONSOLE' value='Clip1'>
<param name='LOOP' value='0'>
<param name='NUMLOOP' value='0'>
<param name='CENTER' value='0'>
<param name='MAINTAINASPECT' value='0'>
<param name='BACKGROUNDCOLOR' value='#000000'>
</object>
最簡單的media格式的播放器。。自動識別有無圖像,但是版本是你機器的!
<embed src='mms://61.175.132.221/tv/mtv/f4/makeawish.wmv' width=200 height=200 autostart=true loop=true></embed>
有圖像的media播放器,自動調用網上的插件。
<object id=nstv classid='CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6' width=280 height=265 codebase=http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701standby=Loading Microsoft? Windows Media? Player components... type=application/x-oleobject>
<param name='URL' value='http://202.99.11.42/xiangsheng/ymjr.wma'>
<PARAM NAME='UIMode' value='full'><PARAM NAME='AutoStart' value='true'>
<PARAM NAME='Enabled' value='true'>
<PARAM NAME='enableContextMenu' value='false'>
<param name='WindowlessVideo' value='true'></object>
無圖像的media播放器。。。同上。
<object id=nstv classid='CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6' width=280 height=60 codebase=http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701standby=Loading Microsoft? Windows Media? Player components... type=application/x-oleobject>
<param name='URL' value='http://202.99.11.42/xiangsheng/ymjr.wma'>
<PARAM NAME='UIMode' value='full'><PARAM NAME='AutoStart' value='true'>
<PARAM NAME='Enabled' value='true'>
<PARAM NAME='enableContextMenu' value='false'>
</object>
只是界面不同的media的調插件播放器。。建議不用這個,,你可以看!
<embed src='http://av.wanwa.com/fileroot/AV/Ramfiles/23809.ram' type='audio/x-pn-realaudio-plugin' console='Clip1' controls='ControlPanel,StatusBar' height='60' width='275' autostart='true'></embed>
rm文件在線播放
<embed height=25 src=www.xiakedao.com/biyun/ren/a.rm type=audio/x-pn-realaudio-plugin width=50 autostart="false" controls="PlayButton">
autostart="false" 打開頁面時處于候命狀態,autostart="true" 打開頁面時馬上聽聲音 height=25 width=50 有不同數值,播放器面板有些不同
midi、au、avi文件在線播放
<EMBED SRC="
autostart="false" 打開頁面時處于候命狀態,autostart="true" 打開頁面時馬上聽聲音 height=25 width=50 有不同數值,播放器面板有些不同
asf文件在線播放
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title></title>
</head>
<body topmargin="0" leftmargin="0">
<object classid=clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95 codebase=http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=7.0 height=53 id=NSPlay0 name=NSPlay type=application/x-oleobject width=87 VIEWASTEXT standby="Loading Microsoft Windows Media Player components..." border="0"><param name="AudioStream" value="-1">
<param name="AutoSize" value="0">
<param name="AutoStart" value="1">
<param name="AnimationAtStart" value="-1">
<param name="AllowScan" value="-1">
<param name="AllowChangeDisplaySize" value="-1">
<param name="AutoRewind" value="0">
<param name="Balance" value="0">
<param name="BaseURL" value>
<param name="BufferingTime" value="10">
<param name="CaptioningID" value>
<param name="ClickToPlay" value="-1">
<param name="CursorType" value="0">
<param name="CurrentPosition" value="-1">
<param name="CurrentMarker" value="0">
<param name="DefaultFrame" value>
<param name="DisplayBackColor" value="0">
<param name="DisplayForeColor" value="65280">
<param name="DisplayMode" value="0">
<param name="DisplaySize" value="1">
<param name="Enabled" value="-1">
<param name="EnableContextMenu" value="-1">
<param name="EnablePositionControls" value="-1">
<param name="EnableFullScreenControls" value="-1">
<param name="EnableTracker" value="-1">
<param name="Filename" value="<param name="InvokeURLs" value="-1">
<param name="Language" value="-1">
<param name="Mute" value="0">
<param name="PlayCount" value="1">
<param name="PreviewMode" value="0">
<param name="Rate" value="1">
<param name="SAMILang" value>
<param name="SAMIstyle" value>
<param name="SAMIFileName" value>
<param name="selectionStart" value="-1">
<param name="selectionEnd" value="-1">
<param name="SendOpenStateChangeEvents" value="-1">
<param name="SendWarningEvents" value="-1">
<param name="SendErrorEvents" value="-1">
<param name="SendKeyboardEvents" value="0">
<param name="SendMouseClickEvents" value="0">
<param name="SendMouseMoveEvents" value="0">
<param name="SendPlayStateChangeEvents" value="-1">
<param name="ShowCaptioning" value="0">
<param name="ShowControls" value="-1">
<param name="ShowAudioControls" value="0">
<param name="ShowDisplay" value="0">
<param name="ShowGotoBar" value="0">
<param name="ShowPositionControls" value="-1">
<param name="ShowStatusBar" value="-1">
<param name="ShowTracker" value="-1">
<param name="TransparentAtStart" value="-1">
<param name="VideoBorderWidth" value="0">
<param name="VideoBorderColor" value="0">
<param name="VideoBorder3D" value="-1">
<param name="Volume" value="0">
<param name="WindowlessVideo" value="0">
</object>
其中<param name="AutoStart" value="0"> 0為打開頁面處于待命狀態,為1時打開頁面直接播放 </body>
</html>
流式收聽mp3方法:
http://*.mp3,http://*.mp3,http://...琱ttp://*.mp3,
把上面的的文件另存為*.m3u,就可實現在線播放*.mp3(支持連續播放)
mpeg影象在線播放:
等等,讓它下載
<img border="0" dynsrc="http://music.cnvnet.com/video/0321.mpeg ;
" start="fileopen">
rm影像在線播放 代碼:
<object id="vid" classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" width=114 height=100>
<param name="_ExtentX" value="3016">
<param name="_ExtentY" value="2646">
<param name="AUTOSTART" value="-1">
<param name="SHUFFLE" value="0">
<param name="PREFETCH" value="0">
<param name="NOLABELS" value="-1">
<param name="SRC" value="<param name="CONTROLS" value="Imagewindow">
<param name="CONSOLE" value="clip1">
<param name="LOOP" value="0">
<param name="NUMLOOP" value="0">
<param name="CENTER" value="0">
<param name="MAINTAINASPECT" value="0">
<param name="BACKGROUNDCOLOR" value="#000000">
</object>
加幾個控制器
<object id="vid" classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" width=427 height=300>
<param name="_ExtentX" value="11298">
<param name="_ExtentY" value="7938">
<param name="AUTOSTART" value="-1">
<param name="SHUFFLE" value="0">
<param name="PREFETCH" value="0">
<param name="NOLABELS" value="-1">
<param name="SRC" value="<param name="CONTROLS" value="Imagewindow">
<param name="CONSOLE" value="clip1">
<param name="LOOP" value="0">
<param name="NUMLOOP" value="0">
<param name="CENTER" value="0">
<param name="MAINTAINASPECT" value="0">
<param name="BACKGROUNDCOLOR" value="#000000">
</object>
<object id="vid2" classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" width=427 height=30>
<param name="_ExtentX" value="11298">
<param name="_ExtentY" value="794">
<param name="AUTOSTART" value="-1">
<param name="SHUFFLE" value="0">
<param name="PREFETCH" value="0">
<param name="NOLABELS" value="-1">
<param name="SRC" value="<param name="CONTROLS" value="ControlPanel">
<param name="CONSOLE" value="clip1">
<param name="LOOP" value="0">
<param name="NUMLOOP" value="0">
<param name="CENTER" value="0">
<param name="MAINTAINASPECT" value="0">
<param name="BACKGROUNDCOLOR" value="#000000">
</object>
posted @
2005-06-17 14:20 似水流年 閱讀(1269) |
評論 (0) |
編輯 收藏
在JSTL 1.1中使用以下標識符:
庫 |
URI |
前綴 |
Core |
http://java.sun.com/jsp/jstl/core |
c |
XML processing |
http://java.sun.com/jsp/jstl/xml |
x |
I18N formatting |
http://java.sun.com/jsp/jstl/fmt |
fmt |
Database access |
http://java.sun.com/jsp/jstl/sql |
sql |
Functions |
http://java.sun.com/jsp/jstl/functions |
fn |
posted @
2005-06-07 16:13 似水流年 閱讀(644) |
評論 (0) |
編輯 收藏
使用實例:<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> ${fn:length(myCollection)}
其他函數:
函數 |
描述 |
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中包含元素的數量。參數Item類型是數組、collection或者String。如果是String類型,返回值是String中的字符數。 |
fn:replace(string, before, after) |
返回一個String對象。用參數after字符串替換參數string中所有出現參數before字符串的地方,并返回替換后的結果 |
fn:split(string, separator) |
返回一個數組,以參數separator 為分割符分割參數string,分割后的每一部分就是數組的一個元素 |
fn:startsWith(string, prefix) |
如果參數string以參數prefix開頭,返回true |
fn:substring(string, begin, end) |
返回參數string部分字符串, 從參數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 首尾的空格,并將其返回 |
posted @
2005-06-07 16:12 似水流年 閱讀(1846) |
評論 (1) |
編輯 收藏
返回到前一頁不刷新
<input type="button" value="返回" onClick="history.go(-1)"> 返回到前一頁并刷新
<%String ref = request.getHeader("REFERER");response.sendRedirect(ref);%>
posted @
2005-06-07 16:12 似水流年 閱讀(816) |
評論 (0) |
編輯 收藏
<a href="delete.jsp?Id=${row.Id}" onclick="if(confirm('確認刪除?')){this.click();}else{return false;}">刪除</a>
posted @
2005-06-07 16:10 似水流年 閱讀(398) |
評論 (0) |
編輯 收藏
1.驗證用戶登錄
<sql:query var="query" dataSource="${bookdev}">
select * from user where userName='${param.userName}' and userPwd='${param.userPwd}'
</sql:query>
<c:if test="${empty query.rows}">
<!--驗證沒有通過,返回登錄界面-->
<font color="red">用戶名或密碼錯誤</font>
<a href="index.jsp">重新登錄</a>
</c:if>
<c:if test="${!empty query.rows}">
<!--驗證通過,保存用戶信息到session中-->
<c:forEach var="row" items="${query.rows}">
<c:set var="userName" value="${row.userName}" scope="session" />
<c:set var="userLevel" value="${row.userLevel}" scope="session" />
</c:forEach>
<c:set var="isLog" value="1" scope="session" />
<!--頁面發送到主頁面-->
<c:redirect url="main.jsp" />
</c:if>
2.session控制
<c:if test="${empty sessionScope.isLog}">
你沒有登錄或登錄超時
<a href="index.jsp">重新登錄</a>
</c:if>
posted @
2005-06-07 16:07 似水流年 閱讀(3648) |
評論 (3) |
編輯 收藏
以mysql為例
<sql:setDataSource
var="bookdev" //數據庫名
driver="org.gjt.mm.mysql.Driver" //驅動程序
url="jdbc:mysql://localhost:3306/bookdev?useUnicode=true&characterEncoding=gb2312" //URL
user="root" //用戶名
password="" //密碼
scope="session"
/>

其他數據庫和URL列表如下(摘自jsp應用開發詳解(第二版))
數據庫驅動程序和URL
數據庫名 |
驅動程序 |
URL |
MS SQL Server2000 |
com.microsoft.jdbc.sqlserver.SQLServerDriver |
jdbc:microsoft:sqlserver://[ip]:[port];user=[user];passwoerd=[password] |
JDBC-ODBC |
sun.jdbc.odbc.JdbcOdbcDriver |
jdbc:odbc:[odbcsource] |
Oracle oci8 |
oracle.jdbc.driver.OracleDriver |
jdbc:oracle:oci8:@[sid] |
Oracle thin Driver |
oracle.jdbc.driver.OracleDriver |
jdbc:oracle:thin:@[ip]:[port]:[sid] |
Cloudscape |
COM.cloudscape.core.JDBCDriver |
Jdbc:cloudscape:database |
MySQL |
org.git.mm.mysql.Driver |
jdbc:mysql://ip/database?user=?&password=? |
相關鏈接:java連接數據庫方法http://blog.java-cn.com/more.asp?name=johnnyhg&id=341
posted @
2005-06-07 16:06 似水流年 閱讀(396) |
評論 (0) |
編輯 收藏
由于mysql把\當作轉義字符用,所以要把路徑中的\處理成\\才可以正確保存,無奈之下copy了一段java代碼實現字符替換,后來才發現原來JSTL的新增函數庫就有函數已經可以實現此功能,且使用起來代碼簡潔,這樣好的東西自然要用用。
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
${fn:replace(param.sourceUrl,'\','\\')}
結果出現錯誤:Unterminated ${ tag。
修改代碼為:
<c:set var="before" value="\\"/>
<c:set var="after" value="\\\\"/>

$
{fn:replace(param.sourceUrl,before,after)}

問題解決
posted @
2005-06-07 16:01 似水流年 閱讀(1446) |
評論 (1) |
編輯 收藏
加密
<sql:update var="user" dataSource="${bookdev}">
insert into user values("","${param.userName}",password("${param.userPwd}"),"${param.userLevel}")
</sql:update>

解密
<sql:query var="query" dataSource="${bookdev}">
select * from user where userName='${param.userName}' and
userPwd=password('${param.userPwd}')
</sql:query>
posted @
2005-06-07 16:00 似水流年 閱讀(603) |
評論 (0) |
編輯 收藏
JSP文件操作
文件的建立與刪除
顯示目錄中的文件
讀取文件中的字符
將數據寫入文件
文件的建立與刪除 首先取得當前的磁盤路徑,指定要建立的文件的路徑,再進行檢查,如果文件不存在,如果文件不存在,則建立這個文件,如果文件存在,則刪除這個文件。
CreateDelete.jsp
<%@ page contentType="text/html; charset=GB2312"%> <%@ page import="java.io.*" %> <%@ page language="java" %> <HTML> <HEAD> <TITLE>文件的建立與刪除</TITLE> </HEAD> <BODY> <CENTER> <FONT SIZE = 5 COLOR = blue>文件的建立與刪除</FONT> </CENTER> <BR> <HR> <BR> <% //建立代表目前目錄位置中File.txt檔的File變量, 并由fileName變量變數引用 String path = request.getRealPath("/jsphosting/wenjian"); File fileName = new File(path, "File.txt"); //檢查File.txt是否存在 if(fileName.exists()) { //刪除File.txt檔 fileName.delete(); //輸出目前所在的目錄路徑 out.println(path + "\\File.txt"); %> <FONT SIZE = 4 COLOR = red>存在</FONT>, 已完成 <FONT SIZE = 4 COLOR = red>刪除</FONT> <% } else { //在目前的目錄下建立一個名為File.txt的文字檔 fileName.createNewFile(); //輸出目前所在的目錄路徑 out.println(path + "\\File.txt"); %> <FONT SIZE = 4 COLOR = red>不存在</FONT>, 已完成 <FONT SIZE = 4 COLOR = red>建立</FONT> <% } %> </BODY> </HTML> |
顯示目錄中的文件
首先建立要顯示的目錄的FILE對象,然后調用LISTFILES方法,該方法返回一個FILE對象數組,顯示數組中的所有元素即可。
ListFile.jsp
<%@ page contentType="text/html; charset=GB2312"%> <%@ page language="java" %> <%@ page import="java.io.*" %> <HTML> <HEAD> <TITLE>取得目錄中的文件</TITLE> </HEAD> <BODY> <CENTER> <FONT SIZE = 5 COLOR = blue>取得目錄中的文件</FONT> </CENTER> <BR> <HR> <BR> <% //取得目前目錄的磁盤目錄 String path = request.getRealPath("/jsphosting/wenjian"); //建立代表目前目錄位置的d變量 File d = new File(path); //取得代表目錄中所有文件 File list[] = d.listFiles(); %> 在<Font color = red><%= path%></Font>目錄下的文件有(每個文件有其相應的功能)<BR> <Font color = blue> <ul> <% for(int i=0; i < list.length; i++) { %> <li><%= list[i].getName() %><BR> <% } %> </ul> </Font> </BODY> </HTML> |
讀取文件中的字符
直接調用FILEREADER對象的READ()方法讀取所要顯示的字符
ReadAll.jsp
<%@ page contentType="text/html; charset=GB2312" %> <%@ page language="java" %> <%@ page import="java.io.*" %> <HTML> <HEAD> <TITLE>讀取文件內容</TITLE> </HEAD> <BODY> <CENTER> <FONT SIZE = 5 COLOR = blue>讀取文件內容</FONT> </CENTER> <BR> <HR> <BR> <% String path = request.getRealPath("/jsphosting/wenjian"); //取得目前目錄在伺服端的實際位置 FileReader fr = new FileReader(path + "\\File.txt"); //建立FileReader變量,并設定由fr變量變數引用 int c = fr.read(); //從文件中讀取一個字節 while(c != -1) //判斷是否已讀到文件的結尾 { out.print((char)c); //輸出讀取到的數據 c = fr.read(); //從文件中讀取數據 if(c == 13) //判斷是否為斷行字節 { out.print("<BR>"); //輸出分行標簽 fr.skip(1); //略過一個字節 c = fr.read(); //讀取一個字節 } } //關閉文件 fr.close(); %> </BODY> </HTML> |
將數據寫入文件
通過調用FILEWRITER對象的WRITE()方法向文件中寫入數據
Write.jsp
<%@ page contentType="text/html; charset=GB2312"%> <%@ page language="java" %> <%@ page import="java.io.*" %> <HTML> <HEAD> <TITLE>將數據寫入文件</TITLE> </HEAD> <BODY> <CENTER> <FONT SIZE = 5 COLOR = blue>將數據寫入文件</FONT> </CENTER> <BR> <HR> <BR> <% String path = request.getRealPath("/jsphosting/wenjian"); //取得目前目錄在伺服端的實際位置 FileWriter fw = new FileWriter(path + "\\File.txt"); //建立FileWrite對象,并設定由fw對象變量引用 //將字串寫入文件 fw.write("大家好!"); fw.write("祝大家學習jsp愉快!"); fw.write("希望大家能夠深入了解jsp技術!"); fw.close(); //關閉文件 %> <P>寫入文件內容為</P> <FONT SIZE = 4 COLOR = red> <% FileReader fr = new FileReader(path + "\\File.txt"); //建立FileReader對象,并設定由fr對象變量引用 BufferedReader br = new BufferedReader(fr); //建立BufferedReader對象,并設定由br對象變量引用 String Line = br.readLine(); //讀取一行數據 out.println(Line + "<BR>"); //輸出讀取得的數據 br.close(); //關閉BufferedReader對象 fr.close(); //關閉文件 %> </FONT> </BODY> </HTML> |
posted @
2005-06-07 15:58 似水流年 閱讀(298) |
評論 (0) |
編輯 收藏
打開tomcat/conf/servel.xml
修改(黑體字為修改部分)
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding="GBK"/>
在web頁上把含有中文的url用java.net.URLEncoder.encode("中文")處理
例子:
<c:set var="test">
/<%=java.net.URLEncoder.encode("用jsp實現文件上傳.pdf")%>
</c:set>
<c:redirect context="/ebooks" url="${test}"/>

鏈接傳遞中文參數例子
<a href=hello.jsp?send=<%=java.net.URLEncoder.encode("中文")%>> 點擊</a>

jspsmartupload組件下載中文例子:
<%@ page contentType="text/html;charset=gb2312"
import="com.jspsmart.upload.*" %><%

SmartUpload mySmartUpload = new SmartUpload();

//String path=request.getParameter("中文");修改server.xml后
String path = new String(request.getParameter("中文").getBytes("ISO-8859-1")); //修改server.xml前
// Initialization
mySmartUpload.initialize(pageContext);
// Download file
//mySmartUpload.downloadFile("/upload/sample.zip");
// With a physical path

mySmartUpload.downloadFile(path);
response.getOutputStream().close();
// With options
// mySmartUpload.downloadFile("/upload/sample.zip","application/x-zip-compressed","downloaded.zip")
%>

posted @
2005-06-07 15:57 似水流年 閱讀(4651) |
評論 (2) |
編輯 收藏
數據庫需求分析:
class(一級欄目信息):classId(自動編號),className(欄目名稱)
Nclass(二級欄目信息):NclassId(自動編號),NclassName(欄目名稱),parentId(一級欄目id,與class表中的classId關聯)
<%@ page contentType="text/html; charset=GB2312" language="java" errorPage="../error.jsp" %>
<%@ include file="../conn.jsp"%>
<%@ include file="../ds.jsp"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%request.setCharacterEncoding("gb2312"); %>
<HTML><HEAD>
<META http-equiv="Content-Type" content="text/html; charset=gb2312">
<TITLE>級聯菜單</TITLE>
<LINK rel="stylesheet" type="text/css" href="style.css">
</HEAD>
<!--從數據庫中得到二級欄目信息-->
<%String sql="select * from Nclass order by NclassId asc";
ResultSet rs=stmt.executeQuery(sql);
%>
<!--將二級欄目信息保存到數組subcat中-->
<script type="text/javascript">
var onecount;
onecount=0;
subcat = new Array();
<%
int count = 0;
while(rs.next()){
%>
subcat[<%=count%>] = new Array("<%=rs.getString("NclassName")%>","<%=rs.getString("NclassId")%>","<%=rs.getString("parentId")%>");
<%
count++;
}
rs.close();
%>
onecount=<%=count%>;
<!--決定select顯示的函數-->
function changelocation(locationid)
{
document.myform.NclassId.length = 0;
var locationid=locationid;
var i;
for (i=0;i < onecount; i++)
{
if (subcat[i][2] == locationid)
{
document.myform.NclassId.options[document.myform.NclassId.length] = new Option(subcat[i][0], subcat[i][1]);
}
}
}
</script>
<FORM method="POST" name="myform" action="adminsave.jsp?action=add">
<TABLE>
<TR>
<TD>一級分類</TD>
<TD>
<SELECT name="classId" onChange="changelocation(document.myform.classId.options[document.myform.classId.selectedIndex].value)" size="1">
<OPTION selected value>==請選一級分類==</OPTION>
<sql:query var="query" dataSource="${bookdev}">
SELECT * FROM class
</sql:query>
<c:forEach var="row" items="${query.rows}">
<option value="${row.classId}">${row.className}</option>
</c:forEach>
</select>
</TD>
<TD>選擇二級分類</TD>
<TD>
<SELECT name="NclassId">
<OPTION selected value>==請選二級分類==</OPTION>
</SELECT>
</TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>
posted @
2005-06-07 15:53 似水流年 閱讀(659) |
評論 (0) |
編輯 收藏
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head><LINK href="../hellking.css" type=text/css rel=stylesheet>
<body>

<%
request.setCharacterEncoding("gb2312"); %>


<script type="text/javascript">
function setid()

{
str='<br>';
if(!window.form1.upcount.value)
window.form1.upcount.value=1;

if(window.form1.upcount.value>100)
{
alert("您最多只能同時上傳100個文件0");
window.form1.upcount.value = 100;
setid();
}

else
{
for(i=1;i<=window.form1.upcount.value;i++)
str+='<div>文件'+i+':<input type="file" name="file'+i+'"></div><br><br>';
window.upid.innerHTML=str+'<br>';}
}
</script>



<form name="form1" method="post" action="BookAction_do.jsp?action=${param.action}" >


<div>
<table border="1" cellspacing="0" cellpadding="5" bordercolordark="#CCCCCC" bordercolorlight="#000000" bordercolor="#FFFFFF" style="border-collapse: collapse" height="169">
<tr bgcolor="#CC0CCC">
<td height="28" align="left" valign="middle" bgcolor="#C0CCCC">
<div><font size="3"><b>文件上傳</b></font></div>
</td>
</tr>
<tr align="left" valign="middle" bgcolor="#eeeeee">
<td bgcolor="#eeeeee" height="92" valign="top"> <br>
<table border="0" cellspacing="1" cellpadding="2">

<tr>
<td><font color="#FF0000"><b>*</b></font>上傳的文件大小不能超過<font color="#FF0000">999999999</font>個字節</td>
</tr>
<tr>
<td>

<b><font color="#FF0000">*</font></b>每次可以設置同時上傳<font color="#FF0000">100</font>個文件。<br>

設置上傳的個數
<input type="text" value="1" name="upcount" size="20">
<input type="button" name="Button" onClick="setid();" value="設定">

</td>
</tr>

</table>
</td>
</tr>
<tr>
<td id="upid">
<div>文件1:
<input type="file" name="file1">
</div>
</td>
</tr>


</table>
</div>
<br>
<tr align="center" valign="middle" bgcolor="#eeeeee">
<td bgcolor="#ccc000" height="33">
<input type="submit" name="Submit" value="確定">
<input type="reset" name="Submit2" value="重執">
</td>
</tr>
</table></form>
</body>
</html>


posted @
2005-06-07 15:51 似水流年 閱讀(558) |
評論 (0) |
編輯 收藏
5.1 停用目錄檢視 (Directory Listing)
在新的 Tomcat 安裝,預設目錄檢視是啟用的,這可以是一個很有用的測試工具,如果像我一樣,您有時會忘記在某個網頁應用程式使用了甚麼 servlets,可以簡單地輸入網頁應用程式的 URL ,就能取得完整的列表。
但在生產的用途上,您可能想將它關掉。如果沒有其他東西,它不鼓勵使用者在他們不應該逗留的地方閒逛。要關掉這個選項基本上兩個方法:
- 建立一個 index.html 檔案,將它放在網頁應用程式的目錄內。
- 修改整體的 web.xml 檔案將選項關掉。
第一個選項頗為簡單,因此我們只研究第二個選項。
開啟 web.xml 檔案,這檔案在 $CATALINA_HOME/conf/ 內,是整體的web.xml檔案,即是這裡有任何改變都會影響該 Tomcat 所有網頁應用程式。如果您想要更精細的控制,例如某些應用程式關掉,但某些則開啟,就需要以第一個選項來做,建立 index.html檔案。
找出以下部分:
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>
org.apache.catalina.servlets.DefaultServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
|
這是 web.xml 的第一部分,我們關注的選項是:
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
|
將 <param-value> 改為 false,便可關掉目錄檢視,就是那麼簡單。
5.2 自訂預設頁面
Tomcat使用的慣例與Apache網頁伺服器相同,index.html 是任何目錄的預設或首頁。有時您可能想改變為 page1.html 或是 JSP 頁面,如以下一樣 now_see_this.jsp:
要做到這樣,只需開啟網頁程式的 web.xml ,加上以下這些:
<welcome-file-list>
<welcome-file>now_see_this.jsp</welcome-file>
<welcome-file>page1.html</welcome-file>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
|
要令整個系統改變,可在 $CATALINA_HOME/conf 下修改整體的 web.xml,並將 <welcome-file> 改變指向您所選的檔案。
posted @
2005-06-07 15:47 似水流年 閱讀(329) |
評論 (0) |
編輯 收藏
摘要: 1.表格的顯示格式,在css中定義;
css
Property
Default
Valid Values
Description
Can be set using file/setProperty
css.tr.even
even
any valid css class name
css class automatically added ...
閱讀全文
posted @
2005-06-07 15:46 似水流年 閱讀(2255) |
評論 (0) |
編輯 收藏
有時要求利用一個超鏈來同時打開兩個幀頁。我們先假設要通過超鏈1來同時載入幀頁first.htm和next.htm到不同的幀頁窗口,其中將next.htm在窗口banner處打開(窗口名稱可以在框架頁中類似
<frame name="banner" target="main" src="left.htm">的語句中找到)。需要在first.htm中加入onload指令:
<body onload="parent.banner.location.href= 'next.htm'"></body>

具體加入形式:
<html>
<body onload="parent.banner.location.href= 'next.htm'">
此處是該文件原有的其他內容
</body>
</html>

原理很簡單,超鏈1打開first.htm,而first.htm中加入的onload語句自動打開next.htm到指定的窗口,從而實現利用一個鏈接控制兩個幀頁的功能(你完全可以進一步發揮)。
posted @
2005-06-07 15:08 似水流年 閱讀(284) |
評論 (0) |
編輯 收藏
摘要: 在開發復雜的企業應用程序時,很多人更喜歡使用企業 JavaBean (EJB) 技術,讓應用服務器來管理對象可持續性。其他人可能更喜歡使用 Java 數據庫連接 (JDBC) 標準 API,以便手動地優化數據庫訪問。這些解決方案可能不適合于簡單的由數據庫支持的網站,這種網站只需使用 JSP 盡可能快地進行原型開發。如果您只需要查詢和更新一個簡單的數據庫,則提供數據庫訪問特性的標記庫可能是最佳的解決...
閱讀全文
posted @
2005-06-07 15:04 似水流年 閱讀(779) |
評論 (1) |
編輯 收藏
我們可以用CSS語法來控制超鏈接的形式、顏色變化。
下面我們做一個這樣的鏈接:未被點擊時超鏈接文字無下劃線,顯示為藍色;當鼠標在鏈接上時有下劃線,鏈接文字顯示為紅色;當點擊鏈接后,鏈接無下劃線,顯示為綠色。
實現方法很簡單,在源代碼的<head>和<head>之間加上如下的CSS語法控制:

<style type="text/css">
<!--

a:link {
}{ text-decoration: none;color: blue}

a:active {
}{ text-decoration:blink}

a:hover {
}{ text-decoration:underline;color: red}

a:visited {
}{ text-decoration: none;color: green}
-->
</style>

其中:
a:link 指正常的未被訪問過的鏈接;
a:active 指正在點的鏈接;
a:hover 指鼠標在鏈接上;
a:visited 指已經訪問過的鏈接;
text-decoration是文字修飾效果的意思;
none參數表示超鏈接文字不顯示下劃線;
underline參數表示超鏈接的文字有下劃線
下面這行文字就是我們剛才做的效果。
效果演示
同樣,如果講none替換成overline則給超鏈接文字加上劃線,換成line-through給超鏈接文字加上刪除線,blink則使文字在閃爍。
posted @
2005-06-07 14:47 似水流年 閱讀(530) |
評論 (0) |
編輯 收藏
導出:
SELECT * from ebook INTO OUTFILE "bookdev.txt" FIELDS ENCLOSED by '"' TERMINATED by "," LINES TERMINATED BY "\n"

導入:
LOAD DATA INFILE "bookdev.txt" into TABLE ebook FIELDS ENCLOSED by '"' TERMINATED by "," LINES TERMINATED BY "\n"
posted @
2005-06-07 14:44 似水流年 閱讀(445) |
評論 (0) |
編輯 收藏
有些中文在jbuilder的IDE下無法正常顯示,可采取以下辦法解決:
設${jbuider}為jbuilder的安裝目錄,到${jbuider}/jdk1.4jre/lib下.把font.properties文件備份,根據需要將font.properties.*其中之一重命名為font.properties,重啟jbuilder即可.
posted @
2005-06-07 14:40 似水流年 閱讀(468) |
評論 (0) |
編輯 收藏