package test.swing.jtable;
|
PHP字串長度找子字串與取代字串的常用函數
PHP在字串的操作上,有非常多的相關函數可以使用,我們在這裡只介紹經常會使用到的字串操作函數。像是如何取得字串的長度、在某一個字裏面尋找子字串首次出現的位置、以及字串的取代函數...等等。這些都是在編寫程式的時候,頻繁被程式設計師使用到的基礎函數。 取得字串長度 <?...
2014年8月30日 星期六
使用DefaultTableModel注入表格資料 - Java視窗程式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)的顯示效果。
jQuery上傳檔案教學
簡介
記得在前面PHP上傳檔案範例文章中,我們已經了解HTML form的檔案上傳的處理方式。在這篇文章我想要向大家介紹jQuery檔案上傳功能(jQuery Upload),它是一個非常簡單、美觀、容易上手使用的JavaScript的函數庫,可以有效的提升網頁開發設計的速度和效率。
jQuery上傳頁面
首先,在head插入一個css和兩個js檔案,
- uploadfile.min.css 負責處理用戶端上傳畫面的UI呈現
- jquery.min.js 它是jQuery核心的函數庫
- jquery.uploadfile.min.js 負責處理檔案上傳的函數庫
再來於body增加一個id='fileuploader'的div標籤,最後於head加入初始化jQuery插件的腳本代碼<script> $(document).ready(... </script>負責呼叫位於Server端的檔案處理邏輯與將回傳結果顯示在畫面上。
完整的index.html程式碼如下:
<html> <head> <title>jQuery Upload Demo.</title> <link href="http://hayageek.github.io/jQuery-Upload-File/uploadfile.min.css" rel="stylesheet"> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script src="http://hayageek.github.io/jQuery-Upload-File/jquery.uploadfile.min.js"></script> <script> $(document).ready(function() { $("#fileuploader").uploadFile({ url:"upload.php", fileName:"myfile" }); }); </script> </head> <body> <div id="fileuploader">Upload</div> </body> </html>
檔案處理邏輯
在目前的位置建立uploads目錄,用來存放上傳到伺服器的檔案,接著需要判斷是單一檔案或是多個檔案上傳,分別指派不同的程式邏輯處理。
完整的upload.php程式碼如下:
<?php $output_dir = "uploads/"; if(isset($_FILES["myfile"])) { $ret = array(); //判斷是單一或多個檔案上傳 if(!is_array($_FILES["myfile"]["name"])) //單一檔案 { $fileName = $_FILES["myfile"]["name"]; move_uploaded_file($_FILES["myfile"]["tmp_name"],$output_dir.$fileName); $ret[]= $fileName; } else //多個檔案 { $fileCount = count($_FILES["myfile"]["name"]); for($i=0; $i < $fileCount; $i++) { $fileName = $_FILES["myfile"]["name"][$i]; move_uploaded_file($_FILES["myfile"]["tmp_name"][$i],$output_dir.$fileName); $ret[]= $fileName; } } echo json_encode($ret); } ?>
輸出畫面
結論
由於過去一直都有在使用jQuery Upload來開發上傳檔案的程式,因為它是透過AJAX(Asynchronous JavaScript and XML)的方式來處理上傳檔案的資料串流,所以使用者可以依据其特性客製出各式各樣華麗的jQuery Upload使用者介面(UI;User Interface)。
2014年8月26日 星期二
PHP下載檔案實作
概要
如何讓我們能夠以PHP從伺服器下載檔案到用戶端(Client side)的電腦呢?那第一個要映入你的眼簾的必定是HTTP(Hypertext Transfer Protocol)通訊協定的表頭(header),因為PHP就是透過HTTP協定來與用戶端進行資料交換,在下面我們提供兩個下載檔案的作法給各位參考。
建立檔案下載頁面
撰寫一支index_df.html的檔案下載網頁,在這個頁面中需要有兩個下載檔案的超連結,分別指向方法一和方法二的下載檔案的程式代碼。
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>檔案下載頁面</title> </head> <body> <p><strong>方法一:簡單組合字串變數</strong></p> <p><a href="download_sf1.php" target="_blank">下載mycontacts.csv檔案</a></p> <p> </p> <p><strong>方法二:透過讀取某檔案串流</strong></p> <p><a href="download_sf2.php" target="_blank">下載mydoc.csv檔案</a></p> </body> </html>
下載檔案程式邏輯
方法一:簡單組合字串變數 (download_sf1.php)
<?php // 把目前的字串串流輸出到檔案 header('Content-Description: File Transfer'); header("Content-type: text/csv; charset=big5"); header("Content-disposition: attachment; filename=mycontacts.csv"); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); // 這裏要注意是\r\n是Windows的換行符號,\n為Unix的換行符號 $content = "姓名,電話,住址,備註"."\r\n"; $content .= "N111,tel008,台北,nothing"."\r\n"; $content .= "N222,tel009,高雄,N/A"."\r\n"; // 將字串編碼由utf-8轉為big5(非必要) $content = iconv("utf-8","big5",$content); echo $content; ?>
方法二:透過讀取某檔案串流 (download_sf2.php)
<?php // 把伺服器的檔案串流輸出為指定檔案 header('Content-Description: File Transfer'); header("Content-type: text/csv; charset=big5"); //header('Content-Type: application/octet-stream'); header("Content-disposition: attachment; filename=mydoc.csv"); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); $filename = "D:\\test_doc.csv"; if (file_exists($filename)) { // 讀取某一檔案且輸出檔案串流 readfile($filename); } ?>
(下載test_doc.csv檔案連結)
結論
總而言之,各位在進行網頁程式設計時,基礎的HTTP通訊協定的知識必不可少,不僅可以增進自己對用戶端(Client)與伺服器(Server)之間的互動關係之了解,還可以提升程式開發的效率。
PHP上傳檔案範例
前言
一般我們要透過PHP實現上傳檔案的任務,通常需要利用HTML的form元素裏面的enctype屬性設置為multipart/form-data,讓該表單可以傳遞檔案資料型態。後端在以一支PHP程式負責處理表單傳來的檔案數据的更改名檔、放置路徑等等的邏輯處理作業。
選取要上傳的檔案
首先,建立一支index_uf.html程式,讓它包含一個可以上傳檔案的表單(form),於表單內增加input元素type屬性設為file,這樣一來用戶就能從用戶端選取想要上傳的檔案,最後再加入input元素type屬性為submit,讓用戶擁有提交檔案到伺服器的能力。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>選取欲上傳的檔案...</title>
</head>
<body>
<form action="upload_file.php" enctype="multipart/form-data" method="post">
<label for="file">檔名:</label>
<input id="file" name="file" type="file" />
<input name="submit" type="submit" value="提交" />
</form>
</body>
</html>
上傳程式邏輯
寫一支upload_file.php程式,開頭先設置utf-8編碼,再來判斷由用戶端傳來的submit按鈕的狀態是否為true,若為true時,於伺服器建立upload目錄、且把暫存檔名更改為用戶指定的檔案名稱(move_uploaded_file函數);反之將連結重新導回選取要上傳檔案畫面。
<?php
// 設定文件utf-8編碼
header("Content-Type:text/html; charset=utf-8");
if(isset($_POST["submit"])){
$sitepath = realpath($_SERVER["DOCUMENT_ROOT"]);
$up_dir = $sitepath . DIRECTORY_SEPARATOR . "upload". DIRECTORY_SEPARATOR;
if(!file_exists($up_dir)){
mkdir($up_dir);
}
$up_file = $up_dir . $_FILES["file"]["name"];
if (file_exists($up_file)) {
echo $_FILES["file"]["name"] . " 已經存在了!";
} else {
move_uploaded_file($_FILES["file"]["tmp_name"], $up_file);
echo "上傳檔案 " . $_FILES["file"]["name"] . "成功!!<br/>";
echo "儲存在: " . $up_file;
}
} else {
header("Location: index_uf.html");
}
?>
總結
上述只是一個簡單的HTML from的檔案上傳的教學文章,除了採用此種上傳檔案方法,你也可以使用jQuery upload或Flash的方式,來完成上傳檔案到伺服器的作業。
PHP&MySQL物件導向應用
簡介
PHP的物件導向技術是從PHP3以後開始支援,到了PHP5得到了大力的發展,而且整個模組化的物件結構逐漸完善。記得在PHP存取MySQL資料庫文章中已向大家介紹過非物件導向的DB操作方式。在本篇文章中將採用mysqli類別來示範如何以物件的方式進行MySQL資料庫的存取服務。它屬於PDO(PHP Data Objects)存取資料庫的延伸函式庫的一部份。
以物件向導向存取MySQL
1.設定連結DB的共用常數
<?php
define("host","localhost", false);
define("username","root", false);
define("password","mysql", false);
define("dbname","test", false);
?>
2.查詢作業(query_ext.php)
<?php
// 設定文件utf-8編碼
header("Content-Type:text/html; charset=utf-8");
// 加入DB共用常變數
require_once '../db_configs.php';
$mysqli = new mysqli(host, username, password, dbname);
// 檢查連線態狀
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: " . $mysqli->connect_error;
}
// 設定MySQL為utf8編碼
$mysqli->set_charset("utf8");
// 查詢user_info資料表所有記錄
$sql = "SELECT * FROM user_info";
$result = $mysqli->query($sql);
echo "<h2>查詢範例(object)</h2>";
echo "========================";
echo "<table border='1'>
<tr>
<th>Username</th>
<th>Password</th>
</tr>";
while($row = $result->fetch_array()) {
echo "<tr>";
echo "<td>" . $row['username'] . "</td>";
echo "<td>" . $row['password'] . "</td>";
echo "</tr>";
}
echo "</table>";
// 關閉MySQL資料庫連線
$mysqli->close();
?>
3.新增作業(add_ext.php)
<?php
// 設定文件utf-8編碼
header("Content-Type:text/html; charset=utf-8");
// 加入DB共用常數
require_once '../db_configs.php';
$mysqli = new mysqli(host, username, password, dbname);
// 檢查連線態狀
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: " . $mysqli->connect_error;
}
// 設定MySQL為utf8編碼
$mysqli->set_charset("utf8");
// 新增一筆記錄到user_info資料表
$sql = "INSERT INTO user_info (username, password, birth_date, sex, age) VALUES ('Eric','eric12345','1995-02-24',1,19)";
$mysqli->query($sql);
echo "<h2>新增範例(object)</h2>";
echo "========================<br/>";
echo '新增一筆記錄成功!!';
// 關閉MySQL資料庫連線
$mysqli->close();
?>
4.更新作業(update_ext.php)
<?php
// 設定文件utf-8編碼
header("Content-Type:text/html; charset=utf-8");
// 加入DB共用常數
require_once '../db_configs.php';
$mysqli = new mysqli(host, username, password, dbname);
// 檢查連線態狀
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: " . $mysqli->connect_error;
}
// 設定MySQL為utf8編碼
$mysqli->set_charset("utf8");
// 更新某一筆記錄到user_info資料表
$sql = "UPDATE user_info SET password='pt54321' WHERE user_id=1";
$mysqli->query($sql);
echo "<h2>更新範例(object)</h2>";
echo "========================<br/>";
echo '更新user_id=1的記錄成功!!';
// 關閉MySQL資料庫連線
$mysqli->close();
?>
5.刪除作業(delete_ext.php)
<?php
// 設定文件utf-8編碼
header("Content-Type:text/html; charset=utf-8");
// 加入DB共用常數
require_once '../db_configs.php';
$mysqli = new mysqli(host, username, password, dbname);
// 檢查連線態狀
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: " . $mysqli->connect_error;
}
// 設定MySQL為utf8編碼
$mysqli->set_charset("utf8");
// 刪除某一筆記錄
$sql = "DELETE FROM user_info WHERE username='Eric'";
$mysqli->query($sql);
echo "<h2>刪除範例(object)</h2>";
echo "========================<br/>";
echo "刪除username='Eric'的記錄成功!!";
// 關閉MySQL資料庫連線
$mysqli->close();
?>
結論
透過PHP以物件的方式來操作MySQL資料庫的數據,的確讓人比較不容易很直觀的理解,不過如果只是單純要使用PHP現有的類別函數庫,仔細了解程式代碼應該還是可以很快上手。在此還是建議各位先去充實PHP物件導向的程式設計知識,以利進階的模組化程式設計觀念的建立。
2014年8月22日 星期五
PHP存取MySQL資料庫
前言
PHP(Hypertext Preprocessor)是一種動態式的互動網頁開發技術,可以籍由向應用伺服器(Application Server)請求資料庫的數据交換服務,達到與客戶端互動的效果。
存取資料庫作業
1.MySQ連線的共用常數
寫一支db_config.php的資料庫連線參數設定檔,記得在建立資料庫連線時將它引入:
<?php
define("host","localhost", false);
define("username","root", false);
define("password","mysql", false);
define("dbname","test", false);
?>
2.查詢資料表
<?php
// 設定文件utf-8編碼
header("Content-Type:text/html; charset=utf-8");
// 加入DB共用常數
require_once 'db_configs.php';
// 建立MySQL資料庫連線
$con=mysqli_connect(host,username,password,dbname) or die("Error " . mysqli_error($con));
// 檢查連線態狀
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// 設定MySQL為utf8編碼
mysqli_query($con,"SET NAMES 'utf8'");
// 查詢user_info資料表所有記錄
$sql = "SELECT * FROM user_info";
$result = mysqli_query($con,$sql) or die("Error in the consult.." . mysqli_error($con));
echo "<h2>查詢範例</h2>";
echo "========================";
echo "<table border='1'>
<tr>
<th>Username</th>
<th>Password</th>
</tr>";
while($row = mysqli_fetch_array($result)) {
echo "<tr>";
echo "<td>" . $row['username'] . "</td>";
echo "<td>" . $row['password'] . "</td>";
echo "</tr>";
}
echo "</table>";
// 關閉MySQL資料庫連線
mysqli_close($con);
?>
3.新增一筆記錄
<?php
// 設定文件utf-8編碼
header("Content-Type:text/html; charset=utf-8");
// 加入DB共用常數
require_once 'db_configs.php';
// 建立MySQL資料庫連線
$con=mysqli_connect(host,username,password,dbname) or die("Error " . mysqli_error($con));
// 檢查連線態狀
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// 設定MySQL為utf8編碼
mysqli_query($con,"SET NAMES 'utf8'");
// 新增一筆記錄到user_info資料表
$sql = "INSERT INTO user_info (username, password, birth_date, sex, age) VALUES ('Eric','eric12345','1995-02-24',1,19)";
mysqli_query($con,$sql) or die("Error in the consult.." . mysqli_error($con));
echo "<h2>新增範例</h2>";
echo "========================<br/>";
echo '新增一筆記錄成功!!';
// 關閉MySQL資料庫連線
mysqli_close($con);
?>
4.更新某一記錄
<?php
// 設定文件utf-8編碼
header("Content-Type:text/html; charset=utf-8");
// 加入DB共用常數
require_once 'db_configs.php';
// 建立MySQL資料庫連線
$con=mysqli_connect(host,username,password,dbname) or die("Error " . mysqli_error($con));
// 檢查連線態狀
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// 設定MySQL為utf8編碼
mysqli_query($con,"SET NAMES 'utf8'");
// 更新某一筆記錄到user_info資料表
$sql = "UPDATE user_info SET password='pt54321' WHERE user_id=1";
mysqli_query($con,$sql) or die("Error in the consult.." . mysqli_error($con));
echo "<h2>更新範例</h2>";
echo "========================<br/>";
echo '更新user_id=1的記錄成功!!';
// 關閉MySQL資料庫連線
mysqli_close($con);
?>
5.刪除一筆記錄
<?php
// 設定文件utf-8編碼
header("Content-Type:text/html; charset=utf-8");
// 加入DB共用常數
require_once 'db_configs.php';
// 建立MySQL資料庫連線
$con=mysqli_connect(host,username,password,dbname) or die("Error " . mysqli_error($con));
// 查連線態狀
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// 設定MySQL為utf8編碼
mysqli_query($con,"SET NAMES 'utf8'");
// 刪除某一筆記錄
$sql = "DELETE FROM user_info WHERE username='Eric'";
mysqli_query($con,$sql) or die("Error in the consult.." . mysqli_error($con));
echo "<h2>刪除範例</h2>";
echo "========================<br/>";
echo "刪除username='Eric'的記錄成功!!";
// 關閉MySQL資料庫連線
mysqli_close($con);
?>
結論
經由上述PHP操作MySQL資料庫的新增/刪除/更改/查詢的示範,讓我們很容易理解程式編碼所要代表的意義,就那麼短短的幾行程式碼就能完成存取資料庫表格的任務。
2014年8月19日 星期二
整合Struts2+Spring+Hibernate的專案
簡介
我們在先前的兩篇文章中已經向大家介紹過Spring與Hibernate的結合運用的範例教學。
然而於本文中,我們將再把Struts2也一起加入進來使用,讓整個專案形成一個結構嚴謹與完整的MVC(Model View Controller)架構。
使用的工具&技術
1.JDK1.7.0_04
2.Hibernate 3.2.3.GA
3.JBoss Hibernate Tools
4.Spring3.0.7
5.Struts2-2.3.15.1
6.MySQL 5.5
7.Eclipse Java EE KEPLER
第一支MyStruts2專案
在圖1中可以讓我們清楚的了解,整個專案的目錄結構,大致分為dao,service,action三個主要的目錄組成。
圖1.MyStruts2專案結構
第一步,下載Struts2-2.3.15.1與Spring3.0.7和Hibernate 3.2.3.GA的相關jar檔案。
Struts2部份主要的jar:
struts2-core-2.3.15.1.jar
struts2-embeddedjsp-plugin-2.3.15.1.jar
struts2-json-plugin-2.3.15.1.jar
struts2-spring-plugin-2.3.15.1.jar
xwork-core-2.3.15.1.jar
asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
commons-fileupload-1.3.jar
commons-io-2.0.1.jar
commons-lang3-3.1.jar
freemarker-2.3.19.jar
ognl-3.0.6.jar
oro-2.0.8.jar
第二步,生成Spring與Hibernate的相關dao和service
Hibernate組成部份:
UserInfo.java
UserInfo.hbm.xml
UserInfoHome.java
Spring組成部份:
UserInfoManager.java
applicationContext.xml
第三步,建立struts.xml配置檔
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <constant name="struts.devMode" value="false" /> <!-- struts的URL擴展名--> <constant name="struts.action.extension" value="do" /> <!-- 允許訪問靜態成員變量 --> <constant name="struts.ognl.allowStaticMethodAccess" value="true" /> <constant name="struts.custom.i18n.resources" value="i18n/messages" /> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.enable.SlashesInActionNames" value="true" /> <constant name="struts.mapper.alwaysSelectFullNamespace" value="false"></constant> <constant name="struts.mapper.class" value="org.apache.struts2.dispatcher.mapper.DefaultActionMapper"></constant> <package name="default" namespace="/pages" extends="struts-default"> <action name="*/*" method="{2}" class="com.yourcompany.ms2.action.{1}Action"> <result name="success">/pages/{1}/{2}.jsp</result> </action> <!-- Add your actions here --> </package> </struts>
第四步,加入query.jsp顯示資料庫查詢結果 (需位於pages/Test/目錄底下)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'query.jsp' starting page</title> </head> <body> <h2><s:property value="message" /></h2> <s:label value="OK"/> </body> </html>
第五步,創建TestAction測試程式
package com.yourcompany.ms2.action; import org.springframework.beans.factory.annotation.Autowired; import com.opensymphony.xwork2.ActionSupport; import com.yourcompany.ms2.domain.UserInfo; import com.yourcompany.ms2.service.UserInfoManager; public class TestAction extends ActionSupport { @Autowired private UserInfoManager userInfoManager; public String query() throws Exception { // 查詢 UserInfo user = userInfoManager.query(new Integer(1)); //out.println("查詢一筆記Username: "+user.getUsername()); setMessage("查詢一筆記Username: "+user.getUsername()); return SUCCESS; } public String hello() throws Exception { setMessage("Hello, My Struts2."); return SUCCESS; } private String message; public void setMessage(String message) { this.message = message; } public String getMessage() { return message; } }
結論
假如您已經學會了Spring結合Hibernate的混合搭配使用,那麼這篇文章中,你只需要把焦點集中在Struts2的參數設定和實際操作測試。轉眼間,我們已經成功的演繹Struts2 + Spring + Hibernate的網站專案的示範教學。(下載本文範例程式檔) 記得下載相關jar檔
訂閱:
文章 (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...