01:[后台框架] 看配置文件就知道有什么功能了.

首先要先看序章才知道这里的配置文件是什么
//www.greatytc.com/p/8e1028b82a51

再看一下项目结构图:


其实项目分成两部分,

  1. src_common源包, 是项目的核心内容, 光有这部分就可以写个Action类写接口供app调用了, 里面还包含操作数据库的组件.
  2. 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的注解里,在这里就不展示了.

可能讲这些并不能说明什么内容, 还是需要做个实例才能看到效果, 接下来做个简单的例子来试试.

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容