既然 Scala 跟 Java 是遠房親戚,接下來我們想的是,如何在 Eclipse 開發網頁專案時,可以直接套用 Scala Library,並直接撰寫 Scala Code。
Step 1: Create a Dynamic Web Project
按照既有的步驟,建立一個 Dynamic Web Project。
Step 2: Add Scala Nature
在 project 上點右鍵,會出現一個選單,選擇 Configure,然後再點選 Add Scala Nature。
我們會看到 project 自動增加了 Scala Library [2.11.2],然後我們就可以寫 Scala 測試程式了
Step 3: ScalaFilter.scala
以 Scala 撰寫一個 filter: ScalaFilter.scala class。
package test
import javax.servlet.FilterConfig
import javax.servlet.ServletResponse
import javax.servlet.FilterChain
import javax.servlet.ServletRequest
import javax.servlet.ServletException
import javax.servlet.Filter
import java.util.Date
class ScalaFilter extends Object with Filter {
@throws(classOf[ServletException])
def init(filterConfig: FilterConfig): Unit = {
println("ScalaFilter: init()");
}
@throws(classOf[_root_.java.io.IOException])
@throws(classOf[ServletException])
def doFilter(request: ServletRequest, response: ServletResponse, chain: FilterChain): Unit = {
println("ScalaFilter: doFilter()");
response.getWriter().write("> The time now is " + new Date);
}
def destroy(): Unit = {
println("ScalaFilter: destroy()");
}
}
Step 4: web.xml
在 web.xml 裡面把 Filter 設定好
<?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_3_0.xsd"
version="3.0">
<display-name>test</display-name>
<filter>
<filter-name>ScalaFilter</filter-name>
<filter-class>test.ScalaFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ScalaFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
Step 5: Testing
直接將 project Run on Server 測試看看,結果發生了ClassNotFound 的錯誤,很明顯就是 Deploy 的時候,沒有把 Scala Library 放到 lib 目錄裡面。
解決方式很簡單,到 scala SDK 的 lib 目錄,把以下四個 jar 複製到 project 的 WebContent/WEB-INF/lib 目錄中。
scala-actors-2.11.0.jar
scala-library.jar
scala-reflect.jar
scala-swing_2.11-1.0.1.jar
再一次將 project Run on Server 測試看看,就成功了。
沒有留言:
張貼留言