成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Servlet例子由Ruby來實現

開發 后端
Servlet用Ruby也能寫?是的,沒開玩笑,而且挺方便的,因為Ruby的標準庫就自帶了一個webrick,webrick本身又有一個Serlvet容器,隨時隨地啟動一個web server,實在是很方便。

Ruby也能寫servlet?是的,沒開玩笑,而且挺方便的,因為Ruby的標準庫就自帶了一個webrick,webrick本身又有一個serlvet容器,隨時隨地啟動一個web server,實在是很方便。

先看個最簡單的例子,輸出hello到瀏覽器:

  1. require 'webrick' 
  2. require 'net/http' 
  3. include WEBrick  
  4.     
  5. class HelloServlet < HTTPServlet::AbstractServlet  
  6.  def hello(resp)  
  7.   resp["Content-Type"]="text/html;charset=utf-8" 
  8.   resp.body="hello,ruby servlet" 
  9.  end 
  10.  private :hello 
  11.  def do_GET(req,resp)  
  12.   hello(resp)  
  13.  end 
  14.  def do_POST(req,resp)  
  15.   hello(resp)  
  16.  end 
  17. end 
  18. if $0==__FILE__  
  19.  server=HTTPServer.new(:Port=>3000)  
  20.  server.mount("/hello",HelloServlet)  
  21.  trap("INT"){ server.shutdown }  
  22.  server.start  
  23. end 

是不是跟java很像?所有的serlvet都要繼承自HTTPServlet::AbstractServlet,并實現do_GET或者do_POST方法。在這行代碼:

  1.   server=HTTPServer.new(:Port=>3000) 

我們啟動了一個HTTP Server,端口是3000,然后將HelloServlet掛載到/hello這個路徑上,因此,執行這個腳本后,可以通過http://localhost:3000/hello調用HelloServlet,簡單地只是顯示字符串"hello,ruby servlet"。

這個簡單的例子沒有任何交互,并且顯示的html也是寫死在腳本中,顯然更好的方式應該通過模板來提供,可以使用Ruby標準庫的erb模板。再給個有簡單交互的例子,現在要求用戶輸入姓名,然后提交給HelloServlet,顯示"hello,某某某"。嗯,來個最簡單的提交頁面:

  1. ﹤html﹥  
  2. ﹤body﹥  
  3. ﹤center﹥  
  4.   ﹤form action="http://localhost:3000/hello" method="post"﹥  
  5.    ﹤input type="text" name="name" size=10/﹥﹤br/﹥﹤br/﹥  
  6.    ﹤input type="submit" name="submit" value="submit"/﹥  
  7.   ﹤/form﹥  
  8.   ﹤/center﹥  
  9. ﹤/body﹥  
  10. ﹤/html﹥ 

注意到,我們采用POST方法提交。再看看erb模板:

  1. ﹤html﹥  
  2.   ﹤head﹥﹤/head﹥  
  3.   ﹤body﹥  
  4.    hello,﹤%=name%﹥  
  5.   ﹤/body﹥  
  6. ﹤/html﹥ 

其中的name是我們將要綁定的變量,根據用戶提交的參數。***,修改下HelloServlet:

  1. require 'webrick' 
  2. require 'net/http' 
  3. include WEBrick  
  4.     
  5. class HelloServlet < HTTPServlet::AbstractServlet  
  6.  def do_GET(req,resp)  
  7.   do_POST(req,resp)  
  8.  end 
  9.  def do_POST(req,resp)  
  10.   name=req.query["name"]  
  11.   #讀取模板文件  
  12.   template=IO.read(File.dirname(__FILE__)+"/hello.html")  
  13.   message=ERB.new(template)  
  14.   resp["Content-Type"]="text/html;charset=utf-8" 
  15.   resp.body=message.result(binding)  
  16.  end 
  17. end 
  18. if $0==__FILE__  
  19.  server=HTTPServer.new(:Port=>3000)  
  20.  server.mount("/hello",HelloServlet)  
  21.  trap("INT"){ server.shutdown }  
  22.  server.start  
  23. end 

與前一個例子相比,不同點有二,一是通過req.query["name"]獲得用戶提交的參數name,二是resp的body是由模板產生,而不是寫死在代碼中。在一些臨時報表、臨時數據的展示上,可以充分利用Ruby的這些標準庫來快速實現。
 

【編輯推薦】

  1. Java Servlet API文檔實用說明
  2. 整合Apache中JSP和PHP
  3. Java Servlets(JSP)開發環境
  4. Tomcat下JSP、Servlet和Bean的配置
  5. 如何提升Servlet和JSP應用程序的效率
責任編輯:仲衡 來源: JavaEye
相關推薦

2009-07-07 14:11:07

XML來配置Servl

2009-12-14 11:12:55

Ruby運行

2015-01-21 15:40:44

GoRuby

2011-10-14 14:24:26

Ruby

2009-12-18 16:27:41

Ruby解析Json

2009-09-28 11:05:29

Ruby端口掃描

2009-12-18 17:29:02

Ruby創建XML

2009-12-17 13:37:24

Ruby代碼塊

2021-05-08 07:57:17

ServletFilter設計模式

2009-12-16 17:24:26

Ruby on Rai

2009-12-16 15:04:26

Ruby實現strea

2009-12-14 10:32:26

Ruby Gnome

2009-12-15 13:41:49

Ruby向對象發送消息

2009-07-06 16:18:51

Servlet下載文件

2009-07-09 10:03:40

Servlet應用Weblogic環境

2009-07-06 16:59:16

Servlet方法

2009-07-03 17:24:31

Servlet頁面跳轉

2009-07-06 17:11:38

Servlet文件上傳

2009-12-18 11:22:34

Ruby source

2009-12-16 15:46:41

Ruby on rai
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲aⅴ | 久久久久国产 | 亚洲成av人片在线观看无码 | 97视频成人 | 中文字幕97 | 午夜精品一区二区三区在线 | 精品乱码一区二区三四区 | 亚洲精品二三区 | 国产精品欧美精品 | 999免费观看视频 | 国产成人精品午夜视频免费 | 国产欧美一区二区精品久导航 | 精产国产伦理一二三区 | 欧美黄色一级毛片 | 男人av的天堂 | 欧美中文在线 | 久久这里只有精品首页 | 91成人免费 | 亚洲精品一区二区三区在线 | 黄视频在线网站 | 一区二区免费 | 午夜视频网站 | 欧美综合久久 | 99热最新| 日本一区二区三区免费观看 | 日本精品视频 | aaa一区| 久久大陆 | www.四虎.com| 亚洲午夜网 | 日日摸夜夜爽人人添av | 91精品久久久久久久99 | 午夜视频在线 | 免费精品| 色婷婷综合久久久中文字幕 | 久久国产精品99久久久久久丝袜 | 欧美一区二区三区精品 | 亚洲精品中文字幕av | 中文字幕乱码一区二区三区 | 久久高清| 精久久 |