基于Jfinal+Shiro框架的Web应用系统开发研究

2017-03-06 17:09苏小平
电脑知识与技术 2016年30期
关键词:模式框架

苏小平

摘要:该文详细介绍了Web应用模式和应用框架,深入分析了开源架构JFinal和Shiro的特点,介绍了基于JFinal+Shiro的企业级Web应用的常规架构,并给出了JFinal整合Shiro构建Web应用系统的解决方案。

关键词:框架;模式;MVC;Jfinal;Shiro

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)30-0068-03

1 背景

随着Web技术和Internet的迅速发展,Web应用需求快速增加,开发也变得越来越复杂。为了使广大程序员能够更加快速有效地构建易编写、易扩展、易维护、易重用的Web应用系统,选用合适的JAVA开源框架显得尤为重要。现在有很多优秀的开源框架,包括Hibernate、Shiro、Struts2、JSF、Spring、Jfinal等。在构建Web应用系统时,程序员可以单独或者组合使用这些开源框架,最典型的用法就是将Struts2、Spring和Hibernate这三种轻量级的开源框架组合使用的SSH2组合框架搭建Web开发环境。SSH2组合框架有很多优点,但是配置起来相对复杂。近年来出现的Jfinal框架,不仅可以替代SSH2的大部分功能,而且开发简单,配置灵活,程序员更容易上手。本文构建了一种基于JFinal+Shiro的Web应用程序开发架构,不仅能够简单迅速的实现业务系统功能,而且还能方便快速地完成权限设置功能。

2 Web应用模式与框架

2.1 Web应用模式

早期的Web应用系统采用的是两层架构的B/S(Browser-Server,即浏览器-服务器)模式,与传统的C/S开发模式相比,基于B/S的Web应用系统无需在每台机器上安装应用软件,只需将应用部署到服务器上,客户端安装浏览器即可访问。这一阶段的Web应用的核心是用户通过客户端的浏览器向服务器发起请求,服务器处理后将结果返回给客户端。程序员的关注点在于浏览器与服务器之间如何实现交互,并且采用何种技术,JSP、ASP还是CGI实现交互。

随着Web技术的发展,程序员的关注点由如何实现交互变为如何构建易于维护扩展的Web应用系统,进而有了MVC(Model-View-Controller,即模型-视图-控制器)模式。MVC模式中的模型(Model)用于封装业务数据并且提供对数据的增删改查等处理方法,通常会将这些操作封装成JavaBean供控制层调用。视图(View)在Web应用系统中负责与用户实现交互,是浏览器展现给用户的操作界面,用于实现数据的输入输出等功能,早期的MVC中的视图部分是由HTML语言实现静态页面,由JSP语言实现动态页面的编写。随着Web应用需求不断变化,系统界面也越来越复杂,程序员更倾向于使用功能更强大的Struts、HTML5、JSTL等语言实现视图。控制器(Controller)主要负责协调视图和模型,它拦截客户端的HTTP请求,调用模型层的方法进行处理后,将视图结果通过浏览器返回给用户。

2.2 Web应用框架

Web应用框架可以理解为是基于程序员的开发经验编写的可重用的Web开发架构,可以在此基础上开发新的Web应用。在进行企业级Web应用开发时,选用成熟的框架不但可以降低开发成本和开发周期,也可以使软件开发人员将更多的精力集中于业务需求的研发减少底层代码的开发工作。现在有许多优秀的开源的Web开发框架,例如,用于模型层对数据进行持久化的开源框架有iBatis、Hibernate、Jfinal等,用于視图层对数据进行展现的开源框架有Struts、JSTL、FreeMarker等,用于控制层的框架有Spring、Jfinal、WebWork等,用于进行权限设计的开源框架有Acegi、JOSSO、Shiro等。在进行Web应用程序开发时,我们可以选用其中某一个架构,也可以将这些架构整合起来使用。

2.3 Web应用系统的权限管理

对于企业级Web应用系统而言,不能只着眼于业务需求的实现,还得考虑应用系统的安全性。Web应用系统安全管理涉及很多方面,包括网络安全和访问控制安全等。访问控制安全又分为功能访问控制和数据访问控制。在企业级Web应用系统中,最常用的权限管理模型就是RBAC(Role-Based Access Control,基于角色的访问控制)模型,该模型诠释了用户、角色和权限三者之间的多对多的关系,即一个用户可以拥有若干角色,一个角色可以拥有若干权限,从而变相的让一个用户拥有多个权限。Shiro框架很好地实现了Web应用系统的安全认证和权限控制。

3 基于Jfinal +Shiro的Web应用架构研究

3.1 JFinal框架

JFinal是JAVA架构师詹波于2011年初设计开发,并于2012年开源的一款Web开发框架,虽然出现的晚,但由于其具有开发迅速、易扩展等优势,近年来越来越受到广大架构师和程序员的青睐。JFinal是基于Java语言的极速Web + ORM框架,具有如下优点:

1)整个开发包体积很小,只有180K左右,并且不依赖于其他第三方开发包;

2)体系结构上由于采用的是Plugin插件式结构,因此具有极强的扩展性;

3)设计上完全遵循COC(Convention over Configuration,优于配置)原则,无XML,实现了零配置;

4)开发过程中能够自动加载被修改的JAVA类文件,程序员无需反复重启Web服务器;

5)使用简单方便,设计精巧灵活,很好的实践了MVC模式;

6)视图层提供对多种语言的支持,包括Velocity、JSP和FreeMarker等;

7)模型层支持ActiveRecord,Model类的每个对象对应数据库的一条记录,从而使得数据库开发效率达到极致;

8)控制层支持AOP,具有丰富的配置灵活的拦截器;

3.2 Shiro框架

Shiro是Apache基金会项目,是实现 Web应用系统安全框架的主流选择,与Spring security相比,Shiro简单易用,足够完成一般的企业级Web应用系统的安全认证功能。Shiro为开发人员提供了身份认证、授权、数据加密和会话管理等功能,但Shiro本身不会自动维护用户和权限,这些需要程序员通过代码实现,然后注入给Shiro相应的接口即可。

3.3 基于JFinal+Shiro的Web应用系统常规架构

通常情况下,构成Web应用程序的基本要素包括Web应用系统服务器、网络和浏览器。采用B/S架构的Web应用系统只需要将应用部署在服务器上,其他机器上只需要安装浏览器即可访问。基于JFinal+Shiro的Web应用系统的常规架构可分为四层,分别是数据层、业务逻辑层、表现层和客户层,如下图所示。

3.4 基于JFinal+Shiro的Web应用系统开发过程

构建基于JFinal+Shiro的企业级的Web应用系统时使用JFinal实现系统功能的快速开发,使用Shiro实现用户权限管理,整个工程架构搭建过程如下:

1)新建Web工程,并导入jFinal相关的jar包

在IDE集成开发环境Eclipse中新建动态Web工程,然后将JFinal的开发包jfinal-1.9-bin-with-src.jar和jfinal-ext-3.1.3.jar添加到工程的WebRoot/WEB-INF/lib目录下;

2)修改web.xml文件

在web.xml文件中添加JFinal的拦截器,代码如下:

3)进行其他配置

编写一个继承JFinalConfig的子类,需要实现五个抽象方法configConstant、configRoute、configPlugin、configInterceptor和configHandler,分别表示配置常量、配置路由规则、配置系统插件、配置拦截器和配置处理器,该类用于对整个Web项目进行配置。部分代码如下:

4)验证JFinal框架

通过以上几个步骤,成功地将JFinal框架集成到Web项目中,JFinal如何使用呢?我们简单的举个例子,创建一个继承自com.jfinal.core.Controller的HelloController文件,代码如下:

启动Web服务器,在浏览器中输入http://localhost,页面显示“Hello JFinal !”即表示JFinal框架集成成功,可以开始使用。

下面的步骤5)~9)将介绍如何将Shiro集成到Web工程中,并完成与JFinal的整合。

5)将Shiro相关的jar包导入到Web工程中

将开发相关的shiro-all-1.2.1.jar和JFinalShiroPlugin-1.0.jar拷贝到WebRoot\WEB-INF\lib目录下。

6)修改web.xml文件

在web.xml文件配置Shiro Servlet过滤器从而实现Shiro与Web应用的集成,代码如下:

需要注意的是,我们在web.xml中分别配置了JFinal和Shiro的過滤器,一定将要Shiro 的过滤器放在前面,否则会报错org.apache.shiro.UnavailableSecurityManagerException。

7)编写Shiro.ini文件

8)重写shiro.ini文件中指定的ShiroDbRealm文件

Realm在Shiro安全框架中有着举足轻重的作用,在执行授权和认证时,Shiro会从Realm中查询账户信息及其对应的权限。程序员可以使用Shiro框架中内置的Realm,也可以继承AuthorizingRealm类实现自定义的Realm。

9)利用Shiro框架实现认证与访问控制

通过以上几个步骤,成功的将Shiro框架集成到Web项目中并且完成了与JFinal的组合,接下来就可以利用Shiro来对Web应用系统进行认证并实现访问控制了。用户认证的部分代码如下:

4 结束语

在进行企业级Web应用开发时,框架的选择非常重要。选用优秀的而框架不仅可以节约开发成本,缩短开发周期,提高开发效率,而且更方便系统后期的维护。本文在深入研究JFinal和Shiro开源框架的基础上,通过对Web应用分层模型的分析,提出基于JFinal+Shiro构建Web应用系统的解决方案。这种方案不但能够完美替代传统的SSH2组合框架,还能实现企业级Web应用的授权和认证,已应用于多个项目中。

参考文献:

[1] jFinal[EB/OL]. http://www.jfinal.com.

[2] Apache Shiro[EB/OL].http://shiro.apache.org.

[3] 杨宁, 刘丹军. 基于JFinal框架的Java Web应用开发研究[J]. 电脑知识与技术,2014,10(7):1440-1443.

[4] 鲁杰, 程家兴, 段震. 使用框架构建Web应用系统[J]. 计算机技术与发展, 2004, 14(5):110-112.

[5] 李峰, 刘彦隆. 基于SSH框架与jQuery技术的JavaWeb开发应用[J]. 科技情报开发与经济, 2010(6).

猜你喜欢
模式框架
广义框架的不相交性
WTO框架下
思想政治理论课实践教学研究述评
一种基于OpenStack的云应用开发框架