From daeecc86c58452ac977eb818d9ab91cf0e6d712c Mon Sep 17 00:00:00 2001 From: gitee-bot Date: Fri, 27 Jun 2025 15:42:14 +0000 Subject: [PATCH] Update README.md --- README.md | 156 +++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 143 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 68987d25..16497616 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,159 @@ - - - - - Coverage Status - -# zoom -轻量级java web开发框架。既能使用java的强大功能,又能具有php的开发效率。 +# zoom-web -# 概述 +zoom-web 是一个小型的 MVC 框架,旨在提高开发效率,提供简洁的 API,特别是在数据库操作方面。 -框架特色: +## 项目文件结构 -+ 本框架以约定为主要的编码规范,通过一系列针对web开发过程中的各个概念做出规范,限定文件和目录的组织结构,能大大减少沟通和查找时间,提高开发效率。 -+ 速度快,学习成本低。只要掌握几个概念就可以开工了。 -+ 超爽的api,尤其涉及到数据库. ++ `src` + + `com.yourcompany.pack` - 项目源码目录 +## 配置 +zoom-web 使用约定优于配置的原则,简化了开发过程。主要的配置可以通过 `@Inject` 注解完成,用于依赖注入。 +## Module +Module 是配置的核心,通过 `@Module` 注解定义。例如,可以使用 `@ApplicationModule` 来标记应用的主配置模块。 +## Controller 控制器 +Controller 是处理 HTTP 请求的核心组件。所有 Controller 必须放在 `controllers` 包下,并通过 `@Controller` 注解来定义。 +### 路由 +`@Controller` 的 `key` 属性与 `@Mapping` 或方法名称共同确定处理的 URL 路由。例如: +```java +@Controller(key = "/") +class MyController { + @Mapping("") + public String index() { + return "hello world"; + } + public String sayHello() { + return "sayHello"; + } +} +``` +上面的 Controller 创建了两个 URL: + +``` +/ +/sayHello +``` + +### @Mapping + +`@Mapping` 注解的 `value` 属性指定了本方法映射的路径,`method` 属性指定了本方法能够处理的 HTTP 方法。如果未指定 `method`,则表示能处理所有 HTTP 方法。 + +### PathVariable 路径参数 + +在 URL 中可以包含参数,如 `{id}`,表示该方法接收参数化 URL: + +```java +@Mapping("/{id}") +public String user(@Param(pathVariable = true) String id) { + return "hello world"; +} +``` + +## 方法参数 + +zoom-web 支持多种方法参数,如 `HttpServletRequest`, `HttpServletResponse`, `HttpSession` �1. + +## View + +### json 输出 + +在方法上标注 `@JsonResponse` 可以进行 JSON 输出: + +```java +@Controller(key = "/") +class MyController { + @JsonResponse + public String index() { + return "hello world"; + } +} +``` + +### 模板输出 + +未标注 `@JsonResponse` 的方法返回值将被视为模板路径,用于渲染模板: + +```java +@Controller(key = "/") +class MyController { + public String index() { + return "user/index"; + } +} +``` + +## Model + +Model 通常与数据库操作相关,zoom-web 提供了丰富的数据库操作支持。 + +## Action 拦截器 + +可以通过 `ActionInterceptorFactory` 配置 Action 拦截器,用于在请求前后执行特定逻辑: + +```java +@Inject +public void configActionInterceptor(ActionInterceptorFactory factory) { + // 配置拦截器 +} +``` + +## 示例 + +zoom-web 提供了多个示例,展示如何使用框架进行开发: + +```java +@Controller(key = "/user") +public class UserController { + @JsonResponse + public void index() { + // JSON 输出示例 + } + + @JsonResponse + public void put( + Integer id, + Date date, + String name, + short age + ) { + // JSON 输出示例 + } + + public static class LoginRequest { + private String account; + private String password; + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + } +} +``` + +## 总结 + +zoom-web 通过约定和注解的方式简化了 Web 开发,提供了快速的开发体验和高效的数据库操作 API。通过合理的模块化设计和拦截器机制,zoom-web 能够支持复杂的业务需求,并且保持代码的清晰和可维护性。 \ No newline at end of file -- Gitee