温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何利用Ruby实现Servlet

发布时间:2021-11-03 18:02:32 来源:亿速云 阅读:138 作者:小新 栏目:编程语言

这篇文章给大家分享的是有关如何利用Ruby实现Servlet的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

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

先看个最简单的例子,输出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的这些标准库来快速实现。

感谢各位的阅读!关于“如何利用Ruby实现Servlet”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI