filter过滤实例知识

来源:互联网 发布:计算机数据库研究生 编辑:程序博客网 时间:2024/06/04 18:13

一.

1.

builds.scala加上filter的依赖

libraryDependencies ++= Seq(  jdbc,  anorm,  cache,  ws,  filters)

2.在App目录下创建

Global.scala

import play.api.mvc._import play.filters.gzip.GzipFilterobject Global extends WithFilters(LoggeringFilter,new GzipFilter()){}

LoggeringFilter.scala

import play.api.Loggerimport play.api.mvc._import scala.concurrent.Futureimport play.api.libs.concurrent.Execution.Implicits.defaultContextobject LoggeringFilter extends Filter{def apply(nextFilter:(RequestHeader) => Future[Result])(requestHeader:RequestHeader):Future[Result] = {val  startTime = System.currentTimeMillisnextFilter(requestHeader).map{result =>val endTime = System.currentTimeMillisval requestTime = endTime - startTimeLogger.info(s"${requestHeader.method} ${requestHeader.uri}" + s"took ${requestTime}ms and returned ${result.header.status}")result.withHeaders("Requeat-Time" -> requestTime.toString)}  }}
结果

二.使用EssentialFilter 

Play provides a lower level filter API called EssentialFilter which gives you full access to the body of the request. This API allows you to wrap EssentialAction with another action.

import play.api.Loggerimport play.api.mvc._import play.api.libs.concurrent.Execution.Implicits.defaultContextobject LoggingFilter extends EssentialFilter {  def apply(nextFilter: EssentialAction) = new EssentialAction {    def apply(requestHeader: RequestHeader) = {      val startTime = System.currentTimeMillis      nextFilter(requestHeader).map { result =>        val endTime = System.currentTimeMillis        val requestTime = endTime - startTime        Logger.info(s"${requestHeader.method} ${requestHeader.uri}" +          s" took ${requestTime}ms and returned ${result.header.status}")        result.withHeaders("Request-Time" -> requestTime.toString)      }    }  }}



0 0