JWeb框架
2015-10-24 18:00
1106 查看
#============================================
#========= jweb 框架介绍 =============
#========= by:yuanqy =============
#============================================
jweb对外抛露三个抽象类:
1、JWebConfig--(类)用来配置jweb框架
├ configConstant()--(方法)用户常量配置区,可覆盖默认配置和文件配置。(加载顺序:系统默认常量->配置文件常量->用户常量)
└ configPlugin()--(方法)插件配置区,如C3P0,MyBatis,quartz....
2、JWebInterceptor--(类)项目拦截,在项目启动/销毁时的额外操作
├ init()--(方法)项目启动时:可以加载默认数据,比如:从数据库读取配置、菜单、权限...
└ destroy()--(方法)项目关闭时: 可以进行资源销毁操作
3、HandleInterceptor--(类)请求拦截、类似Spring中的HandlerInterceptorAdapter
├ preHandle()--(方法)请求执行之前:可以进行编码、安全控制等一系列处理[重要]
└ afterCompletion()--(方法)请求执行之后:可以根据ex是否为null判断是否发生了异常,进行日志记录、重定向。或赋值操作。
jweb系统配置:
说明:所有配置信息(键值对)都保存在:JWebFilter.constants变量中,配置信息来自于以下三个方面:
1、系统默认配置:(不用管,想改可通过后两种方式覆盖)
2、配置文件:(配置文件怎么写就不说了,说下配置文件的放置位置,如有多个文件可以用分号;分割:)
位置说明:在web.xml配置信息filter中加入
3、实现JWebConfig类并在configConstant()方法中往Map<String, String> constants加入配置信息
jweb注解配置:
1、@JController--[TYPE]控制类注解,该类必须继承Controller类,用于Action路由分发
2、@JAutowired--[FIELD]属性变量注解,比如引用的服务或接口
3、@JTransaction--[METHOD]事务控制,只能用于server方法上,须引人cglib-nodep,依赖Mybatis,
4、@JRemark--[METHOD]接口描述,只能用于mybatis接口方法上,记录日志描述用
5、@JParam--[METHOD]Action方法字段取值,有两种类型的值。1.是URL中的通过下标取,2.是Post参数值,直接取
6、@JTask--[TYPE]Quartz定时器
7、@JValue--[FIELD]获取全局配置文件上下文值
8、@JMcache--[METHOD]Service缓存框架,依赖Mybatis,目前用ConcurrentHashMap,后续集成第三方框架
注解加载顺序说明:
启动时:
a、找到@JController控制类,并进行实例化
b、对实例化的类进行反射查找有@JAutowired的属性变量
c、对有@JAutowired的server进行Cglib动态代理(如果没有cglib包,默认直接实例化,并无法使用Mybatis事务)
d、对有@JAutowired的接口进行JDK动态代理
运行时:
e、对有@JTransaction(必须Cglib)的Server方法,在运行时自动加上事务。
f、对有@JRemark的接口方法,在运行时自动记录日志。
jweb的RESTful风格URL:
对URL的处理以对应不同的Controller,method,param
总共分为下列4种URL格式:
* 1: http://abc.com/controllerKey.html ---> 00
* 2: http://abc.com/controllerKey/param.html ---> 01
* 3: http://abc.com/controllerKey/method.html ---> 10
* 4: http://abc.com/controllerKey/method/param.html ---> 11
注: param可以有多个,以/分割。在Action中以 getParameterURL()中以下标取值
controllerKey为@JController注解内写的值
method为控制类中的方法名[公共方法]
param为参数
例:http://localhost:8080/book/read/1001/5.html ::假意为: 读取书库 里面ID为1001的书籍的第5页
jweb编程规范(建议[不强求]):
1、所有@JController注解的类(即控制层)以:xxxxController.java命名
2、所有Server类(即服务层)以:xxxxServer.java命名
3、所有ajax请求以ajax开头,如:验证用户名称: /ajaxCheckName.html
4、提交操作以Action结尾,公用菜单权限,如:进入修改页面为:/edit.html 提交修改为:/editAction.html 能进修改的页面就有修改的权限。
5、服务层和接口层方法命名规则(服务层可以继承接口层,也可以不继承,无所谓):
listXXXX()--返回list对象
getXXXX()--返回一个对象
addXXXX()--新增操作
delXXXX()--删除操作
editXXXX()--修改操作
#==============================注意点====================================
1、jweb框架使用的过滤器filter进行的请求拦截,对于有服务器端的forward,在web.xml的<filter-mapping>标签中必须加上:
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>EXCEPTION</dispatcher>
#========= jweb 框架介绍 =============
#========= by:yuanqy =============
#============================================
jweb对外抛露三个抽象类:
1、JWebConfig--(类)用来配置jweb框架
├ configConstant()--(方法)用户常量配置区,可覆盖默认配置和文件配置。(加载顺序:系统默认常量->配置文件常量->用户常量)
└ configPlugin()--(方法)插件配置区,如C3P0,MyBatis,quartz....
2、JWebInterceptor--(类)项目拦截,在项目启动/销毁时的额外操作
├ init()--(方法)项目启动时:可以加载默认数据,比如:从数据库读取配置、菜单、权限...
└ destroy()--(方法)项目关闭时: 可以进行资源销毁操作
3、HandleInterceptor--(类)请求拦截、类似Spring中的HandlerInterceptorAdapter
├ preHandle()--(方法)请求执行之前:可以进行编码、安全控制等一系列处理[重要]
└ afterCompletion()--(方法)请求执行之后:可以根据ex是否为null判断是否发生了异常,进行日志记录、重定向。或赋值操作。
jweb系统配置:
说明:所有配置信息(键值对)都保存在:JWebFilter.constants变量中,配置信息来自于以下三个方面:
1、系统默认配置:(不用管,想改可通过后两种方式覆盖)
constants.put("encoding", "utf-8"); // 默认编码 constants.put("ViewPrefix", "/WEB-INF/jsp/"); // 视图地址 constants.put("ViewSuffix", ".jsp"); // 视图类型 constants.put("component-scan", ""); // 项目启动扫描包,""默认全扫描
2、配置文件:(配置文件怎么写就不说了,说下配置文件的放置位置,如有多个文件可以用分号;分割:)
位置说明:在web.xml配置信息filter中加入
<init-param> <param-name>propertyFile</param-name><!--名字固定为:propertyFile--> <!-- <param-value>file:/app.properties</param-value> 放在系统根目录 --> <!-- <param-value>app.properties</param-value> 放在项目根目录 --> <!-- <param-value>/app.properties</param-value> 放在项目WEB-INF下 --> <param-value>classpath:app.properties</param-value><!-- 放在项目ClassPath下 --> </init-param>
3、实现JWebConfig类并在configConstant()方法中往Map<String, String> constants加入配置信息
jweb注解配置:
1、@JController--[TYPE]控制类注解,该类必须继承Controller类,用于Action路由分发
2、@JAutowired--[FIELD]属性变量注解,比如引用的服务或接口
3、@JTransaction--[METHOD]事务控制,只能用于server方法上,须引人cglib-nodep,依赖Mybatis,
4、@JRemark--[METHOD]接口描述,只能用于mybatis接口方法上,记录日志描述用
5、@JParam--[METHOD]Action方法字段取值,有两种类型的值。1.是URL中的通过下标取,2.是Post参数值,直接取
6、@JTask--[TYPE]Quartz定时器
7、@JValue--[FIELD]获取全局配置文件上下文值
8、@JMcache--[METHOD]Service缓存框架,依赖Mybatis,目前用ConcurrentHashMap,后续集成第三方框架
注解加载顺序说明:
启动时:
a、找到@JController控制类,并进行实例化
b、对实例化的类进行反射查找有@JAutowired的属性变量
c、对有@JAutowired的server进行Cglib动态代理(如果没有cglib包,默认直接实例化,并无法使用Mybatis事务)
d、对有@JAutowired的接口进行JDK动态代理
运行时:
e、对有@JTransaction(必须Cglib)的Server方法,在运行时自动加上事务。
f、对有@JRemark的接口方法,在运行时自动记录日志。
jweb的RESTful风格URL:
对URL的处理以对应不同的Controller,method,param
总共分为下列4种URL格式:
* 1: http://abc.com/controllerKey.html ---> 00
* 2: http://abc.com/controllerKey/param.html ---> 01
* 3: http://abc.com/controllerKey/method.html ---> 10
* 4: http://abc.com/controllerKey/method/param.html ---> 11
注: param可以有多个,以/分割。在Action中以 getParameterURL()中以下标取值
controllerKey为@JController注解内写的值
method为控制类中的方法名[公共方法]
param为参数
例:http://localhost:8080/book/read/1001/5.html ::假意为: 读取书库 里面ID为1001的书籍的第5页
@JController("/book") public class BookController extends Controller { public void read(@JParam({1}) int bookId,@JParam({2}) int page){ //String p1=getParameterURL().get(0); //String p2=getParameterURL().get(1); //可以获取到p1=1001 p2=5 可以获取到bookId=1001 page=5 } }
jweb编程规范(建议[不强求]):
1、所有@JController注解的类(即控制层)以:xxxxController.java命名
2、所有Server类(即服务层)以:xxxxServer.java命名
3、所有ajax请求以ajax开头,如:验证用户名称: /ajaxCheckName.html
4、提交操作以Action结尾,公用菜单权限,如:进入修改页面为:/edit.html 提交修改为:/editAction.html 能进修改的页面就有修改的权限。
5、服务层和接口层方法命名规则(服务层可以继承接口层,也可以不继承,无所谓):
listXXXX()--返回list对象
getXXXX()--返回一个对象
addXXXX()--新增操作
delXXXX()--删除操作
editXXXX()--修改操作
#==============================注意点====================================
1、jweb框架使用的过滤器filter进行的请求拦截,对于有服务器端的forward,在web.xml的<filter-mapping>标签中必须加上:
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>EXCEPTION</dispatcher>
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树