源码阅读有感

来源:互联网 发布:算法设计与分析第二版 编辑:程序博客网 时间:2024/06/04 11:40

最近在做毕业设计,使用开源框架jeesite,jeesite是一个很强大的框架,jeesite框架下载百度一大堆。官方介绍如下:

JeeSite本身是以Spring Framework为核心容器,Spring MVC为模型视图控制器,MyBatis为数据访问层, Apache Shiro为权限授权层,Ehcahe对常用数据进行缓存,Activit为工作流引擎
JeeSite主要定位于企业信息化领域,已内置企业信息化系统的基础功能和高效的 代码生成 工具, 包括:系统权限组件、数据权限组件、数据字典组件、核心工具组件、视图操作组件、工作流组件、代码生成等。 前端界面风格采用了结构简单、性能优良、页面美观大气的Twitter Bootstrap页面展示框架。 采用分层设计、双重验证、提交数据安全编码、密码加密、访问验证、数据权限验证。 使用Maven做项目管理,提高项目的易开发性、扩展性。
JeeSite目前包括以下三大模块,系统管理(SYS)模块、 内容管理(CMS)模块、在线办公(OA)模块、代码生成(GEN)模块。 系统管理模块,包括企业组织架构(用户管理、机构管理、区域管理)、 菜单管理、角色权限管理、字典管理等功能; 内容管理模块 ,包括内容管理(文章、链接),栏目管理、站点管理、 公共留言、文件管理、前端网站展示等功能; 在线办公模块 ,提供简单的请假流程实例。
JeeSite 提供了常用工具进行封装,包括日志工具、缓存工具、服务器端验证、数据字典、当前组织机构数据 (用户、机构、区域)以及其它常用小工具等。另外还提供一个强大的在线 代码生成 工具, 此工具提供简单的单表、一对多、树结构功能的生成,如果对外观要求不是很高,生成的功能就可以用了。 如果你使用了JeeSite基础框架,就可以很高效的快速开发出,优秀的信息管理系统。

jeesite封装了shiro,但是在做用户那块太过复杂,而我的毕业设计用户并无那么复杂的属性,于是想着自己在原来的基础上简化这块的代码,也借着这个机会阅读jeesite源码并且学习下shiro。

当我在LoginController.java的登录方法遇到request.getSession().setAttribute(ValidateCodeServlet.VALIDATE_CODE, IdGen.uuid());时,产生了困惑,因为我顺着执行流程下来,并无哪段代码将验证码设置到了HttpSession的属性里头,怀着好奇心,想着一定要搞明白。我的想法历程是这样的。

1、是不是页面表单框架做了手脚,我把username也从HttpSession的属性获取出来看看有没有值,但是不出意外,获取出来的值为null。

2、这时候,我回到了表单页面,由于jeesite在前端做了很多封装,我看到了<sys:validateCode name="validateCode" inputCssStyle="margin-bottom:0;"/> ,于是找到了validateCode.tag,里面果然做了很多封装,连获取验证码的url都封装在这个tag里面了,我看到了如下:

<img src="${pageContext.request.contextPath}/servlet/validateCodeServlet" onclick="$('.${name}Refresh').click();" class="mid ${name}" style="${imageCssStyle}"/><a href="javascript:" onclick="$('.${name}').attr('src','${pageContext.request.contextPath}/servlet/validateCodeServlet?'+new Date().getTime());" class="mid ${name}Refresh" style="${buttonCssStyle}">看不清</a>

于是乎好像越来越明白了道理,我找到这个Servlet,果然在生成验证码图片的时候,传进了HttpServletRequest变量,createImage(HttpServletRequest request,HttpServletResponse response) 并且在这个方法里,有这么一句代码:request.getSession().setAttribute(VALIDATE_CODE, s); 终于找到了,我在这句代码前做了以下备注://在这里将验证码设置进去HttpSession

从这里,我想起了以为师兄对我说过的话,看源码是带着问题去看的。

完毕。

0 0
原创粉丝点击