JAVA 急速WEB框架Blast-本人开发的JavaWeb急速框架Blast上线了
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方式启动
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>blast.properties</param-value>
</context-param>
<listener>
<listener-class>tk.tankpao.blast.web.core.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>blast</servlet-name>
<servlet-class>tk.tankpao.blast.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>blast</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
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") 标注切点,支持模糊匹配。
匹配规则
包名#类名#方法名[,]
其中
.. 表示任意多层级包
* 表示模糊匹配
, 分割多种不同路径
JAVA 急速WEB框架Blast-本人开发的JavaWeb急速框架Blast上线了的更多相关文章
- 本人开发的JavaWeb急速框架Blast上线了
JAVA 急速WEB框架Blast --对JavaWeb的学习性框架,参考了spring的实现 --阅读Blast源码可以快速掌握JavaWeb常用技术和方法论,并付诸实践 Blast 是基于 Jav ...
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...
- 转: 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
from: https://github.com/RubyLouvre/agate/issues/8 今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以 ...
- 在做java 的web开发,为什么要使用框架
现在做项目都会使用框架,现在很常见的框架就是SSH(Struts+SpringMVC+spring+hibernate),SSM(Struts/springMVC+Spring+Hibernate), ...
- Java开发web的几种开发模式
Java Web开发方案有多种可供选择,这里列举一些经典的开发模式进行横向比较,为Java Web的开发模式选择提供参考.除此之外还有好多方案(如Tapestry和Wicket等等)并不了解,这里就不 ...
- Java在Web开发语言上败给了PHP
PHP的主要语言开发者之一.Zend公司的创始人之一Andi Gutmans最近在blog中直言不讳地批评了Java语言.他指出,目前Java厂商试图在JVM上提供动态语言实现的路子根本不对,Java ...
- Java在Web开发语言上败给了PHP(转)
PHP的主要语言开发者之一.Zend公司的创始人之一Andi Gutmans最近在blog中直言不讳地批评了Java语言.他指出,目前Java厂商试图在JVM上提供动态语言实现的路子根本不对,Java ...
- Java开发工程师(Web方向) - 03.数据库开发 - 第5章.MyBatis
第5章--MyBatis MyBatis入门 Abstract: 数据库框架的工作原理和使用方法(以MyBatis为例) 面向对象的世界与关系型数据库的鸿沟: 面向对象世界中的数据是对象: 关系型数据 ...
- 【码云周刊第 23 期】Web 高效开发必备的 PHP 框架(从这里学起)good
码云项目推荐 1.项目名称:多功能 THinkPHP 开源框架 项目简介:使用 THinkPHP 开发项目的过程中把一些常用的功能或者第三方 sdk 整合好,开源供亲们参考,如 Auth 权限管理.支 ...
随机推荐
- JavaBean 与 EJB 的区别
JavaBean在一般情况下指的是实体类,在大部分情况下和POJO是同义词,基本构成就是一些字段和与之对应的 setter.getter方法,如果一个JavaBean需要在不同的JVM的进程中进行传递 ...
- elicpse
摘自http://blog.csdn.net/bug_love/article/details/72636505 eclipse error pages打红X的解决方法 我每次建一个Maven项目转为 ...
- Best Time to Buy and Sell Stock IV
Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...
- IE显示对象不支持此属性或方法 的解决方法
用C# 编写的ActiveX控件, 调试时,在世界之窗浏览器里能正确显示,但是不能和JS交互,也没有传说中的错误信息框出现,查了很多文档,后来想问题是不是出在浏览器上,换在IE8里调试,点击交互按钮, ...
- SSL证书部署
SSL证书部署指南 https://www.trustauth.cn/ssl-guide
- 用Html5与Asp.net MVC上传多个文件
html: <form action="/home/upload" method="post" enctype="multipart/form- ...
- BZOJ5319 JSOI2018列队(主席树)
显然集合后相对位置不变最优.主席树上二分向左和向右的分界点即可.注意主席树的值域.我怎么天天就写点一眼题啊. #include<iostream> #include<cstdio&g ...
- Luogu 3385 负环 | 我有特别的SPFA技巧
这样似乎跑得快: 初始化所有的dis是0,然后枚举每个点作为起点,用DFS更新所有点的dis: 如果更新到一个栈中节点,那么有负环. #include <cstdio> #include ...
- 【ARC083E】Bichrome Tree
Description 给一棵\(n\)个节点的树,和一个长度同样为\(n\)的非负整数序列\(x_i\). 请尝试对每个节点染黑或白两种颜色,并确定一个非负整数权值. 问是否存在一种方案 ...
- 洛谷 P1436 棋盘分割 解题报告
P1436 棋盘分割 题目描述 将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的两部分中的任意一块继续如此分割,这样割了(n-1)次后,连同最后剩下的矩形棋盘共 ...