jeesite简单入口分析

这两天要开新项目 , 准备使用比较受欢迎的 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/** (**是匹配所有的意思) 链接 , 则需要登陆 ,如果没有登陆则跳转到 登陆界面 .

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

上一篇:深度学习网络压缩模型方法总结(model compression)


下一篇:J2SE基础:1.类和对象基础