# blast
**Repository Path**: wzgdxg/blast
## Basic Information
- **Project Name**: blast
- **Description**: 类spring的JavaWeb快速开发框架
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 3
- **Forks**: 1
- **Created**: 2017-01-20
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# JAVA 急速WEB框架Blast #
##——对JavaWeb的学习性框架,参考了spring的实现##
##——阅读Blast源码可以快速掌握JavaWeb常用技术和方法论,并付诸实践##
Blast 是基于 Java 语言的极速 WEB 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级。在拥有Java语言所有优势的同时再拥有ruby、python等动态语言的开发效率!为您节约更多时间,去陪恋人、家人和朋友 ;)
## 实现功能 ##
- IOC 依赖注入
- AOP 面向切面
- 注解支持
## 样例 ##
###启动Blast容器###
代码方式启动
ApplicationContext.start("tk.tankpao");
Tww tww = (Tww) ApplicationContext.getBean("tww");
Web方式启动
contextConfigLocation
blast.properties
tk.tankpao.blast.web.core.ContextLoaderListener
blast
tk.tankpao.blast.web.servlet.DispatcherServlet
1
blast
/
context-param和ContextLoaderListener启动了Blast容器,可以管理bean和实现AOP。
DispatcherServlet启动了Blast对Web功能的支持。
赋配置文件blast.properties内容:
base_package=tk.tankpao,com.wzg
views_base_path_prefix=/WEB-INF/page/
views_base_path_suffix=.jsp
其中base_package配置需要扫描的包路径以逗号分割。
views_base_path_prefix配置返回视图的根路径。
views_base_path_suffix配置返回视图文件的后缀。
###控制器###
@RequestMapping(path="/test")
@Component(name="testAction")
public class TestAction {
@ResponseBody
@RequestMapping(path="/test1")
public User test1(User user, String name, Integer age){
System.out.println("asdasdasdasdasd");
System.out.println("name="+name);
System.out.println("age="+age);
System.out.println(user);
return user;
}
@RequestMapping(path="/test2")
public String test2(){
return "NewFile";
}
@RequestMapping(path="/test") 请求映射地址
@Component(name="testAction") 类似spring的Component注解,标注该bean交由Blast管理
@ResponseBody 返回内容转成json
注:控制层方法接收前端请求参数能自动转换成对象。
##AOP实现##
@Aspect
@Pointcut(path="tk..core#*w#dd,tk..core#Tww#dd,tk..core#Tw*#dd")
public class AspectSetting extends BaseInterceptor{
/* (非 Javadoc)
* Description:
* @see tk.tankpao.blast.core.aop.BaseInterceptor#beforeRunning(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])
*/
@Override
public void beforeRunning(Object target, Method method, Object[] args) throws Throwable {
System.out.println();
System.out.println(target.getClass().getName() + "." + method.getName());
System.out.println("Interceptor start");
}
/* (非 Javadoc)
* Description:
* @see tk.tankpao.blast.core.aop.BaseInterceptor#afterReturning(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], java.lang.Object)
*/
@Override
public void afterReturning(Object target, Method method, Object[] args, Object returnValue) throws Throwable {
System.out.println("Interceptor end");
System.out.println(target.getClass().getName() + "." + method.getName());
System.out.println();
}
}
该类为AOP配置类 需集成BaseInterceptor类,按需实现前置beforeRunning和后置afterReturning方法。
Blast支持同一类的多层代理。
@Aspect 标注该类为AOP配置类
@Pointcut(path="tk..core#*w#dd,tk..core#Tww#dd,tk..core#Tw*#*d") 标注切点,支持模糊匹配。
####匹配规则####
包名#类名#方法名[,]
其中
.. 表示任意多层级包
\* 表示模糊匹配
, 分割多种不同路径