首先要先看序章才知道这里的配置文件是什么
//www.greatytc.com/p/8e1028b82a51
再看一下项目结构图:
其实项目分成两部分,
- src_common源包, 是项目的核心内容, 光有这部分就可以写个Action类写接口供app调用了, 里面还包含操作数据库的组件.
- src_manage源包和web/resources文件夹后台框架的源文件.
接下来看一下web.xml里面的内容
m.system.listener.InitListener 系统的初始化监听类, 用来加载配置文件内容.
<!-- 系统初始化监听 -->
<listener>
<listener-class>m.system.listener.InitListener</listener-class>
</listener>
<!--end 系统初始化监听 -->
m.system.filter.ActionFilter url过滤器, 系统会过滤所有请求
<!-- url 过滤器 -->
<!-- 执行过滤器 -->
<filter>
<filter-name>actionFilter</filter-name>
<filter-class>m.system.filter.ActionFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>actionFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<!--end url 过滤器 -->
url过滤器以后再讲.
配置文件
图片红框内的是src_common源包需要加载的配置文件:
1. src/config/mconfig.properties 功能性配置文件
#数据库模型包, 多个用逗号分开(,)
model_pack=manage.model
#秘密字段 ModelQueryList 查询用*时,过滤掉
secret_field=AdminLogin.password,AdminLogin.token
#静态资源加速配置 多个用(,号)分开 model的属性
static_field=ImageInfo.imgPath,ImageInfo.thumPath
#action包, 多个用逗号分开(,) 继承m.common.action 系统Action
action_pack=manage.action
#启动是需要初始化的类 继承m.system.SystemInitRun并实现run方法
init_class=manage.run.ModuleInitRun
#定时任务类 多个用&符号分割 格式 类(继承m.system.SystemTaskRun)|Quartz的cronSchedule 每天0点0分0秒执行: 秒0 分钟0 小时0 日期* 月* 星期? 年
# 例:m.system.task.SystemTask|0/2 * * * * ?&m.system.task.SystemTask|0/2 * * * * ?
task_class=
#操作日志类 实现m.common.model.LogModel 只能设置一个
log_class=manage.model.SystemLog
#系统信息类 实现m.common.model.SystemInfoModel 只能设置一个
systeminfo_class=manage.model.SystemInfo
#域名跳转实现类 多个用逗号分开(,) 实现m.system.url.RedirectUrl
domain_class=
#上传文件存放目录
file_path=uploadData/
#调试
debug=true
- model_pack, secret_field, static_field 是表模型相关配置, 配置后系统可以初始化表信息, 模型类可以进行增删改查.
@TableMeta(name="os_admin_group_power",description="用户组权限表")
public class AdminGroupPower extends Model {
@FieldMeta(name="name",type=FieldType.STRING,length=50,description="名称")
private String name;
@LinkTableMeta(name="admin_group_oid",table=AdminGroup.class,description="管理员组")
private AdminGroup adminGroup;
//....get,set 方法....
}
- action_pack 是action的包路径配置, 包里的类继承m.common.action.Action类, 类里的方法就可以被外部访问了
@ActionMeta(name="manageDictionaryType",title="系统-数据字典")
public class DictionaryTypeAction extends ManageAction {
private DictionaryType model;
@DocumentMeta(
method=@DocumentMethodMeta(title="获取数据字典",description=""),
params={@DocumentParamMeta(name="model.type",description="数据字典类型",type=FieldType.STRING,length=20,notnull=true)
}
)
public JSONMessage getDict(){
.....
}
.....
}
调用的url: http://ip:port/action/manageDictionaryType/getDict
- 其他的暂时不讲了, 后面用到会详解
2. src/dbconfig.properties 数据库地址配置文件
#数据库配置
db_driver=com.mysql.jdbc.Driver
db_url=jdbc:mysql://127.0.0.1:3306/mdb?useSSL=false
db_username=root
db_password=root
db_init_connect=SET NAMES utf8mb4
db_max_connect=10
#数据库名称 空:不自动初始化数据库
table_schema=mdb
#主控服务地址
server_ip=
server_port=8128
数据库链接使用的是JDBC方式
- 前四项没啥说的,
- db_init_connect : 打开数据库链接后执行的sql.
- db_max_connect : 数据库的最大链接说.
3. src/config/urlmarker.xml 访问配置信息
<?xml version="1.0" encoding="UTF-8"?>
<root>
<redirect><!-- 重定向 -->
<url tag="/admin"><![CDATA[/action/manageAdminLogin/admin]]></url>
</redirect>
<enable><!-- 允许访问的路径 -->
<tag><![CDATA[/resources/]]></tag>
</enable>
<referer><!-- 允许来路的域名 -->
<tag><![CDATA[192.168.137.1]]></tag>
</referer>
<authorization><!-- 允许授权的前缀 -->
</authorization>
</root>
- <redirect> 重定向, 比如访问的后台地址(http://127.0.0.1/admin)
实际访问的路径是http://127.0.0.1/action/manageAdminLogin/admin
注, 如果访问/admin#A1101, 就会重定向到/action/manageAdminLogin/admin#A1101 - <enable>, <referer>, <authorization> 是控制所有请求的访问, 默认配置了127.0.0.1
4. src/config/dbinitsql.xml 表初始化语句
表创建的时候会执行, 表结构更新不会执行.
<?xml version="1.0" encoding="UTF-8"?>
<root>
<sql tableName="os_admin_group"><![CDATA[
INSERT INTO os_admin_group (oid, name, description, status) VALUES ('1', '管理员', '', '0');
]]></sql>
........
</root>
5. src/config/dbviewsql.xml 表视图语句
模型对应的视图查询, 不写在这个配置文件里, 也可以写在Model的注解里,在这里就不展示了.
可能讲这些并不能说明什么内容, 还是需要做个实例才能看到效果, 接下来做个简单的例子来试试.