Struts框架

2024-10-09

Struts框架(精选8篇)

Struts框架 篇1

1 引言

网络及信息安全越来越重要,如何保证信息的保密性。就涉及到权限管理问题。RBAC模型作为一种实用的权限存取控制策略。其基本思想通过在用户和权限之间引入角色这个中介,为用户授予角色,为角色授予权限,用户通过角色间接访问资源,实现了用户与权限的逻辑分离。

通过分析现有的权限管理系统,可以看出他们通常是针对某一个应用系统单独开发,与所在应用系统联系紧密,要考虑和解决的是系统当前的问题。这类权限管理系统一般能够满足应用系统当前的需求,但是随着应用系统开发的不断深入、实际需求的不断变化,都会暴露两个问题:①适应性差;②紧耦合、难以应用。

在某油田企业信息系统的开发中,本文结合Struts框架和RBAC权限管理,提出了一个基于Struts框架的访问控制策略。在容器层实现了系统安全性和程序业务逻辑的彻底分离,方便系统扩展,为系统运行提供身份验证与资源授权功能。在用户层和权限层增加了一个角色层,用户与访问权限的逻辑分离和构造角色之间的层次关系,从而方便了数据和系统资源的安全管理。具体实现时通过将JSP页面映射为一个特定的权限,一个用户映射为一个或者多个角色,从而实现角色的权限认证。在浏览器层利用树形结构的表现形式,用户登录后为用户返回被分配权限菜单。结合Struts开发框架快速实现了基于MVC设计模式的Web应用程序结构。

2 基于角色的访问控制(RBAC)模型

权限问题究其本质是一个“主体对于客体做什么操作”的问题,其中主体代表了可以向应用系统发出应用请求的任何实体。客体代表了权限系统中需要被保护的资源,显然,客体(资源)加操作的组合就代表了权限。RBAC(Role Based Access Control,基于角色的访问控制)[1,2]模型引入角色将用户和访问权限逻辑分离,根据用户所在岗位和工作职责设置角色,并对角色授予相应的访问权限,然后再为用户的组分配角色。RBAC提出角色的基本概念是:分配给每一个用户合适的角色,每一个角色都具有其对应的权限;一个用户可以有多个角色,一个角色也可以有多个用户;一个角色可以有多个权限,相同的权限也可以赋予多个的角色;根据实际需要还可以给用户分组等。角色是RBAC模型的核心,系统根据管理中相对稳定的职权和责任来划分角色,每种角色可以完成一定的职能。RBAC基本模型如图1所示:

2.1 基于MVC设计模式的Struts框架

Struts是由Apache开源软件联盟提供的一套用户构建Java Web应用程序的框架。采用MVC(Model-View-Controller)设计模式[3],希望分离Web程序的表示层、控制层和后台功能层,使程序员将更多精力投入后台的业务逻辑设计,而不是底层的Web基础架构。

(1)控制器。

在Struts中,所有的用户请求都由ActionServlet接收,然后根据用户请求的不同样式到struts-config.xml文件中查找相应的子控制器,也就是Action。Action执行具体的控制器功能,并调用相应的后台模型完成业务逻辑。

(2)视图。

视图在软件中通常是用户交互的界面,用于表示数据和提交用户对软件的请求。Struts中使用JSP作为主要的视图工具。这些JSP程序中不包含业务逻辑和模型信息。

(3)模型。

模型用于处理软件要涉及的业务范围,主要包括业务数据模型和业务逻辑模型。Struts中主要依靠Action、ActionForm、EJB或者JavaBean来处理业务逻辑。

2.2 基于RBAC模型的设计

在模型中可定义为一个或多个角色的集合。它可拥有多个角色,但是对于不是拥有一个角色所有权限的问题,比如拥有角色的部分权限,引入特有权限的概念。可直接分配给组或者用户,而不是通过角色分配。用户、组、角色和权限之间是多对多的关系[4]。用户表USERID和用户组USERGROUPID通过用户所属表建立对应关系。用户组的所有角色被存储在用户分配表中,用户分配表通过ROLEID对应用户组的角色,在角色表中,通过ROLEID对应权限分配表中的MENUID,在权限分配表中以MENUID对应权限表的MENUID。

基于以上方式实现的RBAC,很容易通过修改Tree菜单表,角色菜单表,角色表的记录将权限管理应用于信息系统的扩展,尽可能的降低了权限审查与信息系统之间的耦合性。

3 系统安全模型的实现

该信息系统同时在线的人数不是很多,不涉及到海量数据的存取,但是岗位责任分工和对业务数据的敏感性,对系统安全性提出较高的要求。本文为基于Struts结构的信息系统设计了结构安全模型,如图3所示。系统选用Tomcat作为程序运行的Web容器,数据库使用Oracle9i。

3.1 客户端安全与实现

面向用户采用了基于角色权限的TreeView动态菜单,在用户界面层中限制用户对敏感资源的访问。

(1)TreeView树形结构是一中较为广泛的模型,通常使用它来表示多级层次的结构关系。例如在Windows的资源管理器左侧就是一个非常典型的TreeView。可以展开收缩目录,可以创建删除目录。TreeView树型结构的特点:①多对一的关系,也就是每个节点的父结点是唯一的。②无限制的多极层次结构,例如在系统的目录树中,我们可以在目录中创建子目录,目录树没有层数得限制。③每个节点含义相同。④所有的节点必须是唯一的,TreeView用于管理多对一以及层次数据关系,多对多关联关系不是TreeView结构所能处理的。一位节点可能有多个字节点,这是一对多关系,同时多个节点也同时隶属于一个父结点。

(2)按照系统功能和企业岗位的划分在数据库端定义角色,建立用户操作菜单与数据库角色映射关系的数据库表。在本系统中用JavaScript实现一个树形菜单在权限管理系统中代表权限业务功能菜单。构造树形菜单主要是向tree对象添加分支节点和叶节点,实现时用面向对象的技术,构造的树形结构包含了一组对象,对象都实现了接口,这些对象的方法根据对象类型不同提供不同的功能。系统管理员对整个系统的菜单进行控制,同时给角色分配权限,通过角色和用户组,用户获得相应权限。用户登录后显示该用户被分配的菜单。

3.2 Web容器层安全

符合J2EE规范的Web容器提供声明性安全和编程性安全两种安全机制。

(1)配置Web应用程序的发布描述符Web.xml,设置程序使用Web容器所提供的表单认证方式,以及受保护Web资源列表和能够访问这些资源的安全角色清单:

为了防止未经授权的访问,可以使用Web应用的部署描述符文件声明某些URL需要保护。还可以指定服务器用来识别用户的验证方法。为了保护网络数据,可使用部署描述符文件来确保某些URL只能利用SS来访问。

(2)用户登录,系统将用户名和密码写入服务器端的session,用于以后的角色权限判断,并通过Struts-config. xml配置文件找到一个预先指定的JavaBean来自动接收客户端请求中包含的表单数据,然后将用户的登录请求发给指定的一个ActionBean进行处理,ActionBean通过调用相应的JavaBean进行处理后,在这里根据用户所属的用户组,该用户组分配的角色,实现角色的权限认证,即根据用户的角色和请求的Action 进行判断,角色权限表读出相应的Tree菜单并返回对应的ActionForward对象给控制器ActionServlet。最终ActionServlet根据ActionForward对象信息,查找配置文件中的映射信息,将原客户HTTP请求再次转发到相应的视图JSP页面,最后发送响应回客户端。实现了用户登陆时读取用户对应的菜单权限,一次性判断,生成主页面,实现了用户对页面访问的权限控制。

3.3 数据库层安全

采用每个用户独立的数据库连接。用户登陆验证后,根据用户名和密码实例化一个独立的JDBC数据库连接对象,并与当前该用户对应的HTTP会话对象绑定[5]。当Struts模型层的JavaBean与数据库进行交互时,首先从会话对象中取得该数据库连接对象的引用,利用该连接对象访问数据库。尽管采用每个用户独立的连接比数据库连接池损失一定的性能,但是不同用户拥有的数据库角色权限严格限制了用户对数据库对象的访问,并且用户对数据库的操作也能被数据库的审计日志中真是完整地记录下来。

3.4 审计追踪机制

审计追踪机制是指系统设置相应的日志记录。特别是对数据更新、删除、修改的记录,以便日后查证。日志记录的内容包括操作人员的名称、使用密码、用户的IP地址、登陆时间、操作内容等。Log4j是Apache的一个开放源代码项目,是强有力的日志操作包。通过Log4j可以控制日志信息输送到日志文件。

4 结束语

本文讨论了把基于角色的权限控制RBAC和Struts框架的前端控制器相结合,突出了一种适合基于Struts框架的Web的信息系统的RBAC实现方式。整个实现方案方便、可靠、灵活并有效,有效的实现了系统安全性和程序业务逻辑的分离,提高了系统的可扩展性。

参考文献

[1] Sandhu R S,Cogne E J,Feinstein HL,etal.Role Based Access Control Models.IEEE Computer,1996,29(2):38~47.

[2]严悍,张宏,许满武.基于角色访问控制对象建模及实现.计算机学报,2000,23(10).

[3]孙卫琴.精通Struts:基于MVC的Java Web设计与开发.北京:电子工业出版社,2004.

[4].张祖平,王磊.基于多种模式的权限控制技术研究.计算机工程,2006,32(1)

[5]刘孝保,杜平安.基于角色的访问控制在多应用层CIMS中的应用.四川大学学报(工程科学版),2007,39(2).

Struts框架 篇2

#其实这个问题是由于一个远程命令执行引起的内网渗透#

#问题出在机锋市场合作厂商管理后台:#amarket.channel.gfan.com/system/LoginAction!login.action#

#权限很大#

#先反弹个shell出来吧#

#我现在在10.8.8.0这个段中,既然是root权限,就不考虑提权问题,直接抄刀nmap内网走一圈#

#Nmap done: 256 IP addresses (136 hosts up) scanned in 852.68 seconds#

#总共有136台机器在线,机器还是蛮多的,其他段如果在扫完,估计都得天亮了!#

#本想在内网渗透下去,但是想了想被查水表就不好了#

#安全无小事#

修复方案:

新年快乐,厂商快拿红包来!

升级Struts框架

Struts框架 篇3

关键词:软件架构,Struts,网上购书系统

网上购书是在Internet开放的网络环境下,基于浏览器/服务器应用方式,实现,消费者的的网上交易和在线电子支付的一种新型的商业运营模式。网上购书将传统的购书流程电子化、数字化,一方面以电子流代替了实物流,可以大量减少人力、物力;另一方面突破了时间和空间的限制,使得交易活动可以在任何时间、任何地点进行,极大地方便了最终消费者,使您的购书过程变得轻松、快捷、方便,从而大大提高了效率。

目前大多数网上购书系统是基于两层体系结构来进行设计和开发的。随着Internet的飞速发展,传统的两层体系结构面临着严峻的挑战,其中最为突出的问题是开发负担重、维护困难等。本文针对目前网上购书系统所面临的问题,基于J2EE框架,采用框架技术及设计模式,设计开发了一个网上购书系统。系统具有高可靠性、可扩展性和可重用性的特点。

1 struts框架技术介绍

Struts是目前比较成熟的Web开发框架。它利用ActionForm Bean来进行View组件和Controller组件之间表单数据的传递。Struts框架把View组件接收到的表单数据保存在ActionFormBean中,并把它传递给Controller组件。而Controller组件可以对ActionForm Bean中的数据进行修改。JSP文件使用Struts标签读取修改后的ActionForm Bean的信息,重新设置HTML表单。

2 系统设计

2.1 系统功能结构

网上购书系统的系统功能结构见图1。

对一个电子商务网站而言,拥有一个完善的后台管理系统是必不可少的,也是管理和维护该网站的核心所在。书店管理子系统提供了管理员管理书店的各项功能,

例如对书店管理了系统这一模块就可以分为:注册用户的身份进行验证、对图书目录的管理等。书店管理子系统从功能上可以划分为以下几个模块:

2.1.1 注册用户管理

对注册用户身份的真实性进行验证。

2.1.2 图书目录管理

可以查看图书的详细信息和实际库存数量。主要处理新书入库、书目变动等。

2.1.3 客户订单管理

可以修改订单状态,如是否己经结算,是否已经发货,是否已经结单,删除超期未付款的订单。

2.1.4 预约信息管理

查看用户的预约新书信息。这样可以及时根据用户登记的情况,组织库管人员订购书籍,最大程度的满足用户需求。

2.2 网上购书系统的框架设计

基于上述分析,在网上购书系统的开发中采用改进后的sturts框架,利用控制器来控制系统的流程、产生视图、调用业务组件执行业务逻辑,用户界面的生成由XML和XSL负责,业务逻辑交给后端的E-JB和JvaBaena组件。这样,系统的表现逻辑和业务逻辑分离,简化了软件开发、提高了系统的性能,使开发出的应用具有良好的可维护性、可扩展性。

我们将系统设计为四层Web体系结构。这四层分别是客户层、Web层、业务层和资源层。如图2所示。其中Web层和业务层在应用服务器上实现,资源层放在数据库服务器上。控制器控制系统的整个流程。它读取配置文件,将请求映像到相应的业务组件并执行业务逻辑。视图部分封装在XML文档中,并为不同的访问设备提供不同的样式表以支持多种访问设备。模型部分包括系统中所有的业务逻辑和数据映像,采用JvaBaaen和EJB组件技术实现,模型部分通过标准的JDBC访问数据库。

3 系统流程分析

所谓系统流程,就是用户使用本网上书店系统的工作过程。系统流程分析是系统分析的重要组成部分,也是系统设计的重要基础。本系统的流程是从首页开始,对用户身份进行认证,然后分别赋予不同的权限。如图3所示。

系统用例图描述了顾客和各类信息管理员通过登录本模块,进入不同的系统界面或管理模块对其所管理的模块进行相应操作。图书信息管理员通过图书管理模块可以添加、删除、修改书的种类和书;特价书籍信息管理员通过特价书籍信息管理模块可以添加、删除、修改每天的特价图书;用户管理员通过用户管理模块可以创建、删除、修改不同信息管理员的用户名和密码;订单管理员通过订单管理模块负责查看订单,检查库存是否有订单的图书,然后将图书发送给顾客,若库存不存在该图书,则需要及时联系用户和填写图书请购单;顾客反馈信息管理员通过顾客反馈信息管理模块查看每个客户的反馈意见,及时处理不满意见和填写不满意见处理表。同时也反应了顾客通过Internet网访问网上书店可以进行的操作。首先顾客需要登录网上书店系统(即注册为会员)可以选购图书,如果不是会员但可以方便的查看图书的信息、了解每天的特价书,会员可将选购的图书放入购物车里,并对购物车进行添加、删除、修改等操作,还可以填写反馈意见。见图4系统分析用例图。

3 网上书店系统实现

3.1 数据模型设计

根据前面的需求描述,本系统中所涉及到的可以抽象出来的数据模型有:用户(User),图书(Book),订单(Order),订单明细(也就是购物车条目:Order_detail),这些数据模型在系统中相互联系。

3.2 创建数据表

用SQL管理器,创建数据库:shoppingcart,默认编码设置为:UTF8

3.3 系统模块设计

3.3.1 用户注册

此模块通过如下几个主要组件来完成:

在注册时,使用Struts的Validator进行了简单的数据有效性验证。

3.3.2 浏览商品

该模块通过:display.jsp GetAllBookAction BookFindServiceImpl BookDAOHibernate来实现的;

3.3.3 添加商品到购物车

在图书浏览页面,点击“加入购物车”即可购买物品。

也是通过这段代码,将BookId传入相应Action进行处理。在Action里边,通过BookId查询出对应的图书信息,然后加入到一个List里边,最后将List加入到Session里

3.3.4 从购物车移除商品

该模块主要由DelBookFromCartAction CartServiceImpl来完成对应的删除功能:

3.3.5 提交订单

该模块由:orders.jsp PayOrderAction来完成。

3.3.6 系统测试

部署成功后,启动服务器,在浏览器输入地址:http://localhost:shoppingbook即可测试。经测试,系统基本符合要求,满足已有的需求。

4 结束语

1)熟悉了Struts,Spirng与Hibernate的集成。Struts在整个应用中,充当一个Controller的作用,而Spring充分发挥它的事务管理功能,利用Ioc注入Bean,极大的减轻了对象的耦合。Hibernate作为持久层的一个工具,将对象映射为一个数据表,开发者要做的只是把一个对象进行Save就行了,其下层则完成由Hibernate来完成,不仅提高了开发效率,也减轻了开发的负担。在本次实验中,Struts对Action的控制,我并没有交由Spirng来管理,但实际上,可以使用Spring的代理器来对Action进行控制。综合起来说,使用这三个框架,使得应用分层很清晰。也极易进行扩展,维护也很方便。并且好多细节的部分,只要你配置一下就可以轻松实现对应的功能,比如Struts的Validator。但是,对于其他很多更深层的应用,些文还未涉及到,我也希望大家能跟我一起共同研究探讨,一起学习。

2)从系统需求分析、建模设计到最后的模块开发、部署测试,我都严格按照软件开发的步骤来进行,这不仅能够增强了我对软件开发流程的理解,更重要的是,明白了各个步骤在开发过程中的重要性。我认识到,一个软件的成功与否,绝大部分要归功与你的需求分析与应用系统的架构设计。如果需求不当,用户不会满意;系统架构设计不当,不仅难以维护,更不易于扩展。

3)整个项目开发过程中,其实碰到了很多问题,这也增加了我解决问题的能力。如何利用现在的资料以及网络和个人的经验来快速排除错误,也是专业人员的一大素养。而这些只有在开发过程中,才能碰到。并且会使你对相关的技术理解得更加透彻。

参考文献

[1]刘晓华.ZJEE企业级应用开发[M].北京:电子工业出版社,2008.

[2]陈华军.ZJEE构建企业级应用解决方案[M].北京:人民邮电出版社,2002.

[3]何成万,余秋惠.MVC模型2及软件框架surtst的研究[J].计算机工程,2002(6).

[4]Tunrer J,Bedell K.SturtsKiekstart[M].孙勇,译.北京:电子工业出版社,2004.

MVC框架下的Struts技术 篇4

关键词:Web技术企业级应用,MVC设计模式,Struts技术

1 MVC设计模式概述

MVC设计模式是在20世纪80年代由Xerox PARC首先提出的,它的英文缩写为Model-View-Controller。它代表了三层模型:Model(模型),View(视图)和Controller(控制器)。MVC至今已被广泛地应用于软件架构的设计中,是Sun公司J2EE采用的关键模式之一,它推动着软件开发设计不断地前进发展。MVC的模式框架如图1所示。

1.1 Struts框架概述

作为MVC框架模式的一个具体实现,Struts不仅很好地将核心的三大组件分别应用到了基于MVC模式下开发的Web应用中去,而且在各层之中,Struts还整合了一些优秀的Java技术。

在逻辑表示层中,Struts整合了JSP, Velocity Templates, XSL等优秀的技术。

在逻辑业务层中,Struts又与JDBC、OR映射以及EJB等数据库访问技术相结合。

在逻辑控制层中,Struts有着自己强大的控制器组件,它们位于Struts的视图组件和模型组件之间,发挥着强大的协调作用。这样一来,Struts也解决了在Web中一直难于解决的关于业务逻辑和表示逻辑耦合度太高的问题,提高了Web系统的可维护性、可扩展性、可移植性和组件的可复用性。Struts的工作原理如图2所示。

1.2 Struts控制器

Struts的控制器组件由一个中心的Servlet和一些Action类实现,Struts的控制器组件的主要任务包括: (1) 接受用户请求; (2) 根据用户请求,指派特定的模型组件执行业务逻辑; (3) 得到业务逻辑的执行结果; (4) 根据执行结果和当前状态,选择下一个视图组件返回给用户。

控制器组件负责接受来自用户或其它组件的输入,处理数据,选择与转发到下一个视图,根据数据的处理结果可能还需要更新模型组件。

1.3 Struts视图组件

MVC模式中的视图负责实现动态内容的显示。在Struts框架中,视图主要由JSP页面构成。也许在以后,JSF会成为Struts视图组件的另一种不错的选择。

除了JSP页面,其它的视图组件还包括有:HTML文档、JSP定制标记、JavaScript和样式表、多媒体文件、消息资源、ActionForm。

其中,ActionForm是Struts框架包的核心组件之一,是Struts在视图上的核心特点的体现。ActionForm本质上是一种JavaBean,是专业的用来传递表单数据的DTO。因为ActionForm专门用来处理表单数据,因此根据表单数据的处理特点设置了一些特殊的功能,包括用于数据验证的validate()方法和用于数据复位的reset()方法。

1.4 Struts模型组件

模型组件是Struts框架理论中一项特殊的内容。由于Struts框架是基于MVC模式实现的,因此数据持久化逻辑部分应当在模型组件中实现。但是Struts框架是一个彻底的表示框架,因此也就没有在实际的模型层组件中实现,也就是说Struts框架将MVC中的模型部分委托给开发者选择任意的持久层来实现。

2 在Web中的应用

下面就通过一个具体的实例来说明Struts框架是如何成功地构建一个员工登录系统的。在员工登录网站时,应该首先进行对身份的验证,如果身份信息在数据库中为不存在或者是不合法的状态,则系统会处理这种错误。

具体使用Struts框架时,应该对应于以下的几个部分。

2.1 视图组件处理

员工登录模块中的视图组件实现了"登录"表单,其对应的视图组件文件为LoginActionForm.java,实现了表单数据验证:

2.2 控制器组件处理

LoginAction控制器从表单接受用户登录所用的编号和密码,进行数据库查询。如果员工身份合法,则可以继续访问网站;如果非法则回到登录页面。

2.3 数据持久化处理

此处借助Hibernate进行JDBC驱动、URL、数据库用户等的配置。

2.4 struts-config.xml处理

员工登录表单对应的组件类:LoginactionForm.

员工登录系统的请求:

参考文献

[1]李万龙, 吴雪莉.基于Struts框架的Web应用程序的实现[J].计算机技术与发展, 2006 (4) .

[2][美]Ted Husted, 黄若波, 程峰.实战struts[M].程繁科译.北京:机械工业出版社, 2005.

Struts框架 篇5

目前在线考试系统的开发方法很多,但多数系统在开发中存在系统结构复杂、代码重用率低、网页设计和软件开发相互制约导致开发效率低下等不尽人意的地方。在系统设计过程中,综合考虑系统结构、开发周期以及代码重用等方面,决定采用先进的J2EE技术来开发该系统,并全面贯彻MVC(Model-View-Controller)的开发模式。而Struts作为一个实现良好的MVC框架,很好地将应用逻辑、处理过程和显示逻辑分成不同的组件实现,对大型的复杂的Web系统而言,可大大方便代码开发和管理,提高开发效率。正是鉴于此特性,在设计在线考试系统时,采用了基于Struts框架的系统构建模式。

2 Struts体系结构

作为一个实现良好的MVC框架,Struts对Model、View和Controller都提供了对应的实现组件,图1所示为Struts体系结构图。下面从模型、视图、控制来介绍Struts的体系结构。

视图(View)就是一系列提交到客户浏览器进行显示的JSP文件,是用户看到并与之交互的界面。在这些界面中没有业务逻辑,也没有模型信息,只有标签。

模型(Model)表示应用程序的状态和业务逻辑,通常由JavaBean或EJB组件来实现。

控制器(Controller)的作用是从客户端接受请求,并且选择执行相应的业务逻辑,然后把响应结果送回到客户端。在Struts中Controller由ActionServlet类和Action类来实现。ActionServlet主要负责接受HTTP请求信息,Action类负责调用模型的方法,更新模型的状态,并帮助控制应用程序的流程。

3 在线考试系统

鉴于主观题的主观性,目前无法实现系统自动判卷,所以本系统只针对客观题部分进行单项选择形式的考试。一般情况下,单选题往往在4个供选的答案A、B、C、D中选择唯一正确的答案。

3.1 系统功能模块

在线考试系统功能模块图如图2所示。

各模块实现的功能如下:

(1)用户管理模块

用户管理由管理员来进行管理,通过该模块,管理员可以通过管理界面添加或删除用户。

管理员:在此系统中只有一个管理员,即系统管理员。具有一般用户所没有的权限,即具有管理一般用户和试题管理功能。

一般用户:主要是指考生,即学校的学生和企事业单位的培训对象等。

(2)试题管理模块

通过该模块,管理员可以完成如下操作:试题录入、试题修改、试题删除。

(3)在线考试模块

该模块完成考生的考试和成绩评定。进入在线考场是本系统最重要的部分之一。因为一个系统如果涉及到现实的话,就必须考虑得十分周到、完善。考生登录后,只要选择考试科目以后,就可以调出试卷进行在线考试。系统所选的题是随机选出的,这样就会使每个考生的试卷都不同。考生的其答题信息通过单选按钮选择答案来反映。考试结束采取自主交卷的方式予以实现。系统会在考试时间结束前1分钟提示考生交卷。

(4)成绩查询模块

该模块实现登录用户的成绩查询功能。

3.2 系统开发流程

采用B/S模型的多层框架结构开发的在线系统,MVC模式主要对应应用服务器的部分,前端响应用户的请求,后端负责与数据库服务器之间的数据变换,中间为应用逻辑层,负责具体业务的处理。现依据Struts框架的3个基本组成部分:视图、模型和控制器,简要描述系统的设计过程[4]。

3.2.1 视图设计

应用系统的用户界面通常由JSP页面组成。在系统的6个模块中,各类信息的添加、删除、修改和浏览都通过JSP页面进行表现。系统在处理每个数据表示主要是用两个JSP页面进行表示:一个页面用于数据的添加、删除、修改;另一个页面用于数据的浏览。

3.2.2 构建模型

Struts应用框架通常预先为每个应用所需要的输入表单创建一个ActionForm Bean。如果这些bean定义在ActionMapping配置文件中,Struts控制器Servlet将自动执行这些预先设定的操作。因此,在系统开发中,首先为每个模块建立相应的ActionForm Bean,再根据每个模块的实际功能为每个Bean定义用户操作状态和视图中所需要显示数据信息的参数,视图可以通过操作状态的不同进行不同的界面表示。

3.2.3 构建控制器

在Struts应用框架中,中心控制器(ActionServlet)接受所有来自客户端的请求,并根据系统的配置文件Struts-config.xml制定用户HTTP请求到其他Action对象的路径。中心控制器是由Struts框架本身所提供,在系统开发中无需对ActionServlet进行再开发,而负责具体业务处理的Action类则是系统开发的重点。

在视图、模型、控制器对象设计完成后,需要编辑两个配置文件:web.xml和struts-config.xml,通过它们配置Struts系统中各个模块之间的交互。

3.3 应用

为了能够清楚地描述Struts在系统开发中的应用,将以考生登录系统通过验证后进入考试界面,考试完成后提交试卷,考生根据考试序号查询成绩为例进行较详尽的说明。

在该应用中,主要事件包括:

(1)在系统主界面提供用户登录和管理员登录链接,在用户登录界面,提示输入用户名和密码,对用户在客户端输入的数据进行简单的数据格式验证,若登录成功,转入考试界面,否则给出错误提示信息,重新登录。

(2)在考试界面,考生抽取考题,考题以单向选择题的形式给出,考生在表单中选择题目答案,考试完成提交表单。若提交表单成功,则转入确认界面,显示考试完成信息并提供查询成绩链接。

(3)由考试完成界面转入成绩查询界面,用户输入考试序号后,查询出该次考试的成绩。

3.4 具体设计

3.4.1 数据库

针对该应用,需在数据库中创建两张表:QUESTION_TABLE和ADMIN_TABLE,各表结构如表1,表2所示。

3.4.2 设计模型组件

在Struts框架中,模型组件负责完成业务逻辑。在该应用中,模型组件包括一个实用类DbConnect和3个JavaBean:AdminBean,TestBean和QuestionBean。

实用类DbConnect负责建立和数据库的连接,所提供的connectToDb()方法具体来实现和数据的连接并返回这个连接。AdminBean代表管理员信息,包括Adminname和Adminpwd这两个属性。QuestionBean代表题目信息,包括Question_ID、Question、Answer、Difficulty等几个属性。这3个JavaBean提供了相应的get/set方法,此外还负责查询以及向数据库中对应的表添加/查询记录。

3.4.3 用户界面

用户界面是Web应用和用户的窗口,既可以接受用户的输入信息也可以向用户输出信息。表3列出了该应用中用到的用户界面及其说明。

为保持该应用中所有界面风格的一致性,在设计上述这些界面的过程中,除了使用标准的JSP语句外,还使用了Struts的Titles框架来创建复合式的JSP页面,使所有界面具有相同的页头和页脚。

3.4.4 设计ActionForm

ActionForm Bean用于在视图组件和控制器组件之间传递HTML表单数据。通常每个HTML表单对应一个ActionForm Bean,每个ActionForm的validate()方法用于实现对用户输入数据进行格式和语法检查。在该应用中包含3个ActionForm Bean:LogonForm、TestForm和SearchscoreForm。

3.4.5 设计Action和Action映射

在Struts框架中,Action实现各个事件的流程控制,Action映射决定Action与其他web组件之间的关联关系。表4列出了该应用中用到的Action、每个Action的入口(调用Action的组件)、传递给Action的ActionForm以及每个Action把请求转发到的目标组件即出口。

图3给出了该应用中Action组件与其他组件的映射关系图。

上述所有Action组件需要在Struts的配置文件strutsconfig.xml中配置其映射关系。

4 结语

Struts是一个实现良好的MVC框架,在现代软件开发中,广泛应用于大型Web应用系统的开发。基于Struts框架的在线考试系统的顺利开发,也证实了Struts框架是一种非常有用的J2EE/MVC实现方式。该考试系统将为各院校和培训机构提供一个测试平台,给教师带来了方便,提高了工作效率,具有很好的推广价值和应用前景。

摘要:介绍了Struts概念和体系结构,阐述了Struts的工作原理,给出了在线考试系统各个功能模块以及整个系统基于Struts的开发流程,并通过一个应用示例,介绍Struts框架在系统开发中的应用。

关键词:Struts,MVC,Web,在线考试系统

参考文献

[1]谢峰,梁云杰.基于Java的Web应用开发[M].北京:高等教育出版社,2009.9:140-144.

[2]王建文,王敏.基于Struts框架的油田信息管理系统研究与展望[J].计算机工程与设计,2009,30(13):3231-3233.

[3]李少辉,别红霞.基于Struts的Web系统开发技术及论文在线系统实现[J].计算机工程与科学,2009,31(8):130-132.

[4]刘磊,朱敏,徐彦军.基于Struts框架的Java Web应用开发技术[J].计算机应用与软件,2007,24(5);94-96.

Struts框架 篇6

相对于Struts1框架而言, Struts2框架是一个全新的框架, 尽管两个框架在名字上相似, 但Struts2框架和Struts1框架在体系上的差别非常大。实际上, Struts2并非一个全新的框架, 因为Struts2和另外一个MVC框架Web Work非常相似, Struts2是基于WebWork核心的。Struts2更像是一个Web Work的升级版本, 从Web Work到Struts2到是一次平滑的过渡。

1 Web Work框架

Web Work框架来自另一个优秀的开源组织opensymphony。Web Work是建立在名叫Xwork的项目基础之上的。

Xwork简洁、灵活且功能强大, 它是一个标准的Command模式实现, 并且完全从web层脱离出来。Xwork提供了很多核心功能:前端拦截器 (interceptor) , 运行时表单属性验证, 类型转换, 强大的表达式语言 (OGNL, the Object Graph Notation Language) , Io C (Inversion of Control反转控制) 容器等。

Webwork2建立在Xwork之上, 处理HTTP的响应和请求。Webwork2使用Servlet Dispatcher将HTTP请求变成Action (业务层Action类) 、session (会话) 及application (应用程序) 范围的映射, request请求参数映射为Webwork2支持的多视图表示, 视图部分可以使用JSP、Velocity、Free Marker、Jasper Repots、XML等[1]。

2 Struts1框架

Struts1的视图部分由JSP实现。Struts1提供了丰富的标签库, 通过这些标签库可以减少脚本的使用。Struts1提供了与Ties框架的整合, 通过Ties框架提供的模板机制, 可以提高网页的可重用性和可扩展性。但Struts1所支持的表现技术仍非常单一。Action Form Bean作为数据传输对象 (DTO) , 用于在视图和控制器之间传递数据。Action FormBean通常被划分到视图层。

Struts1的控制器由两部分组成:系统核心控制器和业务逻辑控制器。系统核心控制器为Action Servlet, 它继承Http Servlet类, 负责接收所有的HTTP请求, 然后根据用户请求决定是否需要调用业务逻辑控制器。如果需要调用业务逻辑控制器, 则将请求转发给Action处理, 否则直接转向请求的JSP页面。业务逻辑控制器是用户自定义的Action类, 需要继承系统的Action类, 负责调用模型方法, 充当用户请求和业务逻辑处理之间的适配器[2]。

Struts1的程序运行流程如图1所示。

3 Struts2框架

Struts2使用了Web Work设计核心, 而不是Struts1设计核心。Struts2框架与Web Work框架相比, 在很多方面仅仅是改变了其在Web Work下的名称。图2为Struts2体系概图。

从处理流程上看, Struts2 (Web Work) 与Struts1类似, 它们的核心都由控制器组成。Struts2的控制器也由两部分组成:核心控制器Servlet Dispatcher和业务逻辑控制器Action。

Struts2的处理流程如下:

浏览器发出请求。

核心控制器Filter Dispatccher根据请求决定调用合适的Action。

拦截器链自动对请求应用通用功能, 如workflow、validation、或文件上传等功能。

回调Action的execute方法, 该方法获取用户的请求参数, 并调用业务逻辑。

Action的execute方法根据执行结果返回result值, 在struts.xml配置文件中, 指定result值和视图资源之间的映射关系。Struts2支持的视图资源除了JSP以外, 还有Velocity、Free Marker等。

3.1 核心控制器Servlet Dispatcher

核心控制器是一个Filter, 由框架提供。当用户的请求到达时, 它会过滤所有的用户请求, 如果用户请求以Action结尾, 该请求将被转入Struts2框架处理。Struts2框架根据请求*.action的“*”部分决定调用哪个Action。Action和其实现类之间的对应关系都定义在struts.xml文件中。Struts2框架提供了一系列拦截器, 这些拦截器负责将Http Servlet Request请求中的请求参数解析出来, 传入到Action中, 并回调Action的execute方法来处理用户请求。

Interceptor (拦截器) 将Action共用的行为独立出来, 在Action执行前后运行。这其实就是AOP (Aspect Oriented Programming, 面向方面编程) 。Interceptor将很多功能从用户的Action中独立出来, 减少了Action的大量代码, 独立出来的行为具有很好的重用性。Struts2的许多功能都是由Interceptor实现, 可以在配置文件中组装Action用到的Interceptor, 它会按照指定的顺序, 在Action执行前后运行。这就将需求功能从不相关类中分离出来;同时, 能够使得很多类共享一个行为, 一旦行为发生变化, 不必修改很多类, 只要修改这个行为就可以。这种处理方式是典型的AOP处理方式。

3.2 业务逻辑控制器Action

业务逻辑控制器Action, 由用户自定义。与Struts1的Action不同, Struts2的Action完全与Servlet API分离, 因而该Action更容易测试。Struts2中的Action不再像Struts1中的Action那样需要继承Action父类, 它可以无需实现任何接口, 一个POJO就可以充当Struts2的Action。下面是一个以POJO作为Action的例子:

从以上代码可以看出, 这个Action与POJO的区别就是多了一个无参数的execute方法。在Action的execute方法中, 不需要任何参数, 这样设计的一个明显好处是, 不需要把整个Web应用部署到Web容器中, 即可对所写的Action类进行测试, 这给开发人员带来了极大方便。由于它不依赖于servlet请求, 更增强了它的可移植、可重用性[2]。

Struts2中Action的属性可以实现和Struts1中Action Form的属性相当的功能, 可实现表单数据的封装, 但它们实现的方式是不同的。在Struts2中, 是利用框架提供的Interceptor来解析用户请求, 并将请求值赋给Action的对应属性。

为了让用户开发的Action处理类更规范, Struts2提供了一个Action接口, 这个接口定义了Struts2的Action处理类应实现的规范。另外, Struts2还提供了Action类的实现类Action Suport。该类提供了许多默认方法, 包括获取国际化信息的方法、数据校验的方法、默认的处理用户请求的方法等, 用户的Action类继承该类后, 将大大简化Action的开发。

Struts2提供了一个Action Context类, 通过该类可以访问Servlet API。利用Action Context来访问Servlet API, 不能直接获取Servlet API实例, 为了在Action中直接访问Servlet, Struts2还提供了一系列接口:Servlet Context Aware、Servlet Request Aware、Servlet Response Aware, Action类实现这些接口, 可获得Servlet API实例。

3.3 Struts2视图层

Struts2的视图部分通过大量的标签提供支持。Struts2标签库是Struts2的重要组成部分, Struts2标签库提供了非常丰富的功能, 这些标签库不仅提供了表现层的数据处理, 而且提供了流程控制功能、国际化、Ajax支持等功能。

与Struts1标签相比, Struts2标签使用OGNL表达式作基础。因此, 对集合、对象的访问非常便利。Struts2标签库将所有标签都统一到一个标签库下, 简化了用户对标签库的使用。

Struts2标签库整合了Dojo的支持, 因此, 可以生成更多页面表示效果。Struts2提供了许多额外的标签, 包括如日期时间选择器, 树形结构等。除此之外, 借助于底层的DWR支持, Struts2标签库提供了Ajax支持, 可以通过使用Struts2标签库来非常轻松地完成各种Ajax效果。

Struts2提供了主题、模板支持, 极大简化了视图页面的编写, 而且它们有很好的可扩展性, 如果现有的主题、模板不能满足项目需求, 完全可以开发自定义的主题、模板、可以实现更好的代码复用;Struts2还允许在页面中使用自定义组件, 这完全能满足项目中页面显示复杂多变的需求[3]。

同Web Work一样, Struts2对多种表现层技术:JSP、Velocity和Free Marker等都有很好的支持, 从而给开发者更多的选择, 提供了更好的兼容性。

4 结语

Struts2核心控制器使用拦截器机制, 具有更高的灵活性和可复用性;Struts2业务逻辑控制器Action可自定义, 可不直接与任何的Servlet耦合, 增加了代码的可复用性且更易于测试;Struts2视图层提供了丰富的标签库, 而且还支持除JSP以外的其它表现层技术。此外, Struts2还提供了非常灵活的扩展方式:插件。理论上, Struts2可通过插件与任何框架整合, 这极大地提高了Struts2的可扩展性。Struts2是一个有前途的框架。

参考文献

[1]唐善成.Webwork原理初探[J].电脑知识与技术, 2005 (6) :83.

[2]孙卫琴.精通Struts:基于MVC的Java Web设计与开发[M].北京:电子工业出版社, 2006:15.

Struts框架 篇7

目前基于J2EE技术开发的应用系统越来越多, 翻页功能的实现方法也各式各样, 大多是基于前端HTML的网页设计实现模式。这种方式需要在网页里嵌入程序代码, 不仅使开发人员的工作繁琐, 不利于代码的移植复用, 还容易带来各种异常错误。

考虑到现有Struts成熟的应用框架, 可以设计一个通用的翻页标签, 把代码封装成标签库方式供网页调用。这样可以大大简化开发人员的页面开发工作, 使得程序的可维护性也大大提高。

2 基本概念

MVC结构如图1所示。

MVC设计思想核心是将一个应用分成3个基本部分:Model (模型) 、View (视图) 和Controller (控制器) , 这3个部分以最少的耦合协同工作, 不仅实现了功能模块和显示模块的分离, 同时它还提高了应用系统的可维护性、可扩展性、可移植性和组件的可复用性。

Struts是MVC的一种实现方式, 结构如图2所示。

Struts通过采用Java Servlet/JSP技术, 实现了基于J2EE Web应用的MVC设计模式的应用框架, 成功地将业务逻辑代码从表现层中清晰地分离出来, 是MVC经典设计模式中的一个经典产品。

3 设计思路

首先需要设计一个ActionForm的扩展类, 用来封装页面表单属性, 在扩展的Form类里增加翻页相关的属性。由于通常情况下用来显示的翻页内容是取自数据库, 还需一个数据库实例化类来存储显示数据, 在查询显示数据时, 同时设置Form里的翻页属性, 并把数据保存于数据库实例化类列表中。最后需要做的工作就是实现一个标签, 根据Form表单的数据输出html格式的代码到页面上即可完成。

4 实现方法

下面就以一个基本人员信息表的实例来介绍一下翻页标签的设计实现。

信息表主要结构如表1所示。

4.1 ActionForm设计

首先需要扩展一个含翻页属性的ActionForm类, 命名为BaseForm, 主要代码如下:

以上的pageNo、pageCount、nextPageNo、rowCount、pageSize即是实现分页功能的关键属性。

而用户表的UserInfoForm类在BaseForm类的基础上再扩展自己需要的相关属性即可, 部分代码如下:

其中, V_USER_INFO类是对应数据库中用户信息表的POJO类, 主要代码如下:

4.2 查询业务层

查询业务层需要完成的目标是:把数据库查询记录结果集传递给前台显示, 同时设置完成翻页功能所需的属性值。为了代码重用以及通用性, 实现了一个数据库查询的工具类PageTools.java, 其中一个方法为operPageFind, 该方法实现了把SQL语句的查询结果返回到一个POJO类列表中, 并且设置Form类的翻页相关属性。operPageFind的实现核心代码如下:

参数说明如下:

(1) form是用户自己扩展的BaseForm类 (这里就是UserInfoForm) , 用来保存翻页属性。

(2) sql是数据库的SQL查询语句。

(3) cl是对应数据库表的POJO类名。

(4) conn是数据库的连接引擎。

该方法中, 调用了一个setValueToObject的方法, 以及一个pageBean的类。

setValueToObject方法实现的是把数据库记录的各个字段值设置到POJO类的属性中, 然后再加入到返回的记录列表中。pageBean则是实现动态翻页属性的相关操作。至此, 实现了查询数据库时返回结果集的数据记录列表, 并设置了Form的翻页属性。

在实际应用时, 只需要在业务实现层调用operPageFind方法即可, 如下代码实现了带翻页功能的人员表查询:

4.3 标签

最后, 只需要再设计一个分页的标签来实现HTML代码的输出, 供JSP页面调用即可。首先在标签定义文件中加入:

PageControlTag即是标签的实现类, 完成了HTML代码的生成和输出, 主要代码如下:

showPageLink方法的主要代码如下:

4.4 调用方式及效果

在应用时, 只需在JSP页面上的相关位置加入以下代码:

即可调用分页标签, 实现动态翻页效果。如图3所示。

5 结语

基于Struts框架的翻页标签的实现, 给同类系统的开发带来了极大的便利, 大大缩短的开发人员了开发时间, 减轻了开发的工作量。目前该标签已成功应用于LKJ车载设备管理系统、LKJ芯片换装卡控系统、员工绩效管理系统、任务跟踪系统等多个系统中, 均达到了很好的效果。

摘要:基于J2EE开发技术, 采用MVC分层设计模式, 利用Struts框架, 实现了一种通用的翻页标签。

关键词:J2EE,Struts,翻页,标签

参考文献

[1]孙卫琴.精通Struts基于MVC的Java Web设计与开发[M].北京:电子工业出版社, 2004.

Struts框架 篇8

1 Java Web的典型开发模型分析

在日常的开发应用中, Java Web有两种典型的开发模型, 一种是Model1另一种是Model2, 其中的Model1的核心是JSP页面, 其将显示页面、流程控制、业务逻辑等集中于JSP页面中, 其在小规模的应用开发中具有非常好的应用效果, 对于缩短开发周期具有积极的作用, 但是如果将其应用于大型的开发工作中, 则存在一些不足之处, 主要表现为:

(1) 将业务逻辑、流程控制及显示放置于JSP中, 不利于开展分工合作, 尤其是对于大型项目来说, 该缺陷的存在对于开发质量具有致命性的影响。

(2) 没有将相同功能的组件进行抽象, 这使得在实际的开发过程中, 需要对其实施重新编写, 不利于代码的重用。

(3) 如果需要对整个开发全貌进行把握, 就需要对整个SP页面中的代码予以观察, 在实施一处修改的过程中, 对于多个页面及层面都具有影响, 不利于后期的扩展与维护。

在Model2模型中, 将服务器端划分成为了Java Bean、JSP、Servlet等若干个组件, 其中的Java Bean主要是负责开展业务处理工作, 并且能够依据处理结果对JSP整合实施调用, 以便于将其在客户端的显示页面进行显示;Servlet在开发过程中, 主要是起到控制器的作用;其能够依据客户端实际的业务请求, 开实现具体的Java Bean的调用, 以便于开展业务处理工作;而JSP已经完全蜕变成为了显示页面组件, 将该模型应用于大型项目的开发工作中, 能够实现代码的重用, 并且可以通过Servlet对应用的全局流程予以把握, 同时可以实现模块化管理, 通过编写Java Bean能够实现新的业务, 不需要开展整个应用的修改, 对于后期的业务扩展及维护具有非常重要的作用。

2 Struts框架技术的简单介绍

Struts由一组相互协作的JSP、Servlet及类共同组成, 其作为一种改善Web系统的结构, 是MVC设计模式的一种实现, 其在视图层与模型层的实现过程中应用的是自己的控制器, 其中在实现模型层的过程中, 会与数据访问技术相结合。通常情况下, 基于Struts的应用视图部分是由JSP所建立的, 在其页面中可以包含静态的HTML, 在实际的开发过程中, 应用MVC模式, 能够将复杂的处理问题分离至Controller组件与Model组件中, 能够有效的简化JSP, 同时对于开发、测试及维护工作具有良好的促进作用。在Struts中Mapping对象与Action Servlet共同组成了Controller功能, 其主要功能是接受客户端的请求, 应用Struts开进行MVC系统的开发, 能够有效的提升开发效率。在Struts框架中, 需要应用专门的配置文件来实施控制, 这就是Struts-config.xml, 要想网站能够迅速的找到Struts的配置文件, 就需要在web.xml中进行配置。

3基于Struts框架的Java Web应用开发实例分析

本次研究中在对基于Struts框架的Java Web应用开发实施分析的过程中, 将高校图书档案管理模块作为实例来进行分析, 其管理模块主要由查看图书详细信息、删除图书信息、修改图书信息、添加图书信息、查看图书列表等几个模块组成, 其模块框架图如图1所示。

在图书档案管理模块中, 所涉及到的数据表有publishing、booktype、bookinfo、bookcase, 这几个数据表的关联是通过相应的字段实现, 其关联图如图2所示。

在进入到查看图书列表的页面之后, 所有的图书信息会以列表的形式在该页面中予以显示, 并会提供相应的添加图书信息, 可以在该页面中实现图书信息的修改与删除。

在insert () 方法中, 首先需要从数据表bookinfo中查询所输入的图书条形码或者是图书名称是否存在, 如果存在, 那么会将其标志变量设置为2, 如果不存在, 会将所输入的信息在图书信息表中予以保存, 与此同时会将返回值赋给标志变量, 然后将标志变量予以返回。

4结束语

基于Struts框架的Java Web应用开发, 具有灵活性强、重用性大的优点, 与其他方式的开发相比, 具有较高的开发效率, 本文就主要结合相关实例, 对其开发应用予以了简单分析。

摘要:作为一种基于MVC设计模式的开源框架, 应用Struts进行系统开发, 能够有效实现业务逻辑层与表示层的分离, 在这种开发模式中, 即便是对业务层实施修改, 对于表示层的实现不会产生影响, 有效减轻了多层Web应用构建的负担, 对于系统开发效率的提升具有积极的作用, 本文就结合相关的开发实例, 对基于Struts框架的Java Web应用的开发予以简单分析。

关键词:Struts框架,Java Web应用,开发研究

参考文献

[1]刘洋, 杨万军.基于Struts框架的Web应用开发研究[J].辽宁师专学报 (自然科学版) , 2010 (23) .

【Struts框架】推荐阅读:

Struts209-17

Struts2技术05-14

struts2综合试卷10-05

框架设置07-14

测评框架07-17

预警框架05-09

管理框架05-17

共同框架05-17

驱动框架05-17

插件框架06-12

上一篇:供热安全风险管理下一篇:通信保障态势感知研究