一个简单的Scala servlet与数据库连接?

时间:2010-02-10 03:56:01

标签: scala

我创建了一个简单的Java / JSP Web应用程序并添加了一个基本的Scala servlet。一切正常,我在下面包含了Scala文件和web.xml。如何修改我的小“培训师”servlet,以便查询MySql表并生成HTML< table> ...< / table>。顺便说一下,我稍后会看看Lift。目前,我的计划是在现有的Web应用程序中添加几个新的Scala servlet。


ScalaTrainer.scala

package com.mdm.h4

import javax.servlet.http.{HttpServlet,
HttpServletRequest => HSReq, HttpServletResponse => HSResp}

class ScalaTrainer extends HttpServlet
{
  def html =
    <html>
      <head>
        <title>Hello Scala</title>
      </head>
      <body>
        <p style="text-align: center">This is 100% pure Scala.</p>
        <p>It's now
          {currentDate}
        </p>
        <p>My name is
          {name}
          and I'm learning
          {language}.
        </p>
      </body>
    </html>

  def name = "Mike"
  def language = "Scala"

  def currentDate = java.util.Calendar.getInstance().getTime()

  override def doGet(req: HSReq, resp: HSResp) {

    resp.getWriter().print(html)

  }
}

的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5">

    <servlet>
        <display-name>trainer</display-name>
        <servlet-name>ScalaTrainer</servlet-name>
        <servlet-class>com.mdm.h4.ScalaTrainer</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>ScalaTrainer</servlet-name>
        <url-pattern>/trainer</url-pattern>
    </servlet-mapping>
</web-app>

1 个答案:

答案 0 :(得分:1)

您的第一个选择应该是检查您正在增强的现有应用程序是否已使用某些东西来访问MySQL。如果它确实那么只是利用它。它将避免兼容性问题。

否则,如果你想做类似scala的事情,你应该看一下http://github.com/szeiger/scala-query的scala-query。

您还可以利用任何Java ORM。使用Scala,您可以使用现有的框架和库。

最后,如果你只是想要一些不需要你下载很多东西并筛选文档的东西,你可以直接使用JDBC(在google或SO上搜索“JDBC MySQL”):

val s = conn.createStatement()
s.executeQuery("SELECT * FROM EMP")
val rs = s.getResultSet()
while (rs.next()) {
  ...
}
rs.close()
s.close()