Skip to content

Beangle WebMVC API 调用说明

Beangle WebMVC 是一个基于 Scala 的 MVC 框架,提供了丰富的 API 用于 Web 应用开发。本文档介绍了 WebMVC 的核心 API,帮助开发者快速上手和使用。

模块总览

模块包名功能说明
注解org.beangle.webmvc.annotation提供 Action、参数、视图等注解
配置org.beangle.webmvc.config提供 Action 配置和映射功能
上下文org.beangle.webmvc.context提供 Action 上下文和参数处理
分发org.beangle.webmvc.dispatch提供请求分发和路由功能
执行org.beangle.webmvc.execution提供 Action 执行和结果处理
国际化org.beangle.webmvc.i18n提供国际化和文本资源功能
支持org.beangle.webmvc.support提供 Action 支持类和工具
工具org.beangle.webmvc.util提供 CORS、缓存控制等工具
视图org.beangle.webmvc.view提供视图管理和渲染功能

1. 注解模块 (org.beangle.webmvc.annotation)

功能说明 提供 Action、参数绑定、视图等注解,用于配置控制器行为。

主要 API

API功能描述使用示例
@action标记方法为 Action@action("index")
@param标记参数绑定@param("id")
@view标记视图@view("index")
@body标记请求体@body
@header标记请求头@header("User-Agent")
@cookie标记 Cookie@cookie("sessionId")
@response标记响应@response
@mapping标记路径映射@mapping("/user/{id}")

常用场景示例

scala
// 基本 Action 定义
@action("index")
def index(): Any = {
  "index"
}

// 带参数的 Action
@action("show")
def show(@param("id") id: Long): Any = {
  val user = userService.get(id)
  "show" -> Map("user" -> user)
}

// REST 风格的路径映射
@mapping("/users/{id}")
@action("get")
def get(@param("id") id: Long): Any = {
  userService.get(id)
}

2. 配置模块 (org.beangle.webmvc.config)

功能说明 提供 Action 配置、映射和路由功能,用于管理控制器的行为和路径。

主要 API

API功能描述使用示例
ActionMappingAction 映射val mapping = new ActionMapping
ActionMappingBuilderAction 映射构建器val builder = new ActionMappingBuilder
RouteMapping路由映射val routeMapping = new RouteMapping
Path路径处理val path = Path.parse("/user/{id}")
Profile配置文件val profile = Profile.load("webmvc")

常用场景示例

scala
// 构建 Action 映射
val builder = new ActionMappingBuilder
val mapping = builder.build(actions)

// 配置路由
val routeMapping = new RouteMapping
routeMapping.add("/users", classOf[UserAction], "index")

// 解析路径
val path = Path.parse("/user/{id}")
val params = path.match("/user/123")

3. 上下文模块 (org.beangle.webmvc.context)

功能说明 提供 Action 上下文、参数处理和请求信息管理。

主要 API

API功能描述使用示例
ActionContextAction 上下文val context = ActionContext.current
Params参数处理val params = Params.current
FlashFlash 参数val flash = Flash.current
ActionMessages消息管理val messages = ActionMessages.current

常用场景示例

scala
// 获取当前上下文
val context = ActionContext.current
val request = context.request
val response = context.response

// 获取参数
val params = Params.current
val id = params.get("id").toLong

// 使用 Flash 参数
Flash.current.put("message", "操作成功")

// 添加消息
ActionMessages.current.add("success", "操作成功")

4. 分发模块 (org.beangle.webmvc.dispatch)

功能说明 提供请求分发、路由和处理功能,负责将请求映射到相应的 Action。

主要 API

API功能描述使用示例
Dispatcher请求分发器val dispatcher = new Dispatcher
Route路由定义val route = Route("/user", classOf[UserAction])
RequestMapper请求映射器val mapper = new HierarchicalUrlMapper
ActionUriRenderAction URI 渲染val render = new ActionUriRender

常用场景示例

scala
// 创建路由
val route = Route("/users", classOf[UserAction])

// 渲染 Action URI
val uri = ActionUriRender.render("user", "index", Map("id" -> 123))

// 处理请求
val dispatcher = new Dispatcher
val result = dispatcher.dispatch(request, response)

5. 执行模块 (org.beangle.webmvc.execution)

功能说明 提供 Action 执行、方法调用和结果处理功能。

主要 API

API功能描述使用示例
InvokerAction 调用器val invoker = new DynaMethodInvoker
Handler请求处理器val handler = new DefaultMappingHandler
CacheResult结果缓存@CacheResult
ResponseCache响应缓存ResponseCache.setCacheControl(response, "max-age=3600")

常用场景示例

scala
// 调用 Action 方法
val invoker = new DynaMethodInvoker
val result = invoker.invoke(action, method, args)

// 缓存结果
@CacheResult
@action("list")
def list(): Any = {
  userService.findAll()
}

// 设置响应缓存
ResponseCache.setCacheControl(response, "max-age=3600")

6. 国际化模块 (org.beangle.webmvc.i18n)

功能说明 提供国际化、文本资源和本地化功能。

主要 API

API功能描述使用示例
ActionTextResourceAction 文本资源val resource = ActionTextResource.current
ActionTextCache文本缓存val cache = ActionTextCache.current

常用场景示例

scala
// 获取文本资源
val resource = ActionTextResource.current
val message = resource.get("user.not.found")

// 使用文本缓存
val cache = ActionTextCache.current
val messages = cache.get(classOf[UserAction])

7. 支持模块 (org.beangle.webmvc.support)

功能说明 提供 Action 支持类和工具,简化控制器开发。

主要 API

API功能描述使用示例
ActionSupportAction 支持类class UserAction extends ActionSupport
JsonAPISupportJSON API 支持class ApiAction extends JsonAPISupport
EntitySupport实体支持class UserAction extends EntitySupport[User]
RouteSupport路由支持class UserAction extends RouteSupport

常用场景示例

scala
// 基本 Action 支持
class UserAction extends ActionSupport {
  @action("index")
  def index(): Any = {
    "index"
  }
}

// JSON API 支持
class ApiAction extends JsonAPISupport {
  @action("list")
  def list(): Any = {
    userService.findAll()
  }
}

// 实体支持
class UserAction extends EntitySupport[User] {
  @action("show")
  def show(id: Long): Any = {
    entityService.get(id)
  }
}

8. 工具模块 (org.beangle.webmvc.util)

功能说明 提供 CORS、缓存控制等 Web 相关工具。

主要 API

API功能描述使用示例
CORSCORS 工具CORS.setHeaders(response, "*")
CacheControl缓存控制CacheControl.setMaxAge(response, 3600)
Resources资源工具Resources.getResource("/css/style.css")

常用场景示例

scala
// 设置 CORS 头
CORS.setHeaders(response, "*")

// 设置缓存控制
CacheControl.setMaxAge(response, 3600)

// 获取资源
val resource = Resources.getResource("/css/style.css")

9. 视图模块 (org.beangle.webmvc.view)

功能说明 提供视图管理、渲染和解析功能。

主要 API

API功能描述使用示例
ViewManager视图管理器val manager = ViewManager.current
ViewRender视图渲染器val render = new FreemarkerViewRender
ViewBuilder视图构建器val builder = new TypeViewBuilder
ViewResolver视图解析器val resolver = new FreemarkerViewResolver

常用场景示例

scala
// 构建视图
val view = TypeViewBuilder.build("index", Map("user" -> user))

// 渲染视图
val render = new FreemarkerViewRender
render.render(view, request, response)

// 解析视图
val resolver = new FreemarkerViewResolver
val template = resolver.resolve("index")

最佳实践

  1. 使用 ActionSupport:继承 ActionSupport 类可以获得更多便捷方法
  2. 合理使用注解:使用注解配置 Action 和参数,减少配置文件
  3. RESTful 设计:使用 @mapping 注解实现 RESTful 风格的 API
  4. 参数绑定:使用 @param 注解进行参数绑定,简化代码
  5. 视图管理:合理使用不同类型的视图,如 Freemarker、JSON 等
  6. 国际化:使用 ActionTextResource 管理多语言资源
  7. 缓存策略:合理使用缓存注解和缓存控制,提高性能
  8. 异常处理:实现统一的异常处理机制
  9. 模块组织:按照功能模块组织 Action,提高代码可维护性
  10. 测试:编写单元测试和集成测试,确保代码质量