Ruby也能写servlet?是的,没开玩笑,而且挺方便的,因为Ruby的标准库就自带了一个webrick,webrick本身又有一个serlvet容器,随时随地启动一个web server,实在是很方便。

双塔ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!
先看个最简单的例子,输出hello到浏览器:
- require 'webrick'
 - require 'net/http'
 - include WEBrick
 - class HelloServlet < HTTPServlet::AbstractServlet
 - def hello(resp)
 - resp["Content-Type"]="text/html;charset=utf-8"
 - resp.body="hello,ruby servlet"
 - end
 - private :hello
 - def do_GET(req,resp)
 - hello(resp)
 - end
 - def do_POST(req,resp)
 - hello(resp)
 - end
 - end
 - if $0==__FILE__
 - server=HTTPServer.new(:Port=>3000)
 - server.mount("/hello",HelloServlet)
 - trap("INT"){ server.shutdown }
 - server.start
 - end
 
是不是跟java很像?所有的serlvet都要继承自HTTPServlet::AbstractServlet,并实现do_GET或者do_POST方法。在这行代码:
- server=HTTPServer.new(:Port=>3000)
 
我们启动了一个HTTP Server,端口是3000,然后将HelloServlet挂载到/hello这个路径上,因此,执行这个脚本后,可以通过http://localhost:3000/hello调用HelloServlet,简单地只是显示字符串"hello,ruby servlet"。
这个简单的例子没有任何交互,并且显示的html也是写死在脚本中,显然更好的方式应该通过模板来提供,可以使用Ruby标准库的erb模板。再给个有简单交互的例子,现在要求用户输入姓名,然后提交给HelloServlet,显示"hello,某某某"。嗯,来个最简单的提交页面:
- ﹤html﹥
 - ﹤body﹥
 - ﹤center﹥
 - ﹤form action="http://localhost:3000/hello" method="post"﹥
 - ﹤input type="text" name="name" size=10/﹥﹤br/﹥﹤br/﹥
 - ﹤input type="submit" name="submit" value="submit"/﹥
 - ﹤/form﹥
 - ﹤/center﹥
 - ﹤/body﹥
 - ﹤/html﹥
 
注意到,我们采用POST方法提交。再看看erb模板:
- ﹤html﹥
 - ﹤head﹥﹤/head﹥
 - ﹤body﹥
 - hello,﹤%=name%﹥
 - ﹤/body﹥
 - ﹤/html﹥
 
其中的name是我们将要绑定的变量,根据用户提交的参数。***,修改下HelloServlet:
- require 'webrick'
 - require 'net/http'
 - include WEBrick
 - class HelloServlet < HTTPServlet::AbstractServlet
 - def do_GET(req,resp)
 - do_POST(req,resp)
 - end
 - def do_POST(req,resp)
 - name=req.query["name"]
 - #读取模板文件
 - template=IO.read(File.dirname(__FILE__)+"/hello.html")
 - message=ERB.new(template)
 - resp["Content-Type"]="text/html;charset=utf-8"
 - resp.body=message.result(binding)
 - end
 - end
 - if $0==__FILE__
 - server=HTTPServer.new(:Port=>3000)
 - server.mount("/hello",HelloServlet)
 - trap("INT"){ server.shutdown }
 - server.start
 - end
 
与前一个例子相比,不同点有二,一是通过req.query["name"]获得用户提交的参数name,二是resp的body是由模板产生,而不是写死在代码中。在一些临时报表、临时数据的展示上,可以充分利用Ruby的这些标准库来快速实现。
                文章标题:Servlet例子由Ruby来实现
                
                浏览地址:http://www.csdahua.cn/qtweb/news23/121623.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网