快速业务通道

面向Java开发人员的Scala指南 - Scala和servlet - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
件中),该描述符描述 servlet 应该与哪个 URL 结合。对于这样一个简单的例子,使用一个相当简单的 URL 来配合它最容易,如清单 3 所示:

清单 3. 部署描述符 web.xml

<!DOCTYPE web-app    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"    "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app>   <servlet>    <servlet-name>helloWorld</servlet-name>    <servlet-class>HelloScalaServlet</servlet-class>   </servlet>   <servlet-mapping>    <servlet-name>helloWorld</servlet-name>    <url-pattern>/sayHello</url-pattern>   </servlet-mapping> </web-app>

从这里开始,我假设读者会在必要时调整/修改部署描述符,因为这跟 Scala 没有关系。

当然,格式良好的 HTML 与格式良好的 XML 非常相似;鉴于这一点,Scala 对 XML 字面值的支持使编写这个 servlet 简单得多(参阅 参考资料 中的 “Scala 和 XML” 一文)。Scala 不是在传递给 HttpServletResponse 的 String 中直接嵌入消息,它可以分离逻辑和表示形式(非常简单),方法是利用此支持将消息放在 XML 实例中,然后再传递回去:

清单 4. Hello, Scala servlet!

import javax.servlet.http.{HttpServlet,   HttpServletRequest => HSReq, HttpServletResponse => HSResp} class HelloScalaServlet extends HttpServlet {   def message =    <HTML>     <HEAD><TITLE>Hello, Scala!</TITLE></HEAD>     <BODY>Hello, Scala! This is a servlet.</BODY>    </HTML>   override def doGet(req : HSReq, resp : HSResp) =    resp.getWriter().print(message) }

面向Java开发人员的Scala指南 - Scala和servlet(3)

时间:2011-01-30 IBM Ted Neward

Scala 的内联表达式求值工具使用 XML 字面值,这意味着能够轻松地使 servlet 更有趣。例如,将当前日期添加到消息中与将 Calendar 表达式添加到 XML 中一样简单,不过增加了几行 { Text(java.util.Calendar.getInstance().getTime().toString() ) }。这似乎显得有点冗长,如清单 5 所示:

清单 5. Hello, timed Scala servlet!

import javax.servlet.http.{HttpServlet,   HttpServletRequest => HSReq, HttpServletResponse => HSResp} class HelloScalaServlet extends HttpServlet {   def message =    <HTML>     <HEAD><TITLE>Hello, Scala!</TITLE></HEAD>     <BODY>Hello, Scala! It''s now { currentDate }</BODY>    </HTML>   def currentDate = java.util.Calendar.getInstance().getTime()   override def doGet(req : HSReq, resp : HSResp) =    resp.getWriter().print(message) }

实际上,Scala 编译器与 XML 对象消息一起整合到一个 scala.xml.Node 中,然后在将它传递给响应的 Writer 的 print 方法时将其转换为一个 String。

不要小看这一点 — 表达形式从逻辑中分离出来完全在一个类内部进行。这条 XML 消息将进行编译时检查,以确保语法正确和格式良好,并获得一些标准 servlet(或 JSP)不具备的好处。由于 Scala 可以进行类型推断,因此可以省略有关 message 和 currentDate 的实际类型消息,使得这就像动态语言 Groovy/Grails 一样。初次使用效果不错。

当然,只读 servlet 相当麻烦。

Hello, Scala。这些是参数。

大多数 servlet 不会只返回类似静

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号