这两天要开新项目 , 准备使用比较受欢迎的 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. 基于RBAC的权限设计模型

    个部件模型组成,这4个部件模型分别是基本模型RBAC0(Core RBAC).角色分级模型RBAC1(Hierarchal RBAC).角色限制模型RBAC2(Constraint RBAC)和统一模 ...

  2. C # 产生鼠标点击事件

    新建一个WinFrom,找到MouseDown,回车,生成代码如下点击的效果如图 参考文章:http://blog.csdn.net/u012842807/article/details/454143 ...

  3. [项目回顾]基于Annotation与SpringAOP的缓存简单解决方案

    前言: 由于项目的原因,需要对项目中大量访问多修改少的数据进行缓存并管理,为达到开发过程中通过Annotation简单的配置既可以完成对缓存的设置与更新的需求,故而设计的该简易的解决方案. 涉及技术: ...

  4. Delphi 获取内存及CPU信息的函数

    Uses MemoryCpuUtils;//首先引用该单元 //声明下列变量用来存储读取的数值 Var iTotalPhysics, iTotalVirtual, iTotalPageFile, iC ...

  5. apache 添加 ssl_module

    下载httpd2.2.6,以前用http2.2.4会出问题(出现个什么lib的错误) ./configure --prefix=/usr/local/apache --enable-ssl --ena ...

  6. Ubuntu 安装wireshark

    参考:ubuntu下安装wireshark 依赖及相关包的安装 1.编译工具 apt-get install build-essential 2.GTK+的开发文件和GLib库(libraries) ...

  7. 以脚本方式直接执行修改密码的passwd命令

    以脚本方式直接执行修改密码的passwd命令: 参考: http://bbs.csdn.net/topics/390001865 http://bbs.chinaunix.net/thread-993 ...

  8. Android开发知识体系总结

  9. 深圳尚学堂:Swift中的“!”和“?”

    Swift中的"!"和"?"Swift,苹果于2014年WWDC发布的新开发语言,用于搭建基于苹果平台的应用程序.Swift是一款易学易用的编程语言,而且它还是 ...

  10. Linux 菜鸟学习笔记--系统分区

    硬盘分区 常识 主分区:最多只能有4个 扩展分区:用于突破主分区最多4个的限制 *最多只能有1个 *主分区+扩展分区最多有4个 *不能写入数据,只能包含逻辑分区 逻辑分区 格式化:实际是写入文件系统, ...