Skip to content

轻量级 Java Web 开发框架 - forked from 黄勇 / smart-framework

License

Notifications You must be signed in to change notification settings

yaSecrets/smart-framework

Repository files navigation

Smart Framework

简介

1. 它是一款轻量级 Java Web 框架

  • 内置 IOC、AOP、ORM、DAO、MVC 等特性
  • 基于 Servlet 3.0 规范
  • 使用 Java 注解取代 XML 配置

2. 它使应用充分做到“前后端分离”

  • 客户端可使用 HTML 或 JSP 作为视图模板
  • 服务端可发布 REST 服务(使用 REST 插件)
  • 客户端通过 AJAX 获取服务端数据并进行界面渲染

3. 它可提高应用程序的开发效率

  • 面向基于 Web 的中小规模的应用程序
  • 新手能在较短时间内入门
  • 核心具有良好的定制性且插件易于扩展

架构

入门

1. 创建一个 Maven Web 工程

整个工程的目录结构如下:

smart-sample/ ┗ src/ ┗ main/ ┗ java/ ┗ resources/ ┗ webapp/ ┗ pom.xml 

java 目录下,创建以下包名目录结构:

org/ ┗ smart4j/ ┗ sample/ ┗ action/ ┗ entity/ ┗ service/ 

可见,基础包名为:org.smart4j.sample,下面的配置中会用到它。

2. 配置 Maven 依赖

编辑 pom.xml 文件,添加 smart-framework 依赖:

<dependency> <groupId>org.smart4j</groupId> <artifactId>smart-framework</artifactId> <version>[版本号]</version> </dependency>

提示:需要指定具体的版本号。若使用相关 Smart 插件,则需分别配置。

3. 编写 Smart 配置

resources 目录下,创建一个名为 smart.properties 的文件,内容如下:

smart.framework.app.base_package=org.smart4j.sample smart.framework.app.home_page=/users smart.framework.jdbc.driver=com.mysql.jdbc.Driver smart.framework.jdbc.url=jdbc:mysql://localhost:3306/smart-sample smart.framework.jdbc.username=root smart.framework.jdbc.password=root 

提示:需根据实际情况修改以上配置。

4. 编写 Entity 类

packageorg.smart4j.sample.entity; importorg.smart4j.framework.orm.annotation.Entity; @EntitypublicclassUser{privatelongid; privateStringusername; privateStringpassword; // getter/setter }

5. 编写 Service 接口及其实现

Service 接口

packageorg.smart4j.sample.service; importjava.util.List; importjava.util.Map; importorg.smart4j.sample.entity.User; publicinterfaceUserService{List<User> findUserList(); UserfindUser(longid); booleansaveUser(Map<String, Object> fieldMap); booleanupdateUser(longid, Map<String, Object> fieldMap); booleandeleteUser(longid)}

Service 实现

packageorg.smart4j.sample.service.impl; importjava.util.List; importjava.util.Map; importorg.smart4j.framework.orm.DataSet; importorg.smart4j.framework.tx.annotation.Service; importorg.smart4j.framework.tx.annotation.Transaction; importorg.smart4j.sample.entity.User; importorg.smart4j.sample.service.UserService; @ServicepublicclassUserServiceImplimplementsUserService{@OverridepublicList<User> findUserList(){returnDataSet.selectList(User.class)} @OverridepublicUserfindUser(longid){returnDataSet.select(User.class, "id = ?", id)} @Override@TransactionpublicbooleansaveUser(Map<String, Object> fieldMap){returnDataSet.insert(User.class, fieldMap)} @Override@TransactionpublicbooleanupdateUser(longid, Map<String, Object> fieldMap){returnDataSet.update(User.class, fieldMap, "id = ?", id)} @Override@TransactionpublicbooleandeleteUser(longid){returnDataSet.delete(User.class, "id = ?", id)} }

5. 编写 Action 类

packageorg.smart4j.sample.action; importjava.util.List; importjava.util.Map; importorg.smart4j.framework.ioc.annotation.Inject; importorg.smart4j.framework.mvc.DataContext; importorg.smart4j.framework.mvc.annotation.Action; importorg.smart4j.framework.mvc.annotation.Request; importorg.smart4j.framework.mvc.bean.Params; importorg.smart4j.framework.mvc.bean.Result; importorg.smart4j.framework.mvc.bean.View; importorg.smart4j.sample.entity.User; importorg.smart4j.sample.service.UserService; @ActionpublicclassUserAction{@InjectprivateUserServiceuserService; @Request.Get("/users") publicViewindex(){List<User> userList = userService.findUserList(); DataContext.Request.put("userList", userList); returnnewView("user.jsp")} @Request.Get("/user") publicViewcreate(){returnnewView("user_create.jsp")} @Request.Post("/user") publicResultsave(Paramsparams){Map<String, Object> fieldMap = params.getFieldMap(); booleanresult = userService.saveUser(fieldMap); returnnewResult(result)} @Request.Get("/user/{id}") publicViewedit(longid){Useruser = userService.findUser(id); DataContext.Request.put("user", user); returnnewView("user_edit.jsp")} @Request.Put("/user/{id}") publicResultupdate(longid, Paramsparams){Map<String, Object> fieldMap = params.getFieldMap(); booleanresult = userService.updateUser(id, fieldMap); returnnewResult(result)} @Request.Delete("/user/{id}") publicResultdelete(longid){booleanresult = userService.deleteUser(id); returnnewResult(result)} }

6. 编写视图

在 Action 中使用了 JSP 作为视图展现技术,需要编写以下 JSP 文件:

  • user.jsp
  • user_list.jsp
  • user_create.jsp
  • user_edit.jsp

提示:更多相关细节,请参考 Smart Sample 示例。

提高

TODO

示例

附录

相关插件

注意:插件依赖于框架,不能独立使用。

相关模块

注意:模块不依赖于框架,可以独立使用。

参考资料

About

轻量级 Java Web 开发框架 - forked from 黄勇 / smart-framework

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java100.0%