前言
前些日子写的轻量级 MVC 框架已经写得差不多了,基于 Servlet,同时我也封装了 JDBC 来提供对数据库的访问。当初写这个框架是为了了解 servlet 是如何工作的,同时也作为自己的一个小项目,思路参考了《架构探险:从零开始写 Java Web 框架》。虽然写这个框架只是作为学习之用,但后面还是会继续完善和优化。附上 Github 地址
快速使用
Maven
<dependency> <groupId>group.jbee</groupId> <artifactId>jbee-framework</artifactId> <version>1.0.1</version> </dependency>
还未上传 Maven 仓库,找不到依赖可 clone 本项目,执行 mvn
install 打包到本地仓库。也可以直接下载 jar 包,点此下载。
其他依赖
MySQL 驱动
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.33</version> </dependency>
配置文件
在 resource 目录下新建 jbee.properties 配置文件,配置项如下
/***JDBC 驱动*/ jbee.framework.jdbc.driver=com.mysql.jdbc.Driver /***JDBC URL*/ jbee.framework.jdbc.url=jdbc:mysql://localhost:3306/jbee /***JDBC 用户名*/ jbee.framework.jdbc.username=root /***JDBC 密码*/ jbee.framework.jdbc.password=123456 /***JDBC 连接池最大数量*/ jbee.framework.jdbc.max=5 /***JDBC 连接池最小数量*/ jbee.framework.jdbc.min=2 /***应用基础包名*/ jbee.framework.app.base_package=group.jbee.jbeedemo /***JSP路径*/ jbee.framework.app.jsp_path=/view/ /***静态资源路径*/ jbee.framework.app.static_path=/static/
当然,还有 web.xml 配置
<servlet-mapping> <servlet-name>defaultservlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> <servlet> <servlet-name>defaultservlet</servlet-name> <servlet-class>group.jbee.framework.DispatcherServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet>
以上就是所有必要的配置,下面看如何使用
IOC
IOC 是 Spring 的核心,Jbee 也实现了一个简单的 IOC 容器。
使用注解 @Inject 修饰需要注入的类。
示例代码:
@Controller public class HelloAction { @Inject private UserService userService; ...... }
@Service public class UserService { @Inject UserMapper userMapper; public List<User> getUserInfo(User user){ return userMapper.getUserInfo(user); } public void createUser(User user){ userMapper.createUser(user); } }
Controller
与 Spring MVC 差不多,使用 @Controller 注解来修饰控制器类,使用 @Action 注解来匹配 URL
示例代码:
@Controller public class HelloAction { @Inject private UserService userService; //返回json数据 @Action("POST:/Action1") public Data action1(Param param){ Map<String,Object> params = param.getMap(); String name = (String) params.get("name"); User user= new User(); user.setName(name); Data data=new Data(userService.getUserInfo(user)); return data; } //返回jsp页面 @Action("GET:/Action2") public View action1(){ View view = new View("hello.jsp"); //使用EL表达式${data}取值 view.setModel("data","HelloJbee!"; return view; } }
DAO
持久层与 Mybatis 类似,只需编写 DAO 接口以及 SQL 语句,目前只支持静态 SQL,用占位符#{}来设置参数。接口用注解 @Repository 声明,方法用 @Select、@Insert、@Delete、@Update 来声明。
示例代码:
@Repository public interface UserMapper { @Select("select * from users where name=#{name}") List<User> getUserInfo(User user); @Insert(value = "insert into users(name,password) values(#{name},#{password})") void createUser(User user); }
最后
将项目打 war 包,放到 Tomcat 等 servlet 容器里就可以跑起来了。
寒假比较摸,AOP 还没写-。-,会尽快写完吧,毕竟大三下又要很忙了。
框架实现原理后面我也会分享在博客里。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于