PHP字串長度找子字串與取代字串的常用函數

PHP在字串的操作上,有非常多的相關函數可以使用,我們在這裡只介紹經常會使用到的字串操作函數。像是如何取得字串的長度、在某一個字裏面尋找子字串首次出現的位置、以及字串的取代函數...等等。這些都是在編寫程式的時候,頻繁被程式設計師使用到的基礎函數。 取得字串長度 <?...

顯示具有 Struts2 標籤的文章。 顯示所有文章
顯示具有 Struts2 標籤的文章。 顯示所有文章

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.1Spring3.0.7Hibernate 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檔