这两天要开新项目 , 准备使用比较受欢迎的 jeesite框架 .

jeesite是一个写好的网站 , 用到的框架比较多 具体请看 -- > github链接

下载下来之后 , 手动把maven版本改成了普通的web项目 , 然后导入数据库 . 启动成功 .

接下来开始了解项目的基本构成 , 我比较喜欢先从程序的入口开始分析 , 发现直接打开项目地址 会自动跳转到登陆地址(a/login)  ,然后就分析这个跳转是怎么做的 .

比较纳闷的是 , web.xml没有欢迎页面 直接就跳转了 . 后来分析了 springMVC的配置 发现 spring-mvc.xml里面有如下代码 :

<!-- 定义无Controller的path<->view直接映射 -->
<mvc:view-controller path="/" view-name="redirect:${web.view.index}"/>

意思注释说的很明白 , 如果直接访问项目的根目录  即: localhost:8080/projectName/  则会直接跳转到 view-name 里面的地址 "redirect"的意思是重定向 . ${web.view.index} 这个是spring通过加载 xxxx.properties 文件获得的全局变量 . 加载properties 文件配置如下 :

<!-- 加载配置属性文件 -->
<context:property-placeholder ignore-unresolvable="true" location="classpath:jeesite.properties" />

这样就把 该 properties 文件里面所有 key-value 加载到spring全局里面 . 然后在所有的spring配置里面 都可以用 类似 ${key} 来调用相应的值 , 很方便 .

来看看这个${web.view.index}在 jeesite.properties 文件里是多少  :

web.view.index=/a

/a

看到这里应该明白 , 如果直接访问项目根目录 , 则直接跳转到 localhost:8080/projectName/a 这个url . 渐渐的有眉目了 , 但还不够 .

全局搜索 /a 是啥意思 , 发现jeesite.properties里面有个 值

adminPath=/a

有个 adminPath 承接了这个 /a 路径 .

jeesite 还用了一个管理权限的框架 , 也是第一次接触 叫  Apache Shiro . 项目中有个 spring-context-shiro.xml 配置文件 , 就是关于shiro的配置 . 其中就有一段 这样的配置 :

    <!-- Shiro权限过滤过滤器定义 -->
<bean name="shiroFilterChainDefinitions" class="java.lang.String">
<constructor-arg>
<value>
/static/** = anon
/userfiles/** = anon
${adminPath}/cas = cas
${adminPath}/login = authc
${adminPath}/logout = logout
${adminPath}/** = user
/act/editor/** = user
/ReportServer/** = user
</value>
</constructor-arg>
</bean>

具体的意思 可以了解一下shiro

${adminPath}/** = user  关键在于这句话  意思是 访问的链接 是类似 ${adminPath}/** 这个的话 , 则 必须得有用户登录  , 否则跳转到登陆界面 . 而  ${adminPath} 又恰好是 /a 于是  如果 有 /a/** (**是匹配所有的意思) 链接 , 则需要登陆 ,如果没有登陆则跳转到 登陆界面 .

至此 , 登陆跳转大致算清晰了 .

jeesite简单入口分析的更多相关文章

  1. MongoDB源码分析——mongod程序源码入口分析

    Edit 说明:第一次写笔记,之前都是看别人写的,觉得很简单,开始写了之后才发现真的很难,不知道该怎么分析,这篇文章也参考了很多前辈对MongoDB源码的分析,也有一些自己的理解,后续将会继续分析其他 ...

  2. Android 短信模块分析(三) MMS入口分析

    MMS入口分析:      在Mms中最重要的两个Activity,一个是conversationList(短信列表) ,另一个就是ComposeMessageActivity(单个对话或者短信).每 ...

  3. Spring Ioc源码分析系列--Ioc源码入口分析

    Spring Ioc源码分析系列--Ioc源码入口分析 本系列文章代码基于Spring Framework 5.2.x 前言 上一篇文章Spring Ioc源码分析系列--Ioc的基础知识准备介绍了I ...

  4. MongoDB源码分析——mongo主程序入口分析

    Edit   源码版本为MongoDB 2.6分支 mongo主程序入口分析 mongo是MongoDB提供的一个执行JavaScript脚本的客户端工具,可以用来和服务端交互,2.6版本的Mongo ...

  5. 开源GUI-Microwindows之程序入口分析

    **************************************************************************************************** ...

  6. Python正则简单实例分析

    Python正则简单实例分析 本文实例讲述了Python正则简单用法.分享给大家供大家参考,具体如下: 悄悄打入公司内部UED的一个Python爱好者小众群,前两天一位牛人发了条消息: 小的测试题:  ...

  7. ceph-csi源码分析(3)-rbd driver-服务入口分析

    更多ceph-csi其他源码分析,请查看下面这篇博文:kubernetes ceph-csi分析目录导航 ceph-csi源码分析(3)-rbd driver-服务入口分析 当ceph-csi组件启动 ...

  8. 最新 x86_64 系统调用入口分析 (基于 5.7.0)

    最新 x86_64 系统调用入口分析 (基于5.7.0) 整体概览 最近的工作涉及系统调用入口,但网上的一些分析都比较老了,这里把自己的分析过程记录一下,仅供参考. x86_64位系统调用使用 SYS ...

  9. ASP.NET运行时详解 生命周期入口分析

    说起ASP.NET的生命周期,网上有很多的介绍.之前也看了些这方面的博客,但我感觉很多程序猿像我一样,看的时候似乎明白,一段时间过后又忘了.所以,最近Heavi花了一段时间研究ASP.NET的源代码, ...

随机推荐

  1. Java中String的split()方法的一些需要注意的地方

    public String[] split(String regex, int limit) split函数是用于使用特定的切割符(regex)来分隔字符串成一个字符串数组,这里我就不讨论第二个参数( ...

  2. Ubuntu安装飞鸽传输

    飞鸽传书下载地址 http://www.ipmsg.org.cn/ipmsg/download.html 下载以后解压压缩包,会有一个可执行文件,executable文件. ./Qipmsg 如果没报 ...

  3. easyui datagrid 列排序

    1.js设置 //=====================数据加载===================== /** * grid加载数据 * * @returns */ function grid ...

  4. 在delphi中,DLL加载时做初始化的Demo

    library DLLEntry;//dll源码 uses SysUtils, Classes, Dialogs, Windows; {$R *.res} procedure DLLEntryPoin ...

  5. webx学习

    webx框架学习指南 http://openwebx.org/docs/Webx3_Guide_Book.html webx学习(一)——初识webx webx学习(二)——Webx Framewor ...

  6. PHP 中使用socket

    一.开启socket phpinfo();查看是否开启了socket扩展,否则在php.ini中开启. 二.服务器端代码的写法 <?php error_reporting(E_ALL); set ...

  7. js与AMD模块加载

    目的: 了解AMD规范与CMD规范,写一个模块加载器雏形. 基本概念: AMD是异步模块定义规范,而CMD是通用模块定义规范.其他的还有CommonJS Modules规范. 对于具体的规范,可以参考 ...

  8. WPF学习之数据绑定

    WPF中的数据绑定提供了很强大的功能.与普通的WinForm程序相比,其绑定功能为我们提供了很多便利,例如Binding对象的自动通知/刷新,Converter,Validation Rules,Tw ...

  9. TCP/IP协议族(二) HTTP报文头解析

    本篇博客我们就来详细的聊一下HTTP协议的常用头部字段,当然我们将其分为请求头和响应头进行阐述.下方是报文头每个字段的格式,首先是头部字段的名称,如Accept,冒号后方紧跟的是该字段名所对应的值,每 ...

  10. 基于Selenium2与Python自动化测试环境搭建

    简介: selenium 是一个web的自动化测试工具,不少学习功能自动化的同学开始首选selenium ,相因为它相比QTP有诸多有点: *  免费,也不用再为破解QTP而大伤脑筋 *  小巧,对于 ...