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

5 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>

huy*_*hjl 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()
Run Code Online (Sandbox Code Playgroud)