import java.io.BufferedWriter; |
PHP字串長度找子字串與取代字串的常用函數
PHP在字串的操作上,有非常多的相關函數可以使用,我們在這裡只介紹經常會使用到的字串操作函數。像是如何取得字串的長度、在某一個字裏面尋找子字串首次出現的位置、以及字串的取代函數...等等。這些都是在編寫程式的時候,頻繁被程式設計師使用到的基礎函數。 取得字串長度 <?...
2012年6月19日 星期二
運用Java Excel API將excel檔轉為csv檔範例
如何使用Java Excel API來實現將excel檔案自動轉換為csv檔案格式,若沒有JExcel Library可以到http://sourceforge.net/projects/jexcelapi/files/網站上下載.
2012年6月2日 星期六
運用Eclipse3.7.2撰寫簡單的視窗程式
如果還沒有使用過Eclipse IDE的使用者們,必需要先上Eclipsen官網http://www.eclipse.org/downloads/下載Eclipse Classic 3.7.2版本的IDE (Windows 32 Bit)。
再進入[Taiwan] Computer Center, Shu-Te University (http)連結,下載IDE的來源壓縮檔eclipse-SDK-3.7.2-win32.zip。
使用WinRAR應用軟體解開eclipse-SDK-3.7.2-win32.zip壓縮檔
(WinRAR下載來源:http://www.softking.com.tw/soft/clickcount.asp?fid3=12899)
請到C:\eclipse-SDK-3.7.2-win32\eclipse (剛才eclipse解壓縮輸出的目錄) 路徑,根據下圖移動滑鼠至elipse.exe小圖示,雙擊滑鼠左鍵兩下。
會出現eclipse INDIGO版本的圖示視窗,並且按下OK鈕使用預設Workspace的目錄路徑,用以存放Java相關的專案。
當進入eclipse IDE的主畫面時, 找到File -> Java Project創建一個全新的專案。
輸入專案名稱SwingTest後,按Next鈕到下一步。
把滑鼠移至SwingTest -> src小圖示底下,單擊滑鼠右鍵找到New -> Class
來建立新的Java類別。
請在Package欄位輸入test,再到Name欄位輸入類別名稱TestSwing,最後記要把public static void main(String[] args)項目打勾,讓TestSwing這支應用程式擁有程式進入點,可以直接在JVM底下被執行。
第一支Java視窗程式的類別代碼如下:
package test;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class TestSwing extends JFrame {
TestSwing() {
JLabel jlbHelloWorld = new JLabel("Hello World");
add(jlbHelloWorld);
this.setSize(250, 150);
setVisible(true);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new TestSwing();
}
}
Java JDK7環境配置
1. 首先到Oracle官方網站 http://www.oracle.com/index.html下載JDK7來源,實際上的操作畫面與
步驟如下所示:
步驟一:將滑鼠移動到Oracle Technology Network圖示,選取JAVA連結
步驟三:選擇Java SE Downloads -> Java Platform (JDK) 7u4圖示
步驟四:選取Accept License Agreement項目,稍後畫面會出現Thank you for accepting the Oracle Binary Code License Agreement for Java SE; you may now download this software.的英文訊息,也就表示我們接受了JDK7的授權同意書,因此Oracle同意我們下載JDK7的軟體來使用,然而在教學中我們以windows x86(32bit)的作業系統為示例,因此請將滑鼠移動到jdk-7u4-windows-i586.exe超連結下載
步驟五:請在已載下完畢jdk-7u4-windows-i586.exe的檔案小圖示上點擊兩下,接著畫面會出現歡迎安裝SE Development Kit 7 Update 4的視窗,按Next按鈕。
步驟六:下面的畫面中(預設不改變安裝路經),按Next按鈕到下一個動作。
步驟七:選擇安裝jre7(Java SE Runtime Environment 7)的檔案路徑,按Next到下一動作。
步驟八:當畫面出現Java SE Development Kit 7 Update 4 Successfully Installed訊息時,恭喜您已經完成的JDK7的安裝作業。
2. 再來,進行Java的環境變數設定作業:
步驟一:請在我的電腦 圖示按滑鼠右鍵,選擇內容項目
步驟二:進階系統設定 -> 環境變數
步驟三:請在系統變數的區域按下新增按鈕,加入JAVA_HOME的變數,並且記得找到原有Path數變,增加%JAVA_HOME%\bin的代碼。
3. 最後,利用Notepad寫一支簡單的HelloWorld的Java程式來測試一下JVM的環境配置是否正常:
步驟一:打開Notepad建立你的第一支HelloWorld的程式,然後把它儲存到C槽
步驟二:於開始列 -> 搜尋程式及檔案,輸入cmd的關鍵字按下Enter鍵,系統彈出命令列視窗(Command Line Window)
步驟三:於命令列 輸入cd \按Enter鍵,將游標移至c槽根目錄
步驟四:輸入javac HelloWorld.java指令,編譯java程式
步驟五:輸入java HelloWorld指令,執行java程式
再經過了下載JDK7來源、撰寫第一支HelloWorld的程式、到使用命令列編譯與執行成功HelloWorld程式的一連串過程,我們終於邁出了Java程式開發的一小歩!!
2012年5月31日 星期四
建立一個客製Liferay Portlet
事前準備工作:
1. Import liferay portal的開發環境到My Eclipse IDE
歩驟:File->Import, Existing projects into Workspace, 指向D:\liferay
2. 把相關會使用到的jar檔,待新的Struts portlet專案建立後逐一included。
ext/modules portal-impl.jar
ext/lib/global portal-kernel.jar
ext/lib/global portal-service.jar
ext/lib/global portlet.jar
ext/lib/global portlet-container.jar
客制Struts Portlet開發:
首先My Eclipse IDE開啟一個”QueryDataPortlet”的Web Project,而後更改web root folder為docroot
整理目錄結構,將QueryDataPortlet/src目錄移動到docroot/WEB-INF,如下圖所示:
並且於QueryDataPortlet/docroot中增加css、js、html三個目錄,Copy js/test.js、css/test.css、icon.png到QueryDataPortlet/docroot的js與css等對映目錄。
滑鼠右擊QueryDataPortlet專案,選取Properties->Source項目,按Add Folder重新設定新的Source folder為QueryDataPortlet/docroot/WEB-INF/src,並移除mssing path。
於docroot/WEB-INF內建立liferay的四大設定檔:
liferay-display.xml
<?xml version="1.0"?>
<!DOCTYPE display PUBLIC "-//Liferay//DTD Display 5.2.0//EN" "http://www.liferay.com/dtd/liferay-display_5_2_0.dtd">
<display>
<category name="category.sample">
<portlet id="queryData" />
</category>
</display>
liferay-portlet.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 5.2.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_5_2_0.dtd">
<liferay-portlet-app>
<portlet>
<portlet-name>queryData</portlet-name>
<icon>/icon.png</icon>
<struts-path>query_data</struts-path>
<use-default-template>true</use-default-template>
<restore-current-view>true</restore-current-view>
<instanceable>true</instanceable>
<private-request-attributes>false</private-request-attributes>
<header-portlet-css>/css/test.css</header-portlet-css>
<footer-portlet-javascript>/js/test.js</footer-portlet-javascript>
</portlet>
<role-mapper>
<role-name>administrator</role-name>
<role-link>Administrator</role-link>
</role-mapper>
<role-mapper>
<role-name>guest</role-name>
<role-link>Guest</role-link>
</role-mapper>
<role-mapper>
<role-name>power-user</role-name>
<role-link>Power User</role-link>
</role-mapper>
<role-mapper>
<role-name>user</role-name>
<role-link>User</role-link>
</role-mapper>
</liferay-portlet-app>
portlet.xml
<?xml version="1.0"?>
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd">
<portlet>
<portlet-name>queryData</portlet-name>
<display-name>Query data portlet</display-name>
<portlet-class>com.liferay.sampleStruts.SampleStrutsPortlet</portlet-class>
<init-param>
<name>view-action</name>
<value>/query_data/view</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
</supports>
<portlet-info>
<title>Query data from DB.</title>
<short-title>qry_2</short-title>
<keywords>qry_3</keywords>
</portlet-info>
<security-role-ref>
<role-name>administrator</role-name>
</security-role-ref>
<security-role-ref>
<role-name>guest</role-name>
</security-role-ref>
<security-role-ref>
<role-name>power-user</role-name>
</security-role-ref>
<security-role-ref>
<role-name>user</role-name>
</security-role-ref>
</portlet>
</portlet-app>
liferay-plugin-package.properties
name=queryData
module-group-id=liferay
module-incremental-version=1
tags=sample
short-description=This plugin shows how to use Liferay's Struts Bridge.
change-log=
page-url=http://www.liferay.com
author=Liferay, Inc.
licenses=MIT
portal-dependency-jars=
portal.dependency.tlds=struts-tiles.tld
於docroot/WEB-INF內建立Struts的struts-config.xml與tiles-defs.xml檔案:
struts-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<action-mappings>
<action path="/query_data/view" forward="portlet.query_data.view" />
</action-mappings>
<message-resources parameter="com.coretronic.struts.ApplicationResources" />
<plug-in className="org.apache.struts.tiles.TilesPlugin">
<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
<set-property property="moduleAware" value="true" />
<set-property property="definitions-parser-validate" value="true" />
</plug-in>
</struts-config>
tiles-defs.xml
<?xml version="1.0"?>
<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">
<tiles-definitions>
<definition name="portlet.query_data.view" path="/portlet/query_data/view.jsp" />
</tiles-definitions>
於docroot/WEB-INF內修改web.xml:
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>PortletActionServlet</servlet-name>
<servlet-class>com.liferay.portal.struts.PortletActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>PortletActionServlet</servlet-name>
<url-pattern>/portlet_action/*</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>http://struts.apache.org/tags-tiles</taglib-uri>
<taglib-location>/WEB-INF/tld/struts-tiles.tld</taglib-location>
</taglib>
</web-app>
於docroot/ META-INF內建立context.xml:
context.xml
<Context>
<Loader loaderClass="com.liferay.support.tomcat.loader.PortalClassLoader"/>
<Resource name="jdbc/Eptest" auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@192.168.1.182:1521:eptest" username="ehr"
password="ehr" maxActive="20" />
</Context>
於docroot/WEB-INF內建立src/com/liferay/sampleStruts目錄與SampleStrutsPortlet.java:
SampleStrutsPortlet.java
package com.liferay.sampleStruts;
import com.liferay.portlet.StrutsPortlet;
import java.io.IOException;
import javax.portlet.PortletException;
import javax.portlet.PortletSession;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
/**
* <a href="JSPPortlet.java.html"><b><i>View Source</i></b></a>
*
* @author Brian Wing Shun Chan
*
*/
public class SampleStrutsPortlet extends StrutsPortlet {
public void doView(RenderRequest req, RenderResponse res)
throws IOException, PortletException {
super.doView(req, res);
}
}
於docroot/html內建立portlet/query_data目錄與init.jsp、view.jsp:
Init.jsp
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
<%@ taglib uri="http://liferay.com/tld/portlet" prefix="liferay-portlet" %>
<%@ taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme" %>
<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<%@ page import="com.liferay.portal.kernel.dao.search.*" %>
<%@ page import="com.liferay.portal.kernel.util.CalendarFactoryUtil" %>
<%@ page import="com.liferay.portal.kernel.util.Constants" %>
<%@ page import="com.liferay.portal.kernel.util.ContentTypes" %>
<%@ page import="com.liferay.portal.kernel.util.DateFormats" %>
<%@ page import="com.liferay.portal.kernel.util.GetterUtil" %>
<%@ page import="com.liferay.portal.kernel.util.HtmlUtil" %>
<%@ page import="com.liferay.portal.kernel.util.ListUtil" %>
<%@ page import="com.liferay.portal.kernel.util.ParamUtil" %>
<%@ page import="com.liferay.portal.kernel.util.StringPool" %>
<%@ page import="com.liferay.portal.kernel.util.StringUtil" %>
<%@ page import="com.liferay.portal.kernel.util.Validator" %>
<%@ page import="com.liferay.portal.kernel.util.WebKeys" %>
<%@ page import="com.liferay.portal.util.PortalUtil" %>
<%@ page import="javax.portlet.PortletRequest" %>
<%@ page import="javax.portlet.PortletSession" %>
<%@ page import="javax.portlet.PortletMode" %>
<%@ page import="javax.portlet.PortletURL" %>
<%@ page import="javax.portlet.WindowState" %>
<%@ page import="java.util.*" %>
<%@ page import="com.xxxcompany.struts.*" %>
<%@ page import="com.xxxcompany.util.*" %>
<portlet:defineObjects />
view.jsp
<%@ include file="init.jsp" %>
<%
PortletURL portletURL = renderResponse.createRenderURL();
portletURL.setWindowState(WindowState.NORMAL);
portletURL.setParameter("view_action", "/query_data/view");
List<String> headerNames = new ArrayList<String>();
headerNames.add("RC_ID");
headerNames.add("RC_NAME");
headerNames.add("REGION");
headerNames.add("PARENT_RC_ID");
headerNames.add(StringPool.BLANK);
List tValues = TestDB.getData();
SearchContainer searchContainer = new SearchContainer(renderRequest, null, null, "cur1", SearchContainer.DEFAULT_DELTA, portletURL, headerNames, "there are no records.");
List results = ListUtil.subList(tValues, searchContainer.getStart(), searchContainer.getEnd());
int total = tValues.size();
searchContainer.setTotal(total);
searchContainer.setResults(results);
List resultRows = searchContainer.getResultRows();
for (int i = 0; i < results.size(); i++) {
TestBean testBean = (TestBean)results.get(i);
ResultRow row = new ResultRow(testBean, testBean.getA(), i);
row.addText(testBean.getA());
row.addText(testBean.getB());
row.addText(testBean.getC());
row.addText(testBean.getD());
row.addText(StringPool.BLANK);
// Add result row
resultRows.add(row);
}
%>
<liferay-ui:search-iterator paginate="false" searchContainer="<%= searchContainer %>" />
<liferay-ui:search-paginator searchContainer="<%= searchContainer %>" />
於docroot/WEB-INF內建立src/com/coretronic/struts/TestBean.java與src/com/coretronic/util/TestDB.java:
TestBean.java
package com.coretronic.struts;
public class TestBean {
private String a;
private String b;
private String c;
private String d;
public TestBean(){
}
public TestBean(String s1,String s2,String s3,String s4){
this.a = s1;
this.b = s2;
this.c = s3;
this.d = s4;
}
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
public String getB() {
return b;
}
public void setB(String b) {
this.b = b;
}
public String getC() {
return c;
}
public void setC(String c) {
this.c = c;
}
public String getD() {
return d;
}
public void setD(String d) {
this.d = d;
}
}
TestDB.java
package com.coretronic.util;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import com.coretronic.struts.TestBean;
public class TestDB {
public static List getData(){
DBConnection conTool = null;
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
List list = new ArrayList();
try{
conTool = new DBConnection();
con = conTool.getDB("java:comp/env/jdbc/Eptest");
ps = con.prepareStatement("select * from tbl_gris_rc");
rs = ps.executeQuery();
while(rs.next()){
TestBean tb = new TestBean();
tb.setA(rs.getBigDecimal("RC_ID").toString());
tb.setB(rs.getString("RC_NAME"));
tb.setC(rs.getString("REGION"));
tb.setD(rs.getBigDecimal("PARENT_RC_ID").toString());
list.add(tb);
System.out.println(rs.getString("RC_NAME"));
}
}catch(Exception ex){
ex.printStackTrace();
System.out.println("Exception for TestDB: "+ex.getMessage());
}finally{
try{
if(rs != null) rs.close();
if(ps != null) ps.close();
if(conTool != null) conTool.closeConnection();
}catch(Exception exSql){
}
}
return list;
}
}
使用Ant生成新專案的build.xml與.war檔:
2. 修改剛才產生的build.xml,加入紅標字體的區塊於檔案中
<target depends="init" name="build-project">
<echo message="${ant.project.name}: ${ant.file}"/>
<javac debug="true" debuglevel="${debuglevel}" destdir="docroot/WEB-INF/classes" source="${source}" target="${target}">
<src path="docroot/WEB-INF/src"/>
<classpath refid="QueryDataPortlet.classpath"/>
</javac>
<jar destfile="${ant.project.name}.war">
<zipfileset dir="docroot/">
<include name="**/*.*" />
<exclude name="**/*.war" />
</zipfileset>
</jar>
</target>
3. 滑鼠右擊上述build.xml,選擇Run As->Ant Build,接著產生QueryDataPortlet.war
Deploy QueryDataPortlet專案,打開 IE8.0輸入http://localhost:8080開啟liferay portal,以Bruno (Admin)管理者帳號登入,選擇Add Application->Sample->”Query Data from DB.” ->add項目,將它附加到liferay portal。
訂閱:
文章 (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...