Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
String a = sdf.format(date.getTime());
date = sdf.parse(a);
Test t = new Test();
t.setStartDate(date);
Date enddate = new Date();
String end = sdf.format(date.getTime()+(60L*60L*24L*30L*1000));
enddate = sdf.parse(end);
t.setEndDate(enddate);
Session session = MulderSessionFactory.getSession();
Transaction tx = session.beginTransaction();
session.saveOrUpdate(t);
tx.commit();
MulderSessionFactory.closeSession();
2008年8月24日 星期日
note
JSTL API
http://java.sun.com/products/jsp/jstl/1.1/docs/api/index.html
JSTL TLD
http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/index.html
workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\專案名稱
http://javaprepare.com/
http://www.javaranch.com/
http://www.digitalthink.com/
http://www.jaworski.com/java/certification
http://www.jchq.net/
http://www.certificationguru.com/
http://java.sun.com/products/jsp/jstl/1.1/docs/api/index.html
JSTL TLD
http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/index.html
workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\專案名稱
http://javaprepare.com/
http://www.javaranch.com/
http://www.digitalthink.com/
http://www.jaworski.com/java/certification
http://www.jchq.net/
http://www.certificationguru.com/
2008年8月16日 星期六
[Java] Dom4j 解析xml格式
Document doc = DocumentHelper.parseText(xmlRequest);
String AAA = doc.selectSingleNode("/action/AAA").getText();
String BBB = doc.selectSingleNode("/action/BBB").getText();
AAA的值為 "abc"
BBB的值為 "def"
其中"/action/AAA" 為xpath 除了需要dom4j.jar外
還需import jaxen.jar套件
[Java] Dom4j 產生xml格式
Document document = DocumentHelper.createDocument();
Element root = document.addElement("action");
root.addElement("AAA").addText("abc");
root.addElement("BBB").addText("def");
xmlRequest = document.asXML();
若要在ccc下面在加一個node
Element ccc = root.addElement("ccc");
ccc.addElement("ddd").addText("xyz");
xmlRequest輸出為以下字串
<action>
<AAA>abc<AAA>
<BBB>def<BBB>
<ccc>
<ddd>xyz</ddd>
</ccc>
</action>
2008年8月6日 星期三
[Java] 今天和任一日期相差的天數
Calendar cal = Calendar.getInstance();
cal.set(2008, Calendar.JULY, 28); //取得DB中的日期
long daterange = new Date().getTime() - cal.getTimeInMillis();
long time = 1000*3600*24;
System.out.println(daterange/time);
2008年8月3日 星期日
[Java] JDBC連接資料庫 (六)
寫在finally區塊的關閉連線,有例外發生時會關閉連線
finally {
if (rset != null) {
try {
rset.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
[Java] JDBC連接資料庫 (五)
執行SQL Query和處理SQL執行結果
ResultSet rset = null;
try {
/**
* Enter SQL Query
*/
rset = stmt.executeQuery("select deptid, deptname from dept");
/**
* Process SQL Query and print out
*/
while(rset.next()) {
int deptid = rset.getInt("deptid");
String deptname = rset.getString(2);
System.out.println(deptid +", "+deptname);
}
} catch (SQLException e1) {
e1.printStackTrace();
}
[Java] JDBC連接資料庫 (四)
取得Statement物件
Statement stmt = null;
try {
/**
* Get Statement object
*/
stmt = conn.createStatement();
} catch (SQLException e1) {
e1.printStackTrace();
}
[Java] JDBC連接資料庫 (三)
取得Database連線
Connection conn = null;
try {
/**
* Database connection
* jdbc:oracle:thin:@//host:port/DBName
*/
String url = "jdbc:oracle:thin:@localhost:1521:XE";
conn = DriverManager.getConnection(url, "java", "java");
} catch (SQLException e1) {
e1.printStackTrace();
}
[Java] JDBC連接資料庫 (二)
註冊JDBC Driver 以Oracle資料庫為例
/**
* register JDBC Driver
*/
try {
Class.forName("oracle.jdbc.OracleDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
[Java] JDBC連接資料庫 (一)
連接資料庫的六個步驟:
1.註冊JDBC Driver
2.取得Database連線:java.sql.Connection
3.取得Statement物件:java.sql.Statement
4.取得SQL Query
5.處理SQL Query執行結果:java.sql.ResultSet
6.關閉連線
1.註冊JDBC Driver
2.取得Database連線:java.sql.Connection
3.取得Statement物件:java.sql.Statement
4.取得SQL Query
5.處理SQL Query執行結果:java.sql.ResultSet
6.關閉連線
2008年7月28日 星期一
[Java] BufferedReader 和 BufferedWriter 使用方法
import java.io.BufferedReader;
import java.io.BufferedWriter;
Reader rd = new FileReader("abc.txt");
Writer wt = new FileWriter("def.txt");
BufferedReader br = new BufferedReader(rd);
BufferedWriter bw = new BufferedWriter(wt);
String line = null;
while((line = br.readLine()) !=null){
//BufferedWriter user next two line
bw.write(line);
bw.newLine();
System.out.println(line);
}
br.close();
[Java] BufferedReader 和 PrintWriter 使用方法
import java.io.BufferedReader;
import java.io.PrintWriter;
利用FileReader把檔案取出,用PrintWriter寫到另一個檔案中
Reader rd = new FileReader("abc.txt");
Writer wt = new FileWriter("def.txt");
通常都以BufferedReader搭配PrintWriter的方式
BufferedReader是以逐行讀出的方式,一行一行讀出abc.txt 中的內容
BufferedReader br = new BufferedReader(rd);
PrintWriter pw = new PrintWriter(wt);
String line = null;
while((line = br.readLine()) !=null){
//PrintWriter user next line(usually use this)
pw.println();
System.out.println(line);
}
br.close();
[Java] Java I / O 介紹
輸入:
InputStream、Reader
InputStream:用來讀取位元組資料
Reader用來讀取字元資料
輸出:
OutputStream、Writer
InputStream:用來寫出位元組資料
Reader用來寫出字元資料
常用類別
讀/寫位元:FileInputStream / FileOutputStream
讀/寫字元:FileReader / FileWriter
讀/寫一列文字資料:BufferedReader / BufferedWriter
讀/寫基本型態資料:DataInputStream / DataOutputStream
讀/寫物件:ObjectInputStream / ObjectOutputStream
InputStream、Reader
InputStream:用來讀取位元組資料
Reader用來讀取字元資料
輸出:
OutputStream、Writer
InputStream:用來寫出位元組資料
Reader用來寫出字元資料
常用類別
讀/寫位元:FileInputStream / FileOutputStream
讀/寫字元:FileReader / FileWriter
讀/寫一列文字資料:BufferedReader / BufferedWriter
讀/寫基本型態資料:DataInputStream / DataOutputStream
讀/寫物件:ObjectInputStream / ObjectOutputStream
2008年7月27日 星期日
[Java] FileInputStream 和 FileOutputStream 用法
import java.io.FileInputStream;
import java.io.FileOutputStream;
InputStream is = new FileInputStream("abc.txt");
OutputStream os = new FileOutputStream("def.txt");
int n = 0,total=0;
byte[] ba = new byte[1024];
while ((n = is.read(ba)) != -1){
os.write(ba, 0, n);
total+=n;
}
System.out.println("共有" + total + "位元組");
[Java] FileReader 和 FileWrite 用法
import java.io.FileReader;
import java.io.FileWriter;
Reader rd = new FileReader("abc.txt");
Writer wt = new FileWriter("def.txt");
char[] ca = new char[1024];
int n=0,total=0;
while((n = rd.read(ca)) != -1){
wt.write(ca, 0, n);
total += n;
}
System.out.println("共有" + total + "字元");
[Java] InputStreamReader 讀取字元
InputStreamReader ir = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(ir);
上面這兩行可縮寫成下面這一行:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.in:代表的是鍵盤,程式會去讀使用者在鍵盤所打的字元
下面程式碼範例為,讀取從鍵盤上,所輸入的字元
String s = "";
while((s = br.readLine())!= null ){
System.out.print("input : "+ s);
}
br.close();
[Java] 例外處理 try-catch-finally
try {// 這是 try block
// 可能發生錯誤的 statement
}catch ( NullPointerException ) { // 這是相對應錯誤的處理程式
e.printStackTrace();
}finally {
// 無論有發生例外或沒有發生例外 都會執行
}
2008年7月19日 星期六
2008年7月14日 星期一
[Java] String 的方法 toUpperCase() 和 toLowerCase()
轉換大小寫的方法
toUpperCase:小寫英文轉成大寫英文
toLowerCase:大寫英文轉成小寫英文
String a = "abcdef";
String b = "abcdef";
System.out.println(a.toUpperCase());
System.out.println(b.toLowerCase());
toUpperCase:小寫英文轉成大寫英文
toLowerCase:大寫英文轉成小寫英文
[Java] String 的方法 startsWith() 和 endsWith()
檢查是否以傳入的字串為開頭或結尾
startsWith():起始是不是以"abc"開頭,回傳blooean型態
endsWith():結束是不是以".txt"結尾,回傳blooean型態
String a = "abc.txt";
System.out.println(a.startsWith("abc"));
System.out.println(a.endsWith(".txt"));
startsWith():起始是不是以"abc"開頭,回傳blooean型態
endsWith():結束是不是以".txt"結尾,回傳blooean型態
[Java] HashSet的用法
Set繼承collection介面,Set容器中的物件都是唯一
輸出結果:
因為有重複產生之數值,HashSet只會選擇無重複之值存在容器中
HashSet<Integer> hs = new HashSet<Integer>();
for(int i=0;i<6;i++){
int num = (int)(Math.random()*42)+1;
hs.add(num);
System.out.print(num+", ");
}
System.out.println("\n");
for(int i : hs){
System.out.print(i+", ");
}
輸出結果:
11, 38, 12, 28, 38, 5,
38, 5, 11, 12, 28,
因為有重複產生之數值,HashSet只會選擇無重複之值存在容器中
[Java] for 迴圈新的表示法(JDK 5.0)
通常的for寫法:
新的表示法
varName:代表list中的型態,String、int
listName:填入obj,型態例如:List、Array
for(int i=0;i<5;i++){}
新的表示法
for(Type varName : listName){}
varName:代表list中的型態,String、int
listName:填入obj,型態例如:List、Array
2008年7月13日 星期日
[Java] Collection 類別介紹
Collection 稱為容器,表示裡面可以放物件,Collection包括了List和Set,List是可以接受排序、跟可重複的物件,Set剛好相反 ,不接受重複的物件,也具有排序的功能
List
ArrayList、LinkedList
Set
HashSet、TreeSet、EnumSet
List
ArrayList、LinkedList
Set
HashSet、TreeSet、EnumSet
- 由一個物件來容納多個物件者稱為Collection,期內的物件稱為element
- Collection介面
- Set介面:element沒有順序 ,不允許重複的元素
- List介面:element有順序 ,允許重複的元素
2008年7月12日 星期六
[Java] String 的方法 lastIndexOf()
String a = "abcdef"
int b = a.lastIndexOf("c");
回傳最後一次出現字串"c"的位置,回傳值為Int型態
[Java] String 的方法 indexOf()
String a = "abcdef"
int b = a.indexOf("c");
int b2 = a.indexOf(2);
b的結果為,搜尋字串a中是否有"c",有此字元,回傳數值為-1
b2的結果為,取出第二個位置的字元,值為2
[Java] String 的方法 substring()
String a = "abcdef"; //[0,1,2,3,4,5]
String b1 = a.substring(1);
String b2 = a.substring(1, 3);
a.substring(beginIndex) b的值為 "bcdef"
a.substring(beginIndex, endIndex)b2的值為 "bc" 1 為起始值 3 為起始結束值(不包含)
2008年7月9日 星期三
2008年7月7日 星期一
2008年7月4日 星期五
[Java] 不可逆加密MD5
public static String MD5(String text){
String md5Text = "";
try {
MessageDigest digest = MessageDigest.getInstance("MD5");
md5Text = new BigInteger(1,digest.digest((text).getBytes()))
.toString(16);
} catch (Exception e) {
System.out.println("Error in call to MD5");
}
if (md5Text.length() == 31) {
md5Text = "0" + md5Text;
}
return md5Text;
}
出處來自 Yahoo BBAuth 的開放碼
2008年7月3日 星期四
[Java] 讀取網頁中的文字 HttpURLConnection 和 URL
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.net.HttpURLConnection;
import java.net.URL;
以下是在接XML中方便接傳值的方法,首先設定要抓取的網頁位置
URL url = new URL("http://localhost/test.jsp");
用HttpURLConnection 開起
HttpURLConnection huc = (HttpURLConnection)url.openConnection();
InputStreamReader之後在寫使用方式
BufferedReader br = new BufferedReader(new InputStreamReader(huc.getInputStream(), "UTF-8"));
一樣用BufferedReader去讀回來
String str = "";
StringBuffer sb = new StringBuffer();
while(null != ((str=br.readLine()))) {
sb.append(str);
}
br.close();
String xmlResponse = sb.toString();
最後要記的關閉連結
br.close();
huc.disconnect();
[Java] 寫入文字到檔案中 FileWriter
取得要寫入文字的檔案
寫入字串"Num"
FileWriter fw = new FileWriter("G:/Counter.txt");
寫入字串"Num"
fw.write("Num");
fw.close()
[Java] 讀取檔案中的文字 FileReader
手動建立一個Counter.txt在第一行寫上"100",設定讀取檔案位置
用BufferedReader 讀取
輸出
要讀出全部可用while加StringBuffer來達成,改成讀出所有內容的程式碼
輸出
FileReader fr = new FileReader("G:/Counter.txt");
用BufferedReader 讀取
BufferedReader br = new BufferedReader(fr);
String strNum = br.readLine(); //讀第一行
輸出
System.out.println(strNum);
要讀出全部可用while加StringBuffer來達成,改成讀出所有內容的程式碼
StringBuffer sb = new StringBuffer();
while ((strNum=br.readLine())!=null){
sb.append(strNum);
}
輸出
System.out.println(sb.toString());
2008年6月30日 星期一
[Java] URLEncoder 使用方式
若要在網址列傳中文字串,需要編碼
相對的,有加密也有解密,通常Bowser會自己解
URLEncoder.encode("要編碼的字串","UTF-8")
相對的,有加密也有解密,通常Bowser會自己解
URLDecoder.decode("要解碼的字串","UTF-8")
[Java] JavaMail 使用方式
今天因為要把補發密碼的方式,改為用Email的方式,所以去JavaWorld挖出了下面的程式碼,之後有時間在補詳細的說明好了
public void dosend() {
try {
//設定所要用的Mail 伺服器和所使用的傳送協定
Properties props = new Properties();
props.put("mail.host", mailserver);
props.put("mail.transport.protocol", "smtp");
Session session = Session.getInstance(props,null);
session.setDebug(true);
MimeMessage msg = new MimeMessage(session);
//設定傳送郵件的發信人
msg.setFrom(new InternetAddress(From));
//設定傳送郵件至收信人的信箱
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(To));
//設定信中的主題
msg.setSubject(Subject);
//設定送信的時間
msg.setSentDate(new Date());
//設定傳送信的MIME Type
msg.setText(messageText);
//送信
Transport.send(msg);
} catch (Exception e) {
e.printStackTrace();
}
}
[Java] Hashtable 使用方法
宣告使用Hashtable的程式碼如下:
把值放入Hatable的程式碼ht.put(名稱, 變數)
取出ht.get(名稱)
import java.util.Hashtable;
Hashtable<String, String>ht = new Hashtable<String, String>();
把值放入Hatable的程式碼ht.put(名稱, 變數)
ht.put("ID","abcde");
取出ht.get(名稱)
String text = ht.get("ID");
text輸出的文字為abcde
[Java] Vector 的用法
Vector類似陣列,我稱為可變動性陣列,下面為宣告方式
增加值的方法
取出值的方法vc.get(int index)
也可以排序,但須另使用Collections這個類別,程式碼如下
輸出結果,以上面的例子為例:20,40,30 => 20,30,40
import java.util.Vector;
Vector vc = new Vector();
增加值的方法
vc.add(20); //0
vc.add(40); //1
vc.add(30); //2
取出值的方法vc.get(int index)
vc.get(0);
也可以排序,但須另使用Collections這個類別,程式碼如下
import java.util.Collections;
Collections.sort(vc);
輸出結果,以上面的例子為例:20,40,30 => 20,30,40
2008年6月29日 星期日
[Java] 產生亂數的方法
簡單來說,就是回傳一個正的double數值,他是介於0.0~1.0之間,但不包含1.0的值。
而如果我們要產生一個1~42的亂數,該怎樣做呢?答案其實很簡單,因為Math.random()是回傳0.0~1.0之間的值,所以我們可以把Math.random()乘以42後,即會變成0.0~42.0的值,但不包含42,再強制轉換成int型態後,再加上1即可。
而程式碼來說明,即是下段程式碼:
而如果我們要產生一個1~42的亂數,該怎樣做呢?答案其實很簡單,因為Math.random()是回傳0.0~1.0之間的值,所以我們可以把Math.random()乘以42後,即會變成0.0~42.0的值,但不包含42,再強制轉換成int型態後,再加上1即可。
而程式碼來說明,即是下段程式碼:
import java.lang.Math;
int rnum = (int)(Math.random()*42+1);
[Hibernate] hibernate one-to-many mapping
資料表
Parent{
column:id,name
PK:id
}
Child{
column:id,name,ref_parent_id
PK:id
FK:ref_parent_id
}
DAO資料模型
package eg;
public class Parent{
private Integer Id;
private String Name;
private Set Children;
/*
getter and setter 省略
*/
}
package eg;
public class Child{
private Integer Id;
private String Name;
private Parent RefParent;
/*
getter and setter 省略
*/
}
hibernte mapping檔案
Parent.hbm.xml{
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="eg">
<class name="Parent" table="Parent">
<id column="id" name="Id" type="integer">
<generator class="native">
</id>
<property column="name" length="50"
name="Name" type="string"/>
<set cascade="all" inverse="true" name="Children">
<key column="ref_parent_id"><!--重要:Children的FK而不是PK-->
<one-to-many class="Child">
</set>
</class>
</hibernate-mapping>
}
Child.hbm.xml{
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="eg">
<class name="Child" table="Child">
<id column="id" name="Id" type="integer">
<generator class="native">
</id>
<property column="name" generated="never" length="50"
name="Name" type="string"/>
<many-to-one class="Parent" column="ref_parent_id" name="RefParent" null="true">
</class>
</hibernate-mapping>
}
實際操作
取得Parnet List,連帶取得Child的Set
//open session lazy=true
Query query = null;
Session hsession = null;
List<Parent> list=null;
int i=0;
query=hsession.createQuery("FROM Parent");//
query.setFirstResult(0);
query.setMaxResults(5);//取5筆
list=query.list();
for(i=0;i<list.size();i++){
out.println("Parent 有 "+list.get(i).getChildren().size()+"個Child");
}
//close session
//取得指定Parent,關閉session,再取得Parent的Children
//open session lazy=true 延遲讀取
Query query = null;
Session hsession = null;
List<Parent> list=null;
int i=0,n=1;
query=hsession.createQuery("FROM Parent p WHERE p.Id=:id");
query.setInteger("id",n);
Parent p =(Parent)query.uniqueResult();
Hibernate.initialize(p.getChildren());
//close session
out.println("Parent 有 "+p.getChildren().size()+"個Child");
[Java] String 的方法 trim() 去除空白字元
在下面的例子中 display 前後有空白字元,可以用字串中的trim()去除空白字元
印出的結果:abc
String display = " abc ";
System.out.println(display.trim());
印出的結果:abc
[Hibernate] hibernate one-to-one mapping
資料表
ObjA{
column:id,name
PK:id
}
ObjB{
column:ref_obja_id,name
PK:ref_obja_id
FK:ref_obja_id
}
DAO資料模型
package eg;
public class ObjA{
private Integer Id;
private String Name;
private ObjB ObjB;
/*
getter and setter 省略
*/
}
package eg;
public class ObjB{
private Integer RefObjAId;
private String Name;
private ObjA RefObjA;
/*
getter and setter 省略
*/
}
hibernte mapping檔案
ObjA.hbm.xml{
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="eg">
<class name="ObjA" table="ObjA">
<id column="id" name="Id" type="integer">
<generator class="native">
</id>
<property column="name" length="50"
name="Name" type="string"/>
<one-to-one name="ObjB"
class="ObjB"
cascade="all"
/>
</class>
</hibernate-mapping>
}
ObjB.hbm.xml{
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="eg">
<class name="ObjB" table="ObjB">
<id column="ref_obja_id" name="RefObjAId" type="integer">
<generator class="foreign">
<param name="property">RefObjA</param>
</generator>
</id>
<property column="name" generated="never" length="50"
name="Name" type="string"/>
<one-to-one name="RefObjA"
class="ObjA"
constrained="true"
/>
</class>
</hibernate-mapping>
}
[Java] StringBuffer使用方式
import java.lang.StringBuffer
StringBuffer xml = new StringBuffer();
xml.append("要輸出的字串");
xml.toString();
[Java] String 的方法 split (切割字串)
String display = "a&b&c";
String[] arrayS = display.split("&");
回傳一個字串的陣列 可用for把值給取出
在Blogger中貼上程式碼
CODE{
display: block; /* fixes a strange ie margin bug */
font-family: Courier New;
font-size: 8pt;
overflow:auto;
background: #f0f0f0 url(http://klcintw.images.googlepages.com/Code_BG.gif) left top repeat-y;
border: 1px solid #ccc;
padding: 10px 10px 10px 21px;
max-height:200px;
height:200px; // for IE6
line-height: 1.2em;
}
從以下來源找到的
http://klcintw4.blogspot.com/2006/11/blog-post_03.html
[Java] SimpleDateFormate使用方式
import java.text.SimpleDateFormat;
SimpleDateFormat df =
new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String display = df.format(System.currentTimeMillis());
System.out.println(display);
df.parse(String source)可回傳Date()型態
Date d = df.parse("2010-01-01");
yyyy:代表西元年
MM:月份
dd:日
HH:時
mm:分
ss:秒
2008年6月28日 星期六
[Hibernate] hibernate DAO 資料表對應物件
public class Account {
private String apid;
private String id;
private String pw;
get和set,用eclipse可以自動產生 如下
public String getApid() {
return apid;
}
public void setApid(String apid) {
this.apid = apid;
}
}
2008年6月24日 星期二
JavaScript login驗證
chkform=function(){
var PhoneNumber=document.getElementById('PhoneNum');
if(PhoneNum.value==''){
alert('請輸入帳號');
PhoneNum.focus();
return false;
}
}
在表單送出時 可以用JavaScript 去驗證是否有欄位沒有填
表單範例
<form id="form1" name="form1" method="post" action="xxx.jsp" onsubmit="javascript:return(chkform());>
<input name="PhoneNum" id="PhoneNum" type="text">
<input type="submit" name="Submit" value="確認" />
訂閱:
文章 (Atom)