package test.swing.component; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; public class TestJButton extends JFrame { private JPanel contentPane; public static void main(String[] args) { TestJButton frame = new TestJButton(); frame.setVisible(true); } public TestJButton(){ setBounds(100, 100, 450, 300); //(左邊界,上邊界,宽度,長度) setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(10,10,10,10)); //(上,左,下,右) setContentPane(contentPane); //將Layout設定為由左至右的排列components之間的關係,超出面板宽度的元件往下列遞補 contentPane.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5)); //(置左,左右間距,上下間距) JButton finishBtn = new JButton("完成按鈕"); contentPane.add(finishBtn); } }
PHP字串長度找子字串與取代字串的常用函數
PHP在字串的操作上,有非常多的相關函數可以使用,我們在這裡只介紹經常會使用到的字串操作函數。像是如何取得字串的長度、在某一個字裏面尋找子字串首次出現的位置、以及字串的取代函數...等等。這些都是在編寫程式的時候,頻繁被程式設計師使用到的基礎函數。 取得字串長度 <?...
2017年12月23日 星期六
建立一個JButton元件
2015年4月30日 星期四
實用Swift Mailer類庫用來發送php電子郵件
Swift Mailer是一款功能特別強大的PHP物件導向的發送電子郵件的類別函式庫。它可以讓你透過內建的mail()函數、SMTP、postfix、甚至是你自己客製化的通訊協定來達到寄送email的目的。還可以有效的阻擋email的表頭遭到注入式攻擊,真的確是一個簡單容易使用的PHP郵件發送類庫。下載連結:http://swiftmailer.org/download
一個簡單發送SMTP Gmail電子郵件的範例
一個簡單發送SMTP Gmail電子郵件的範例
<?php require_once 'swiftmailer-5.x/lib/swift_required.php'; // 採用預設的mail()數函發email // $transport = Swift_MailTransport::newInstance(); // 使用SMTP的方式來發送gmail $transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl') ->setUsername('Your username') ->setPassword('Your password') ; // 填寫email的主旨、內容、寄件者、收件者 $message = Swift_Message::newInstance(); $message->setTo(array( "jason@gmail.com" => "Jason.Terry" //,"abc@yahoo.com" => "Mike.Porter" )); $message->setSubject("Swift Mail測試中..."); $message->setBody("恭喜您! Swift測試郵件發送成功。"); $message->setFrom("swiftmailer@gamil.com", "Swift-mailer"); // Send the email $mailer = Swift_Mailer::newInstance($transport); $mailer->send($message); echo 'Send Swift mail successfully!!';
2015年4月29日 星期三
常用的三種PHP加解密方法
談起PHP的資料加密、解密方式,一般我們會聯想到的一定是私密的資料或是重要的數據,才需要經過加密的演算,產生一串人肉眼無法辯識的字串編碼,透過網路傳遞到接收端,再經過解密的演算,還原回原始的內容。就目前而言mcrypt_encrypt, md5與base64是PHP常常使用到的加解密方法,下面我們會個別介紹:
1. MD5
它是一種以128bit的固定長度表示字串的密碼雜湊函數。
2. Base64
Base64是一種採用英文字母大小寫、阿拉伯數字、加號「+」或斜槓「/」,所組合而成的字串編碼方式,習慣應用於MIME格式的email、儲存於XML的複雜資料。
3. mcrypt_encrypt
一個簡單PHP內建加密、解密的函數。
1. MD5
它是一種以128bit的固定長度表示字串的密碼雜湊函數。
<?php // 加密 echo md5("測試字元!"); ?>
2. Base64
Base64是一種採用英文字母大小寫、阿拉伯數字、加號「+」或斜槓「/」,所組合而成的字串編碼方式,習慣應用於MIME格式的email、儲存於XML的複雜資料。
<?php // base64加密 echo base64_encode("測試字元!"); // base64解密 echo base64_decode("測試字元!"); ?>
3. mcrypt_encrypt
一個簡單PHP內建加密、解密的函數。
<?php // 設定金鑰, 負責對資料進行加解密 $key = "ac181c517bdf24ce053556bb280a2dcb"; /** * 加密函數 */ function encrypt($str) { $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); return base64_encode(trim(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, self::$key, $str, MCRYPT_MODE_ECB, $iv))); } /** * 解密函數 */ function decrypt($str) { $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, self::$key, base64_decode($str), MCRYPT_MODE_ECB, $iv)); } ?>
2014年9月5日 星期五
如何實作Android Webservice Client呢?
前言
何謂ksaop2-android計劃呢?它是一個由Third party所開發的一個輕量級的SOAP(Simple Object Access Protocol;簡單物件存取協定) Webservice的公用函式庫,非常適合應用在Android作業系統與外部跨系統間的資料交換。在開始介紹之前,我們先來談一談SOAP是一種使用於互連網上、以XML為訊息交換格式,在跨不同系統之間的資料交換的規範協定。下面我們主要讓各位了解Android平台要如何呼叫外部的Webservice服務。Ksoap Client操作介面
在這個小節中,將分成用戶介面(UI)顯示和佈置UI元件的XML設定檔兩個部份來探討:1.用戶介面(UI)顯示,故名思義指的是使用者在Android行動裝置上所呈現的畫面,如圖1所示。
2.佈置UI元件的XML設定檔(activity_soap_test.xml),是指對映到操作畫面的的每個元素的描述UI元件的定義文件。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <EditText android:id="@+id/et_inputname" android:layout_width="100dp" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/calculateBtn" android:layout_alignBottom="@+id/calculateBtn" android:layout_alignParentLeft="true" android:layout_toLeftOf="@+id/btn_callws" android:ems="10" > <requestFocus /> </EditText> <Button android:id="@+id/btn_callws" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:onClick="processData" android:text="呼叫Webservice" /> <TextView android:id="@+id/tv_showme" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/et_inputname" android:layout_below="@+id/btn_callws" android:layout_marginLeft="84dp" android:layout_marginTop="42dp" android:text="Show me!!" android:textAppearance="?android:attr/textAppearanceMedium" /> </RelativeLayout>
Ksoap Client商業邏輯
當使用者按下呼叫webservice的按鈕,會觸發執行呼叫外部webserivce的商業邏輯的程式碼(SoapTest.java),舉例來說,使用者只要於操作畫面輸入Kingdom,稍後按下呼叫webservice按鈕,伺服器立即回傳Hello, Kingdom!結果到使用者畫面上。
package test.android.protocol; import org.ksoap2.SoapEnvelope; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapPrimitive; import org.ksoap2.serialization.SoapSerializationEnvelope; import org.ksoap2.transport.HttpTransportSE; import test.android.R; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.widget.EditText; import android.widget.TextView; public class SoapTest extends Activity { private static final String NAMESPACE = "http://ws.yourcompany.com/"; //將your IP address取代為你的測試主機位址 private static String URL = "http://your IP address:8080/WSTest/WSGreetingsPort?WSDL"; private static final String METHOD_NAME = "hello"; private static final String SOAP_ACTION = "http://ws.yourcompany.com/hello"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_soap_test); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.soap_test, menu); return true; } /** * 處理呼叫遠端webservice的商業邏輯 * @param view */ public void processData(View view) { EditText inputNameET = (EditText) findViewById(R.id.et_inputname); String inputName = inputNameET.getText().toString(); SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); request.addProperty("arg0", inputName); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.setOutputSoapObject(request); HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); try { androidHttpTransport.call(SOAP_ACTION, envelope); SoapPrimitive resultsRequestSOAP = (SoapPrimitive) envelope.getResponse(); TextView showMeTV = (TextView) findViewById(R.id.tv_showme); showMeTV.setText(resultsRequestSOAP.toString()); } catch (Exception e) { e.printStackTrace(); } } }
結語
經過以上簡單的小程式範例介紹之後,相信各位都可以在android平台上設計一個可以向外部伺服務(Server)請求數據服務的功能。2014年8月30日 星期六
使用DefaultTableModel注入表格資料 - Java視窗程式JTable元件應用
package test.swing.jtable;
|
使用Object陣列注入表格資料 - Java視窗程式JTable元件應用
package test.swing.jtable;
|
2014年8月27日 星期三
善用jQuery的load、get、post的方法
概要
過去只能運用互動式網頁技術向伺服器請求資源服務(如ASP,PHP,JSP等)。隨著AJAX技術的興起,讓我們也可以透過以下jQuery函數向伺服器發起服務請求:
- Load 取回位於伺服器的檔案資源。
- Get 向伺服器請求數据服務。
- Post 提交數据給伺服器處理。
在後面的小節裏,會有每一個函數的使用範例與細部的說明,讓大家能夠很快掌握這些函數的使用要領。
使用jQuery Load函數
在Server端創建一支demo_str.txt的文字檔,作為jQuery Load載入的資料來源,其內容如下:
<h4>這是一個測試文字檔...</h4>
寫一支load.html,在head把jquery.min.js函數庫載入並增加jquery load的腳本實作的程式碼,呼叫且回傳文字檔的內容到id='jqloadDiv'的div標籤。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>使用jQuery Load函數</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#btn1").click(function(){
$("#jqloadDiv").load("demo_str.txt");
});
});
</script>
</head>
<body>
<input type="button" id="btn1" name="btn1" value="執行jQuery Load按鈕" />
<div id="jqloadDiv"></div>
</body>
</html>
操作jQuery Get函數
在Server端建立一支obtval_by_get.php,用作jQuery Get函數的呼叫網頁,該頁程式只有包含了一行簡短的文字內容輸出。
<?php
echo "This is testing data. (by Get func)";
?>
撰寫一支get.html,先在head加入jquery.min.js函數庫,再來增加一段jquery get函數實作的腳本程式碼,呼叫並取回echo輸出的文字串流和連線狀態。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>使用jQuery Get函數</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#btn1").click(function(){
$.get("obtval_by_get.php",function(data,status){
//alert("資料: " + data + "\n狀態: " + status);
$("#jqDiv").html("資料: " + data + "<br/>狀態: " + status);
});
});
});
</script>
</head>
<body>
<input type="button" id="btn1" name="btn1" value="執行jQuery Get按鈕" />
<div id="jqDiv"></div>
</body>
</html>
運用jQuery Post函數
在Server端建立一支obtval_by_post.php,用來處理由jQuery Post傳遞過來的name和greetings參數,其內容如下:
<?php
if(isset($_POST["name"]) && isset($_POST["greetings"])){
echo $_POST["greetings"].$_POST["name"].". (by Post func)";
}
?>
再寫一支post.html,於head加入jquery.min.js和jquery post函數實作的腳本程式碼,必需附加name與greetings兩個參數值,最後會回傳處理結果和連線狀態。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>使用jQuery Post函數</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#btn1").click(function(){
$.post("obtval_by_post.php",
{
name:"Peter",
greetings:"Hello, "
},
function(data,status){
//alert("資料: " + data + "\n狀態: " + status);
$("#jqDiv").html("資料: " + data + "<br/>狀態: " + status);
});
});
});
</script>
</head>
<body>
<input type="button" id="btn1" name="btn1" value="執行jQuery Post按鈕" />
<div id="jqDiv"></div>
</body>
</html>
總結
閱讀完以上三個簡單的小範例說明之後,讓我們也可以使用jQuery AJAX的技術向伺服器請求資源服務。由於是經過AJAX回傳的結果,不需要刷新頁面,而且還可以動態改變用戶介面(UI)的顯示效果。
訂閱:
文章 (Atom)
-
Ant本身並非是一個Windows的程式,因此安裝過程需要一些手動安裝步驟。 1. 首先,到apache ant的官方網站 http://ant.apache.org/bindownload.cgi 下載ant的程式套件壓縮檔 2. 再來,將Ant程式套件的zi...
-
簡介 記得在前面 PHP上傳檔案範例 文章中,我們已經了解HTML form的檔案上傳的處理方式。在這篇文章我想要向大家介紹jQuery檔案上傳功能( jQuery Upload ),它是一個非常簡單、美觀、容易上手使用的JavaScript的函數庫,可以有效的提升網頁開發...
-
JAX-WS(Java API for XML Web Services)Web Service是一種由Oracle Sun發展的以XML為基礎的Web Service開發技術。 目前 已經涵概到Java EE5(含)以上的版本, 它可以讓使用者迅速開 發 Java Web Se...