2007年8月1日

               摘要: 為開發(fā)JSF應(yīng)用,需要一個JSF實現(xiàn)。參考實現(xiàn)(RI)是所有其它實現(xiàn)都要遵循的標(biāo)準(zhǔn)。   所有JSF應(yīng)用都必須的JAR文件: Jsf-api.jar, jsf-impl.jar, jstl.jar, standard.jar, commons-beanutils.jar, commons-collections.jar, commons-digester.jar, common...  閱讀全文
          posted @ 2007-08-02 14:38 vso 閱讀(719) | 評論 (0)編輯 收藏
           
           

          PL/SQL  -- 塊結(jié)構(gòu)語言

          塊的語法如下:

          DECLARE

                 /* declarative section */         --可選(變量/游標(biāo)定義/過程函數(shù)的聲明)

          BEGIN

                 /* executable section */         --必須(PL/SQL語句)

                 EXCEPTION

                 /* exception section */          --可選

          END;

           

          用戶自定義的數(shù)據(jù)類型:

          DECLARE

          TYPE t_AddrRecord IS RECORD (

          Province VARCHAR2(10),

          City VARCHAR2(10),

          Stree VARCHAR2(10),

          Telephone NUMBER(12)

          );

          v_Address t_AddrRecord; --聲明一個用戶自定義數(shù)據(jù)類型的變量

           

          游標(biāo)是用來處理使用SELECT語句從數(shù)據(jù)庫中檢索到的多行記錄的工具.借助于游標(biāo)的功能,數(shù)據(jù)庫應(yīng)用程序可以對一組記錄逐個進(jìn)行處理,每次處理一行記錄.

           

          過程和函數(shù)的區(qū)別是過程沒有返回值,而函數(shù)是有返回值的.

           

          PL/SQL提供了三種不同的集合類型:按表索引,嵌套表和可變長數(shù)組

           

          ORACLE內(nèi)置包:

          DBMS_OUTPUT,UTL_FILE,TEXT_TO包能夠?qū)崿F(xiàn)輸入輸出操作,包括屏幕輸出,文件讀寫等操作.

          DBMS_ALERT包能夠?qū)崿F(xiàn)數(shù)據(jù)庫報警

          DBMS_PIPE可以管理數(shù)據(jù)庫通道

          DBMS_AQADM用于管理高級隊列的配置及其相應(yīng)信息

          DBMS_JOB能夠?qū)崿F(xiàn)任務(wù)調(diào)度服務(wù)及數(shù)據(jù)庫作業(yè)管理

          DBMS_LOB能夠?qū)崿F(xiàn)對大型對象的操作.

           

          posted @ 2007-08-01 14:32 vso 閱讀(248) | 評論 (0)編輯 收藏
           

          windows版本ruby下載路徑:
          http://rubyinstaller.rubyforge.org/

          gem 命令包含很多子命令和相應(yīng)的選項,比如:
          gem -h/--help – 顯示 rubygem 的幫助
          gem -v/--version – 顯示rubygem 的版本號
          gem list –local – 用子命令 list 列出本地安裝的 gems

          安裝rails:
          gem install rails –remote
          這條命令顯式地從遠(yuǎn)程服務(wù)器上安裝 rails ,你也可以運行 gem install rails 來安裝, gem 會判斷本地是否安裝了rails ,由此來決定是否從遠(yuǎn)程安裝 rails.

          一般來說,安裝 rails 需要的包有 rake (這是類似 java ant 的 build 程序), activerecord(rails 依賴的 orm 工具,也就是 MVC中的Model 模塊),actionpack (對應(yīng)的 controller 模塊)。 你可能會問那么相應(yīng)的 view 模塊怎么沒有安裝,因為 view 模塊已經(jīng)在默認(rèn)的 ruby 安裝中包含了,就是 eruby, 它的作用就是完成對模板文件 .rhtml 的解釋。

          創(chuàng)建空的 rails 網(wǎng)頁應(yīng)用程序骨架:
          D:\railsdoc>rails mybook
          控制臺輸出:
          create
          create app/apis
          create app/controllers
          create app/helpers
          create app/models
          create app/views/layouts
          create config/environments
          create components
          create db
          create doc
          create lib
          create log
          create public/images
          create public/javascripts
          create public/stylesheets
          create script
          create test/fixtures
          create test/functional
          create test/mocks/development
          create test/mocks/test
          create test/unit
          create vendor
          create Rakefile
          create README
          create CHANGELOG
          create app/controllers/application.rb
          create app/helpers/application_helper.rb
          create test/test_helper.rb
          create config/database.yml
          create config/routes.rb
          create public/.htaccess
          create config/environment.rb
          create config/environments/production.rb
          create config/environments/development.rb
          create config/environments/test.rb
          create script/console
          create script/console_sandbox
          create script/destroy
          create script/generate
          create script/server
          create script/runner
          create script/benchmarker
          create script/profiler
          create script/breakpointer
          create public/dispatch.rb
          create public/dispatch.cgi
          create public/dispatch.fcgi
          create public/404.html
          create public/500.html
          create public/index.html
          create public/favicon.ico
          create public/javascripts/prototype.js
          create doc/README_FOR_APP
          create log/server.log
          create log/production.log
          create log/development.log
          create log/test.log

          Rails 開發(fā)的方式是: 由 rails 來生成默認(rèn)的應(yīng)用程序骨架,你所做的工作就是在默認(rèn)目錄結(jié)構(gòu)中編輯文件增加應(yīng)用程序邏輯就可以了。

          啟動webrick 服務(wù)器:
          D:\railsdoc\mybook>ruby script\server

          運行程序:
          打開瀏覽器 ,輸入網(wǎng)址http://127.0.0.1:3000/

          Rails 開發(fā)工作的大部分集中在創(chuàng)建和編輯 apps 目錄下的文件

          Apps 目錄下包含四個主要目錄,它們分別是:
          1:Controllers 目錄存放 rails 應(yīng)用中相應(yīng)的 controller 類,controller 類處理來自用戶的 web 請求。
          2:views 目錄存放相應(yīng)的模板文件,模板文件填充數(shù)據(jù)后,轉(zhuǎn)換為 html 格式傳遞給用戶的瀏覽器。
          3:models目錄存放數(shù)據(jù)模型類,模型類封裝了數(shù)據(jù)庫中的數(shù)據(jù)。很多框架在數(shù)據(jù)模型層都做的比較復(fù)雜,用過 rails 后,你會發(fā)現(xiàn)它非常容易使用。
          4:helpers 目錄存放了簡化 Controllers, models, views 使用的幫助類。

          運行 ruby script\generate controller MyTest
          D:\railsdoc\mybook\app\controllers 目錄中將生成一個包含 MyTestController 類定義骨架的名為 my_test_controller.rb 的文件

          這里需要做一些解釋,在運行 ruby script\generate controller MyTest 的時候, rails 做了一些默認(rèn)的假設(shè)。 MyTest 對應(yīng)的 controller 文件是 my_test_controller.rb, 文件中控制器類名是 MyTestController,而 url 映射是 /My_Test/ .

          在編輯完 controller 后,重新刷新頁面,就可以使程序生效。對于編譯型的 java 語言來說,不重新編譯,重新啟動服務(wù)器是無法做到這點的

          新建數(shù)據(jù)庫表 books
          id int(11) 主鍵
          title varchar(100)
          description text
          buydate date

          告訴 rails 如何找到數(shù)據(jù)庫信息,打開 D:\railsdoc\mybook\config 目錄,編輯 database.yml 配置文件

          如何將ruby對象保存到 yaml 文件中.
          參考文檔: http://www.ruby-doc.org/core/classes/YAML.html
          require ‘yaml’
          tree = { :name => ‘ruby’,
          :uses => [‘script’,’web’,’testing’,’etc’]
          }
          File.open(“tree.yaml”,”w”) {|f| YAML.dump(tree,f)}

          如何在 ruby 程序中讀取 yaml 文件。
          require ‘yaml’
          tree = YAML.load(File.open(“tree.yaml”)
          tree[:uses][1]
          輸出結(jié)果: “web”

          下面就是個例子:
          conf/config.yaml 文件內(nèi)容如下:
          host: 127.0.0.1
          prefs:
          username: mulder
          password: trustno1
          filename: xfiles
          我們可以在ruby 中這樣使用它
          require ‘yaml’
          config = YAML.load(File.open(“conf/config.yaml”))
          config[“host”] -- 輸出結(jié)果 “127.0.0.1”
          config[“prefs”][“password”] -- 輸出結(jié)果 “trustno1”

          由于重新定義了數(shù)據(jù)庫配置,需要重新啟動 webrick 服務(wù)器才能讓 rails 找到數(shù)據(jù)庫配置信息。

          用rails生成Model類Book的骨架文件book.rb,如下:
          運行 ruby script\generate model book
          book.rb:
          class Book < ActiveRecord::Base

          在這里 Rails 將數(shù)據(jù)庫中的books 表映射到 Book 類。 這里 Rails 再次使用了習(xí)慣約定,那就是數(shù)據(jù)庫表以復(fù)數(shù)形式命名,而與之對應(yīng)的 Model 類,使用單數(shù)形式。這里 rails 非常智能,它理解英文的復(fù)數(shù)規(guī)則

          運行 ruby script\generate controller book 生成 controller 骨架文件 book_controller.rb。

          class BookController < ApplicationController
          scaffold :book
          end

          scaffold :book – 這句是你惟一需要寫的代碼,它生成了數(shù)據(jù)庫表對應(yīng)的 CRUD 操作,而且令人激動的是它生成了對應(yīng)的視圖模板文件。

          我們重新編輯 book_controller.rb 文件
          class BookController < ApplicationController
          scaffold :book
          def list
          @books = Book.find_all
          end
          end

          這里我們需要自己寫一個 list.rhtml
          代碼如下:
          <html>
          <head>
          <title>All books</title>
          </head>
          <body>
          <h1>Online Mybook - All books</h1>
          <table border="1">
          <tr>
          <td width="80%"><p align="center"><i><b>book</b></i></td>
          <td width="20%"><p align="center"><i><b>Date</b></i></td>
          </tr>
          <% @books.each do |book| %>
          <tr>
          <td><%= link_to book.title, :action => "show", :id => book.id %></td>
          <td><%= book.buydate %></td>
          </tr>
          <% end %>
          </table>
          <p><%= link_to "Create new book", :action => "new" %></p>
          </body>
          </html>

          創(chuàng)建 categories 數(shù)據(jù)表
          id int(11)
          name varchar(50)

          ruby script\generate controller Category
          category_controller.rb:
          class CategoryController < ApplicationController
          scaffold :category
          end

          ruby script\generate model Category

          為了讓 books 數(shù)據(jù)表包含類別字段,我們需要新增加一個 category_id字段,字段定義為 int 型與 categories 表的 id 字段類型相同。

          book.rb 修改如下:
          class Book < ActiveRecord::Base
          belongs_to :category
          end
          這行代碼告訴 Rails, 一本書屬于一個類別

          category.rb 修改如下:
          class Category < ActiveRecord::Base
          has_many :books
          end
          這行代碼告訴 Rails, 一個類別可以包含很多本書。

          現(xiàn)在我們從新定義 edit 函數(shù),來覆蓋它的 scalffold 版本。
          編輯 book_controller.rb 文件
          class BookController < ApplicationController
          scaffold :book
          def list
          @books = Book.find_all
          end
          def edit
          @book = Book.find(@params["id"])
          @categories = Category.find_all
          end
          end

          新建一個 edit.rhtml:
          <html>
          <head>
          <title>Edit book</title>
          </head>
          <body>
          <h1>Edit book</h1>
          <form action="../update" method="POST">
          <input id="book_id" name="book[id]" size="30"
          type="hidden" value="<%= @book.id %>" />
          <p><b>Title</b><br>
          <input id="book_title" name="book[title]" size="30"
          type="text" value="<%= @book.title %>" />
          </p>
          <p><b>Description</b><br>
          <input id="book_description" name="book[description]"
          size="30" type="text"
          value="<%= @book.description %>" />
          </p>
          <p><b>Category:</b><br>
          <select name="book[category_id]">
          <% @categories.each do |category| %>
          <option value="<%= category.id %>"
          <%= ' selected' if category.id == @book.category.id %>>
          <%= category.name %>
          </option>
          <% end %>
          </select></p>
          <input type="submit" value="Update" />
          </form>
          <a href="/book/show/<%= @book.id %>">
          Show
          </a> |
          <a href="/book/list">
          Back
          </a>
          </body>
          </html>

          編輯list.rhtml
          <html>
          <head>
          <title>All books</title>
          </head>
          <body>
          <h1>Online Mybook - All books</h1>
          <table border="1">
          <tr>
          <td width="80%"><p align="center"><i><b>書名</b></i></td>
          <td width="20%"><p align="center"><i><b>類別</b></i></td>
          <td width="20%"><p align="center"><i><b>購買日期</b></i></td>
          </tr>
          <% @books.each do |book| %>
          <tr>
          <td><%= link_to book.title, :action => "show", :id => book.id %></td>
          <td><%= book.category.name %></td>
          <td><%= book.buydate %></td>
          </tr>
          <% end %>
          </table>
          <p><%= link_to "Create new book", :action => "new" %></p>
          </body>
          </html>

          rails的缺點:
          1:Rails 畢竟還沒有大型項目的成功案例.
          2:Rails 是最近剛剛出來的框架,還不夠成熟。
          3:ruby 缺少組件的架構(gòu)。
          我覺得未來應(yīng)用程序框架應(yīng)該具備兩個特點,那就是:“易用性”和“組件”。從現(xiàn)在的情形看,Rails 具備了“易用性”的特點,而大多數(shù) Java 框架具備了“組件”的特點。我覺得:“好的框架的復(fù)雜性應(yīng)該被組件封裝在“黑箱”中,而“易用性”應(yīng)該體現(xiàn)在組件的使用上”。所以 Rails 的未來應(yīng)該向組件上發(fā)展,而 Java 框架應(yīng)該繼續(xù)在組件易用性上多做文章,兩者的趨勢是融合。

          posted @ 2007-08-01 14:24 vso 閱讀(484) | 評論 (0)編輯 收藏
           
          主站蜘蛛池模板: 衡阳市| 铁岭县| 牟定县| 湖口县| 渭源县| 墨竹工卡县| 石狮市| 嵊州市| 阿城市| 上饶市| 通河县| 循化| 泽普县| 沙湾县| 中方县| 南康市| 天津市| 富顺县| 奈曼旗| 莱阳市| 天水市| 沙洋县| 墨竹工卡县| 内黄县| 大竹县| 湟源县| 和田县| 徐水县| 宣化县| 青冈县| 望江县| 隆回县| 鹤山市| 深水埗区| 油尖旺区| 宝鸡市| 德州市| 伊金霍洛旗| 前郭尔| 武胜县| 赤峰市|