Struts2

2024-04-30

Struts2(精选十篇)

Struts2 篇1

关键词:输入校验,Struts2,框架

1 输入校验的介绍

良好的输入校验是一个成熟系统的必备条件。输入校验一般可分为客户端校验和服务器校验。客户端校验最常用的方式就是用Java Script脚本语言来对用户输入的数据进行校验。使用Java Script脚本的校验一般都是进行一些初步的检查和过滤,由于无须同服务器端进行交互,所以提高了校验的响应速度,不影响服务器的运行性能。使用Java Script脚本进行输入校验,需要在每一个页面中嵌入大量的脚本代码,降低了代码的可读性,同时调试Java Script代码也是一件非常头痛的事情。

服务器端校验就是在服务器端采用程序代码或配置文件的方式对用户输入的数据进行校验。用户在浏览器输入数据,将用户输入的数据传给服务器,服务器通过程序代码或配置文件对用户输入的进行校验,最后将校验结果传回浏览器显示给用户。这种校验方式从其完整性,测试上都有很大的提高,但是由于要在浏览器和服务器端传送数据,这也影响了软件的运行速度。

2 Struts2的输入校验方式

Struts2框架的校验方式属于服务端校验,但也可以通过在服务器端进行配置从而在浏览器端自动生成Java Script代码来进行输入验证。Struts2继承了Web Work的校验方式同时也渗入了Struts1的校验方式,它主要有程序代码和配置文件两种类型的校验方式。

2.1 程序代码校验(validate方法校验)

在Action Form中提供了一个validate方法,用于对用户请求参数进行数据输入校验。在Struts2中最简单的验证数据的方法也是使用validate。由于在Struts2框架中取消了ActionForm,所以将此方法放在业务控制器Action中,要使用该方法时需要在Action的实现类中重写该方法,如图1所示。我们从Action Support类(如图2所示)的源代码中可以看到,ActionSupport类实现了一个Validateable接口。这个接口只有一个validate方法。如果Action类实现了这个接口,Struts2在调用execute方法之前首先会调用这个方法。我们可以在validate方法中进行输入验证,如果发生错误,可以根据错误的级别选择字段级错误(add Field Error),还是动作级错误(add Action Error)。并且可使用add Field Error或add Action Error加入相应的错误信息(如图3所示),如果存在Action或Field错误,Struts2会返回“input”(这个并不用开发人员写,由Struts2自动返回),如果返回了“input”,Struts2就不会再调用execute方法了。如果不存在错误信息,Struts2在最后会调用execute方法。

此外,Struts2还支持动态方法调用,也就是说在一个Action实现类中可以包含多个处理逻辑。每个Action实现类中包含多个业务处理方法,这就产生了如何对Action实现类中一个指定的处理方法进行相应的数据输入校验。为了解决上述问题,Struts2框架为开发者提供了validate Xxx方法来对同一个Action实现类中的不同业务处理逻辑方法进行数据输入校验。

对于一个Action实现类中如果既存在execute方法和validate方法同时又存在其它业务处理方法和与之对应的输入校验方法,那么在执行该Action实现类中的任何一个业务处理方法前都会执行validate方法,解决以上问题的方法是不要重写validate方法,对于每一个业务处理方法都建立与之对应的输入校验方法。

2.2 框架校验(xml配置文件)

Struts2框架提供了一种基于框架文件的输入校验方式,将校验规则保存在特定的框架文件中,实现了输入检验同Action的分离,提高了系统的维护性。Struts2框架校验需要建立一个特定的校验规则文件,这个特定的校验文件就是xml文件,它的命名规则为“Action名字-validation.xml”,与相应的Action实现类放在同一个目录下。

如何为每一个业务逻辑处理方法进行输入校验呢?如图4所示,在Struts2.xml文件中我们配置两个Action,其中第一Action所对应的类是Test包下的Login,没有用“method”标签来声明对应于哪一个具体的业务逻辑处理方法,那么默认的就是execute方法,而第二个Action中,它所对应的业务逻辑处理方法是Test包下的Login类中的log Mail方法,那么与之对应的输入校验文件的名字就应该为“login-log Mail-validation”。

Struts2框架提供了字段和非字段两种校验方式,这只是配置校验的两种方式,其作用是一样的。无论哪种校验方式都是以开始,以结束。所谓字段校验就是对用户输入的每一个字段分别进行校验。在此类校验中,先用一个字段说明对哪个字段进行校验,接下来在字段内用一个或多个来说明对该字段进行哪种类型的校验。在图5中,利用字段校验方式对username(用户名)属性进行了是否为空和长度限制的校验。

如图6所示在非字段校验中,首先用说明校验的类型,接下来在中用标签声明对哪个属性进行校验。在一个标签中只能对一个属性进行校验。

此外,Struts2框架还允许用户使用客户端校验,在使用客户端校验时上面的代码不用更改,只是在jsp视图页面上的标签中加上“validate=true”即可。这样在返回给用户的jsp视图中就会自动生成相应的Javascript代码。

此外Struts2还支持输入校验的国际化和AJAX校验。

3 校验的搜索顺序

在上面所介绍的两种校验方式中,配置文件校验是优先于程序代码校验执行的。而在配置文件校验中,我们通过创建名字为“Action名字-validation.xml”的文件来配置输入校验,Struts 2.0的校验框架自动会读取该文件,但这样就会引出一个问题———如果我的Action继承其它的Action类,而这两个Action类都需要对表单数据进行校验,那我们是否会在子类的配置文件(Xxx-validation.xml)中复制父类的配置吗?答案是否定的,因为Struts2.0的校验框架有特定的配置文件查找顺序。不同的是校验框架按照自上而下的顺序在类层次查找配置文件。在最后还在注意Struts2的校验规则是搜索到的所有校验规则文件的校验规则的集合,如果两个校验规则重合,则以后面校验规则文件中的规则为准。

4 结束语

本文简要地介绍了基于MVC开发模式的开源框架Struts2的输入校验的原理和实现方法。程序代码方法由于将校验逻辑嵌入到了Action业务处理实现类中,使得Action变得更加臃肿,同时提高了Action同输入校验之间的耦合度。而xml配置文件方法将校验规则保存在特定的框架文件中,实现了输入检验同业务逻辑Action实现类的分离,提高了系统的维护性。因此,在一些大中型复杂的项目开发中提倡使用这种方式来实现对用户输入的校验。

参考文献

[1]李刚.Struts2权威指南[M].北京:电子工业出版社,2007.

[2]闫术卓,杨强.Struts2技术详解[M].北京:电子工业出版社,2008.

Struts2试题 篇2

1.struts2的执行流程?

客户端提交一个HttpServletRequest请求(action或JSP页面)

请求被提交到一系列Filter过滤器,如ActionCleanUp和FiterDispatcher等

FilterDispatcher是Struts2控制器的核心,它通常是过滤器链中的最后一个过滤器 询问ActionMapper是否需要调用某个action来处理

如果ActonMapper据诶的那个需要调用某个A传统,FilterDispatcher则把请求教到ActionProxy,由其进行处理

ActionProxy通过Configuration Manager询问框架配置文件,找到需要调用的Action类 ActionProxy创建一个ActionInvocation实例,而ActionInvocation通过代理模式调用action Action执行完毕后,返回一个result字符串,此时再按相反的顺序通过Interceptor拦截器 最后ActionInvocation负责根据struts配置文件中配置的result元素,找到与返回值对应的result

2.struts2的web里需要配置什么?

1. 2. 3.struts2 4. 5.org.apache.struts2.dispatcher.FilterDispatcher 6. 7. 8. 9. 10.struts2 11./* 12.

3.struts.xml文件哪个常量可以实现不用重新启动服务就可以得到反馈? 

4.struts中的package的作用是什么?namespace可以为空吗?如果namespace为空会意味着什么呢?

标识

可以、Timmer

如果没写,说明该包为默认空间 只要敲index没有精确对应的package都交给namespackage 如果还没有就崩溃

5.Action 的实现通集成常用那种方法? 一种是直接实现自己的Action 另一种是实现Action的接口 继承ActionSupport

6.路径设置用什么路径,绝对还是相对? 都可以

7.通配符有几种?要遵循什么原则? {1}

方法名

8.Action的属性?

path属性:指定请求访问Action的路径

type属性:指定Action的完整类名

name属性:指定需要传递给Action的ActionForm Bean scope属性:指定ActionForm Bean的存放范围

validate属性:指定是否执行表单验证

input属性:指定当表单验证失败时的转发路径。

元素还包含一个子元素,它定义了一个请求转发路径。

9.用于读取资源文件,实现国际化的Struts2的标签()。

10.一下关于struts的描述中,不正确的是(D)struts 是一个基于JAVA EE的MVC struts2的框架配置文件是struts-configxml struts2的控制组建核心包括核心控制和业务控制器

在struts中解决中文乱码可以通过修改struts。I18n。encoding的值为GBK来实现 11.不属于Struts2的动作类的常量返回值的是(C)

A.success

B.input

C.never

D.login 12.一下不属于Struts2动作执行的结果类型是(A)a.action b.redirect c.redirectAction d.dispatcher 13.在struts.xml中。假如在一个package中没有配置namespace,那么在其中配置一个Action名字叫做login,它的result是这样配置的/login.jsp,已知在此配置文件中还有另一个name为user的package其中也有一个Action名字为login,它的result是这样配置的/loginUser.jsp那么在以下什么情况下将能访问到login.jsp A A.在根路径后输入/login B.在根路径后输入/user/login C.在根路径后输入/login/user D.在根路径后输入/abc/login

14.正规开发中,在使用struts2时定义Action使用哪种方式。B A.直接定义Action类。B.从ActionSupport继承。C.从Action继承。D.实现Action接口。

15.不同的线程在调用Action时创建几个Action实例。C A.1个 B.2个

C.每个线程创建1个。D.可以自定义配置。

16.struts2的体系结构主要包括那几个部分(A)A.模型层

B.struts控制器组件 C。struts配置文件 D。struts标签库

17.struts提供了Action接口定义了5个标准字符串常量,不包括的有(C)A SUCCESS

B NONE C REG D LOGIN 18.struts中数据验证失败时,通过(B)标签显示错误信息。A

B

C

D

19.列举出action执行结果类型,并说明用途。

默认结果类型是dispatcher chain:Action链式处理的结果类型,也就是将结果转发到这个action中。dispatcher:用于整合JSP的结果类型

redirect:实际上dispatcher和redirect的区别就是在于转发和重定向的区别。redirect-action:重定向action

20.简述struts2文件上传的方法。

Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦截器将文件绑定到Action的实例中。从而我们就能够以本地文件方式的操作浏览器上传的文件。

21.在struts2标签内部 能否使用el表达式?

不可

22.struts2中result-type的chain和redirectAction的区别

chain,它是一个琏式的,是从一个Action转发另外一个Aciton redirectAction,是从新请求一个Action

23.能否取到Httpsession的值 不可

24.action的name里边写的名字是什么地方用的? From 表单action引用

25.action的class里面写的是什么? Action相应类的详细路径

26.action的extends里面调用的是什么?

从另外一个包继承、相当于拥有即承包的所有配置

27.如果不写action的后面mothod,默认的调用的方法是什么,如果写的话,写的时候有什么需要注意的?

不写会默认调用最上面的方法

28.输出值的strtus标签是什么?

s:property

28.循环的struts标签是什么?

s:iterator

29.判断的strtuts标签是什么?

s:if

30.显示文本的strtuts标签是什么?

31.要调用struts标签需要导入什么? <%@taglib uri=“/struts-tags” prefix=“s”%>

32.如果需要调用sc:datetimepicker需要导入什么,sc代表的是什么意思?

33.中的s代表的是什么,这个标签是干什么用的?

获取前台文本的值

34.请简述前台提交后是如何到达后台action的。

Struts2 篇3

关键词:MVC设计模式;struts2框架;MyBatis

中图分类号:TP311.52 文献标识码:A文章编号:1007-9599 (2013) 05-0000-02

1引言

目前很多公司规模不断扩大,人员越来越多,部门随之增加,后勤部门为了方便管理整个公司的收支情况,必须对每一个部门的收支情况进行更快更直观的统计分析,在这種情况下不得不借助计算机技术进行管理。这个系统就是针对后勤管理部门对整个公司的各个部门的收支情况统计分析的信息化系统。在传统的统计分析中,后勤人员首先必须去各个部门找到负责人签字确认,然后才能进行统计,最后交到财务进行核算。这一系列过程,其具有周期长、效率低、不及时的特点。本系统开发解决了这一问题,使后勤人员从繁杂的工作中解脱出来,提高了工作效率。同时也解决了各部门负责人现场签字的问题。随着信息技术以及网络技术的迅速发展。很多管理系统使用B/S架构进行管理开发,因为在B/S架构组件开发中,整个系统利用Browse作为最终用户界面,这种解决方案也成为企业软件开发的方向,例如J2EE的提出使这种架构更加成熟,使B/S模式更加成熟。在B/S开发模式中,最常用的开发模式是MVC开发设计模式,Struts2是MVC很好的体现,本文主要是使用Struts2与MyBatis框架进行设计开发,在理论上实现了业务逻辑、控制和界面显示的分离,它的提出对Web 的应用开发具有重要意义,本系统开发模式由图一所示:

图1系统开发模式

1.1Struts框架。Struts2是一项开放源码项目,它为Web应用提供了模型-视图-控制器MVC框架,特别适用于开发大型可扩展的Web应用项目。这个框架使开发人员只关注解决公司的实际问题上,而且Struts 框架提供了许多供扩展和定制的地方,应用程序可以方便的扩展框架来更好的适应用户的实际需求。其中,FilterDispatcher是Struts2的核心控制器,它主要功能是拦截客户端的请求。当客户端请求到达服务器时,核心控制器首先对该请求进行拦截,然后该控制器根据请求内容转发相应的Action,Action是Struts2的业务逻辑控制器,它主要负责具体处理客户端请求并将处理结果输出给客户端。1.2MyBatis介绍。MyBatis是一个优秀的ORM 框架,使用XML文件或者注解方式配置和原始映射,MyBatis是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis只使用简单的XML和注解来配置和映射基本数据类型Map接口和POJ0到数据库记录。MyBatis是一种“半自动化”的ORM实现,提供了更大的灵活性和性能的可控性使用MyBatis最主要的是对mybatis_config.xml文件配置。

2系统的设计与实现

2.1配置web.xml:该文件负责配置Struts2 的核心控制器,只有加载了FilterDispatcher以后Web应用才能获得整个Struts2 框架所提供的服务。其中WEB.xml文件关键配置如下:

struts2

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

/*

2.2视图层构件:本系统主要是以JSP技术实现,在JSP页面中不包含任何JAVA程序,JSP页面只具有数据传送、接收和显示功能。在本系统中,用户角色包括系统管理员、后勤管理人员、部分负责人、部门秘书、财务人员。其中系统管理员负责系统的维护工作,后勤管理人员负责部门的统计分析支出情况,部门负责人负责审核部门支出和签字确认,部门秘书负责支出明细的输入,财务人员负责财务划拨以及记录。在使用本系统时,用户根据自己不同的角色进入该系统,在视图层,用户选择自己的角色,当提交给服务器时,根据strust-config.xml文件中的配置,Struts2控制器根据请求内容转发相应的Action。其中,控制器的构件在struts2应用中,其功能是有Struts2本身所提供,不需要开发人员的开发,其配置在Struts-config.xml文件中完成,配置文件如下:

/admin/main.jsp

2.3业务逻辑层构建:当前使用的数据库模型都是关系型数据库,在构建模型中主要是把业务对象映射到数据库。在这层可以完成系统的所有业务的逻辑,业务逻辑的主要功能有:(1)接受用户提交的各种请求,并且根据编码的业务规则处理相应的请求。(2)通过数据访问层与数据库的交互任务。

2.4持久化层构建:主要任务是保持数据的持久化,包括两个部分:一是一般关系型的数据,本系统采用Mysql数据库,其特点是较强的灵活性;另外一种为对象数据。在关系型的数据库中存储对象数据往往存在不匹配,这就要求使用数据访问对象的设计方式。在本系统中,系统采用了MyBatis框架,其摒除了大部分的JDBC代码、手工设置参数和结果集重获,MyBatis 只使用简单的XML和注解来配置和映射基本数据类型、Map接口和POJO到数据库记录,大大节省开发时人工使用SQL和JDBC处理数据的时间,其中文件中配置如下:

3结论

通过采用Struts2 框架以及MyBatis架构开发高性能的、面向事务的Web应用,大大简化了B/S程序的开发过程,提高开发效率,缩短开发周期。MVC开发模式在B/S开发之中已经被广泛应用,所以Struts2和MyBatis架构带来的不单给开发带来便利性,而且从根本上为开发人员构思和构建Web应用程序提供了一种新的方式。

参考文献:

[1]宋少忠,欧阳涛,赵浩宇.动态数据库功能在B/S 结构程序设计中的实现[J].吉林大学学,2011(1).

[2]伍晓莉.基于S2SH架构的商业银行非现场监管系统研究[D].南京:南京航空航天大学,2010.

Struts2 篇4

关键词:Struts2,OGNL,表达式语言,值栈

1 Struts2中的OGNL语言

Struts是Apache软件基金会 (ASF) 赞助的一个开源项目。它最初是Jakarta项目中的一个子项目, 并在2004年3月成为ASF的顶级项目。它通过采用Java Servlet/JSP技术, 实现基于JavaEE Web应用的MVC设计模式的应用框架, 是MVC经典设计模式中的一个经典产品。

但随着Struts设计上的缺陷, 使它越来越无法满足开发人员要求高效、灵活的开发需求, 于是WebWork框架进入了Struts开发团队的视线。

2006年, WebWork与Struts这两个优秀的JavaEE Web框架的团体, 决定合作共同开发一个新的框架, 整合WebWork与Struts优点, 并且更加优雅、扩展性更强的框架, 命名为“Struts 2”, 原Struts的1.x版本产品称为“Struts 1”。

至此, Struts项目并行提供与维护两个主要版本的框架产品——Struts 1与Struts 2。

在Struts2中, 根据描述模型、视图、控制器对应关系的struts.xml的配置文件转发视图的请求, 并由一个名为Action的Java类对视图请求进行处理, 调用响应数据模型。

其中, Struts2的一个关键特性就是它可以对Action携带的数据进行读写访问, 这是通过表达式语言 (Expression Language, EL) 来实现的。EL通常是用来简化数据的访问操作, 取代Java脚本代码, 提供更清晰的视图层实现。对于Struts 2而言, 它支持以下几种表达式语言:

1) OGNL:可以方便地操作对象属性的开源表达式语言;2) JSTL:JSP 2.0集成的标准的表达式语言;3) Groovy:基于Java平台的动态语言;4) Velocity:严格来说不是表达式语言, 它是一种基于Java的模板匹配引擎。

其中OGNL是Object-Graph Navigation Language的缩写, 既对象图导航语言。Struts 2默认的表达式语言, 它是一种功能强大的表达式语言, 通过它简单一致的表达式语法可以存取对象的任何属性, 调用对象的方法, 遍历整个对象的结构图, 实现字段类型转化等功能。

2 基于OGNL语言的应用案例设计

这里以基于Java Web的选课系统中的“选课模块”为例剖析OGNL语言, 运行效果如图1所示:

2.1 数据库设计

首先完成的是数据库设计, 选择合适的数据库产品, 根据面向对象分析设计出数据库, 数据库中的表如下:

t_address

t_course

t_teacher

t_curriculum

2.2 包图设计

基于MVC模式及数据库设计, 构建出“选课模块”的组件图, 如图2所示:

2.3 顺序图设计

“选课模块”中获取数据库中course表信息显示在页面上这个事件流如下图3所示, 其中SelectcourseAction通过调用CourseDAO对象的SelectCourse () 方法获取Course的List列表, 并将其存入值栈中。

在Struts2中值栈就相当于一个“仓库”, 数据信息到来时装入“仓库”, 需要时可以从“仓库”中取出这些数据信息。

以此类推画出address表、teacher表被读入到页面的顺序图及课表数据被存入到数据库的顺序图。

2.4 关键技术及代码

在SelectcourseAction.java中, 利用Struts2的action特性, address、courses、teachers三个List对象被存储在值栈中, 代码如下所示:

在main.jsp中, 利用OGNL语言将address、courses、teachers三个List对象中的name属性值的集合取出, 并利用Struts2的UI标签将其显示在下拉列表中, 下拉列表中的name属性分别定义为curriculum.courseName、curriculum.courseAddress、curriculum.courseTeacher、curriculum.courseTime, 代表Curriculum对象 (curriculum) 的四个属性值。

在InsertcurriculumAction.java中利用Struts2的Domain Model方法将main.jsp传递过来的参数值保存在curriculum对象中, 以便调用CurriculumDAO对象的courseInsert (curriculum) 方法将其选课数据存入数据库中。

在Struts 2框架中, 任何Action所涉及到的数据都要被存入Action上下文, 同时也会在值栈中创建一个这些数据信息的副本。因此有效利用OGNL语言从值栈“仓库”中存取数据显得尤为重要。

参考文献

[1]孙卫琴.Tomcat与Java Web开发技术详解.电子工业出版社, 2005, 8.

[2]孙鑫.Struts2深入详解.电子工业出版社, 2008, 7.

struts2综合试卷 篇5

课程名称: Struts2学习增强练习

考试时间 xx分钟(闭卷■)

不定项选择题

1.开发struts2 web项目,需要导入哪些jar包

A 必须导入struts2 解压lib下所有jar包

B 只需要导入struts2解压app/struts2_blank.war中的jar包就可以

C 如果进行注解开发,导入struts2解压app/struts2_blank.war中的jar包就可以 D 如果进行注解开发,还必须导入convention的插件 jar包 2.下面关于struts2 MVC说法正确的是?

A.Struts2 是一个基于MVC模式的web层框架 B.Struts2中核心控制器是ActionServlet C.Struts2中模型是Action D.Struts2中控制器是Filter 和 Action E.Struts2的视图必须用JSP 3.关于Struts2 Action说法下面正确的是

A.用户编写的Action可以是POJO类

B.用户编写的Action可以实现Action接口 C.用户编写的Action 可以继承 ActionSupport D.Action中必须提供 execute方法

E.Action提供的业务方法 必须 public修饰,String类型返回值,无参数的

4.如果客户端请求路径 http://localhost:8080/struts2_exec/user_add.action 要执行UserAction类中的add方法,下面的配置哪些是正确的 A. B. C. D. E. 5.下面关于Struts2中result type说法正确的是?

A.如果要将请求从一个Action转发给另一个Action 可以使用 chain 结果集 B.如果要将请求转发给一个JSP,可以使用dispatcher 结果集

C.如果要将请求从一个Action重定向到另一个Action 可以使用redirectAction结果集 D.如果要将请求从一个Action重定向到JSP,可以使用redirect结果集 E.进行文件下载时可以使用stream结果集

6.如果客户端提交请求路径为http://localhost:8080/struts2/hello.action?name=”itcast”, 下面在Action中要接收name请求参数,哪个写法是正确的?

A.public class HelloAction { private String name;public void setName(String name){ this.name = name;} } B.public class HelloAction { private User user;public void setUser(User user){ this.user = user;} } public class User {

private String name;public void setName(String name){ this.name = name;} } C.public class HelloAction implements ModelDriven{ private User user;public User getModel(){ return this.user;} }

public class User { private String name;public void setName(String name){ this.name = name;} } D.public class HelloAction implements ModelDriven{ private User user = new User();public User getModel(){ return this.user;} }

public class User { private String name;public void setName(String name){ this.name = name;} } 7.关于自定义类型转换器下面说法正确的是?

A.向Action封装请求参数,是由ParametersInterceptor完成的 B.进行封装参数时,必须要自定义类型转换器

C.自定义类型转换器,如果继承DefaultTypeConverter , 覆盖convertValue方法时,只需要实现String向目标类型的转换

D.自定义类型转换器后需要注册,可以在Action所在路径 编写

Action类名-conversion.properties,配置

Action中属性名= 类型转换器

E.自定义类型转换器也可以全局注册,在src下创建xwork-conversion.properties,配置

目标类型 = 转换器

F.如果类型转换出错后,会跳转到 INPUT对应视图,可以通过 显示错误信息 8.如果需要对Action封装请求参数,进行校验下面哪些说法正确

A.可以在Action中添加validate方法完成校验,Action可以是POJO类

B.可以在Action所在包 编写Action类名-validation.xml 对Action中所有业务方法进行校验 C.如果要对Action中某个指定的业务方法进行校验,可以在Action所在包,编写

Action类名-方法名-validation.xml

D.在Action中手工校验失败后,通过addFieldError设置错误信息,但Action中是无法读取国际化文件的

9.下面关于Struts2 中Action 中设置信息说法正确的是

A.在开发中Action 将一个文本信息传递给JSP 显示,通常可以使用 addActionError、addActionMessage、addFieldError 三个方法,此时Action必须继承ActionSupport B.addFieldError 主要存放字段错误信息,页面通过 显示 C.addActionError 主要存放Action错误信息 页面通过 显示

D.addActionMessage 可以存放Action普通信息,页面通过 显示 10.关于struts2 国际化信息文件下面哪些说法是正确的?

A.国际化信息文件,必须放到src根目录,不能放到package中,放到src根目录中国际化信息文件不需要配置,就可以在所有Action中使用

B.可以在Action所在包,编写Action类名.properties,无需配置 就可对当前Action 生效 C.可以在Action 所在包,创建 package.properties,无需配置就可对当前包所有Action生效 D.国际化信息文件在任何package中,都可以通过在struts2.xml 对国际化信息文件 进行配置

struts.custom.i18n.resources,使其对所有Action 生效

11.关于struts2 拦截器说法正确的是

A.Struts2内部使用了很多内置拦截器,用于在Action执行前后加入某些操作 B.访问每个Action 默认都会执行 defaultStack 中所有拦截器

C.如果在元素中指定 那么默认defaultStack 就不会得到执行 D.自定义拦截器可以实现很多功能,比如权限控制,性能监控

E.Struts2 中拦截器实现 责任链模式 12.关于值栈ValueStack 下面哪些说法正确

A.ValueStack值栈对象的生命周期 就是request生命周期,request对象销毁后 值栈数据将不存在

B.获得值栈对象引用 可以通过两种方法

第一种 ServletActionContext.getRequest().getAttribute(“struts.valueStack”);第二种 ActionContext.getContext().getValueStack();C.值栈中包含两个部分,一个CompoundRoot 和 一个OgnlContext , CompoundRoot是一个ArrayList 结构,OgnlContext 是一个Map 结构

D.OgnlContext 对内置了很多常用 web对象的对应Map结构,通过parameters、request、session、application、attr 对应map对象,可以间接操作 Servlet API E.每次请求Action,Action对象本身都会 被push到值栈的root 中 13.下面关于向值栈存放数据 说法正确的是 ?

A.在Action建立成员变量,并提供get方法,该数据就会随Action 会被自动压入值栈 B.可以通过调用 valueStack 提供push 方法将一个对象 压入值栈 的root中

C.可以调用valueStack的 set(key,Object)方法 将一个对象,存入值栈 OgnlContext中 D.可以调用 valueStack.getCompoundRoot().add(object)方法,将数据存入值栈root中

E.可以调用 valueStack.getOgnlContext().put(key,object)方法将数据存入 值栈OgnlContext 14.如果Action 如下定义

public class HelloAction { private String name =”itcast”;public String getName(){

return this.name;} … } 在页面要取得name的值,下面哪些写法是正确的?

A. B. C. D. E.${name} 15.阅读下面代码

public class UserAction {

private List users;public List getUsers(){ return this.users;}

public String execute(){ users = ….从数据库查询出所有用户

} …

} public class User { private String name;private String city;// 提供getter方法

Struts2 篇6

Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开。

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

Struts和Hibernate几乎已经成了JavaEE应用的常规配置。

1 系统概述

1.1 配置环境

1.2 数据库:Bank

表如图1:Product。

1.3 整体结构

如图2所示。

2 struts2+hibernate整合策略

2.1 思想

一个好的系统一般都采用多层设计,四层架构如图3所示。

1)表现层:负责与用户交互,并通过调用业务逻辑层代码实现判断等。

2)业务逻辑层:专注于实现业务逻辑功能,通过调用持久层操作数据库。

3)持久层:专注于持久化操作,不涉及业务逻辑。

4)数据库层:即使用的数据库。

2.2 实现

1)表现层:JSP/struts。

2)业务逻辑层:JavaBean。

3)持久层:DAO+hibernate。

4)数据库层:SQL2005。

2.3 开发方向

自底向上。

3 搭建框架

3.1 新建Java web项目

添加struts2+hibernate框架(注:netbeans6.8中自带的是struts1.3,而使用struts2可从网上下载插件并添加到netbeans环境中),并配置hibernate,且需另外添加方言。

Hibernate.xml配置如下:

3.2 建立hibernate逆向工程配置文件hibernate.reveng.xml

通过逆向工程文件,可以将数据库中表自动生成相应的映射文件及实体类。

3.3 建立POJO类及相应的映射文件,并手工在hibernate.cfg.xml中注册

3.3.1 映射文件:Product.hbm.xml

3.3.2 实体类

3.3.3 在hibernate.hbm.xml中注册

3.4 建立hibernate工具类

4 持久化层设计:包括DAO接口+DAO实现类+DAO工厂类+hibernate

4.1 DAO接口

4.2 DAO实现类

4.3 DAO工厂类

5 业务逻辑组件设计

与持久化层相似,但其中有业务逻辑判断,包含业务逻辑组件接口+实现类+工厂类。

5.1 业务接口

5.2 业务实现类

5.3 业务工厂类

6 表现层:整合应用

6.1 查询所有产品

6.1.1 action:com.product.action.ShowAllAction.java

6.1.2 JSP:showAll.jsp

6.1.3 配置struts.xml

7 总结

本论文是本人在课堂教学中的总结,通过上述从理论到实践的讲解,课堂上气氛活跃,取得了良好的教学效果,在此发表出来与各位读者共享,以达到抛砖引玉的作用。

摘要:该文采用netbeans+GlassFish+JDK6为开发环境搭建struts2+hibernate开发模式,其中先对struts+hibernate的整合策略进行简述,再在netbeans环境中,从由架构的底层开始,由下而上,逐一进行讲解,并配有详细的代码及图例。

关键词:netbeans,框架,glassfish,struts2,hibernate

参考文献

[1]校本教材:Java企业应用[M].3版.2010:134-167.

Struts2 篇7

基于Web的企业应用系统改变了企业的生产模式、人们的工作方式及管理理念,显著提高了企业的经济效益和社会效益。以前系统逐个定制开发的方式已无法满足企业快速发展的需求,开发人员要一种可以脱离实际业务逻辑的系统开发框架,将开发过程聚焦到个性化业务功能的实现。一些通用的基础功能和服务都可以从框架本身得到复用,这样便大大节省了项目的开发成本,缩短了项目开发周期,降低了项目管理的风险和难度,提升了产品质量,从而有利于增强软件企业市场竞争力。

本文在目前流行的J2EE开源框架基础上,通过整合Structs2、Log4j、JSP、j Query、My Sql、Active MQ等技术,构建了一套高效、稳定、灵活、易于扩展的应用基础框架,并设计实现了一个企业内部交流平台系统。应用基础框架提供了统一的用户权限管理、机构人员管理等基础模块以及数据缓存、运行日志、定时任务和数据导入导出等基础功能,极大地降低了后续业务需求变更和系统功能扩展的难度。

1 相关技术

1.1 Struts 2

Struts是一个基于J2EE平台的开源MVC框架,主要采用JSP与Servlet技术,对模型(Model)、视图(View)、控制器(Controller)三大核心都提供了对应的实现组件。Struts把JSP、Servlet、标签库整合到一个框架中,开发人员利用其进行开发,可用其实现全套MVC模式,极大地节省开发时间。Struts框架实质上就是在JSP Model2 体系结构基础上实现的一个MVC模式的Java Web开发框架[3]:

M(模型)Model业务逻辑层,负责对系统信息、状态的记录功能和对业务逻辑的封装。在Struts2 中,模型则由实现业务逻辑的Java Beans或EJB组件构成[3]。

V(视图)View表示逻辑层,通常是指实现可视化界面。在Struts 2 中,视图层由HTML、JSP和Taglibs表示,JSP页面结合Struts2 的标签库构成了视图组件的主体[3]。

C(控制)Controller控制层,负责协调模型与视图的工作流程。此层主要由Struts2 框架所提供的核心控制器和用户自定义的业务逻辑控制器Action构成[3]。

1.2 j Query

j Query是对Java Script底层dom操作封装最薄的一个框架,没有大量的专有对象,多为提供函数进行dom操作。j Query的设计旨在于改变你编写Java Script的方式,它使用户能更方便地在网页上操作文档、处理事件、实现特效并为Web页面添加Ajax交互。j Query插件非常丰富,除了j Query本身自带的一些特效之外,开发人员可以通过各类插件实现更多功能,如表单验证、表格排序、树形菜单、图像特效等[4]。

此外,j Query为Ajax操作也提供了非常好的支持,通过使用j Query Ajax,使用HTTP Get和HTTP Post可以从远程服务器请求TXT、HTML、XML或JSON格式的数据[4]。Ajax技术的引入,可以极大地减少客户端对服务器发起的冗余请求及其等待时间,从而减轻了Web服务器的访问负担,提升系统整体的并发访问性能。

2 系统设计

企业内部交流论坛为企业内部人员提供了一个自由的讨论社区。用户可以根据需要在论坛上发表文章,提出问题并表达自己的观点。

2.1 系统架构设计

企业内部交流论坛利用Struts框架的MVC结构,实现基于B/S的多层Web应用架构,以降低模块之间的耦合度,提高系统的复用性和扩展性,另一方面又便于项目整体分工协作和开发管理。企业内部交流论坛系统的总体结构如图1 所示。

整个企业内部交流论坛系统可以根据职能划分为三个层次,分别为:表现层、业务层和数据持久层。

(1)表现层。系统表现层利用了采用Servlet和JSP技术实现MVC(即模型-视图-控制器)模式的Struts2 框架来实现,它能分开显示、控制和模型,也就是说用控制器来降低表现层与业务层之间的耦合程度,让分层结构工作得到展开。用户界面只负责和用户的交互,比如收集用户的请求信息和将返回结果显示给用户,虽然用户界面也承担一部分的数据验证功能,但是用户界面不进行任何的业务逻辑处理。而表现层中的访问控制部分就是接收用户界面的请求,调用相应的业务处理模块处理,最后把处理结果返回给用户。

(2)业务层。业务层集中了系统的业务逻辑和规则的处理,可以说是本企业内部交流平台系统中的核心部分。根据通常的分层结构设计原则,业务层封装的是各项业务处理逻辑和数据库访问逻辑,完成业务处理后将结果显示在前台网页上。

(3)数据持久层。数据持久层在该架构模型中处在业务层和数据库层之间,负责两层之间的数据交互,封装了对上层业务对数据存取的接口。通过引入数据持久层将使得整个应用程序的逻辑会变得有条理性和易于管理,并向其他业务系统提供一个稳定、高效、安全的数据访问通道。

2.2 系统功能设计

对于该企业内部交流论坛而言,需要实现的功能总体来说分为以下两个模块,如图2 所示。

前台模块是提供给所有论坛用户使用,随着用户的权限不同,所允许使用的功能也有所不同。后台模块则只提供给论坛管理员和各版版主使用,以对用户、论坛及文章进行管理维护。

企业内部交流平台将用户划分为游客、用户(包括普通用户和版主)、管理员三类角色进行管理。实际服务启动后,用户进入每一个模块时都会进行用户身份的验证及权限的检查,如果登录用户不具备对该子模块进行操作的权限,则系统将自动提示警告信息,并阻止该用户进入该子模块。

(1)查阅文章:对所有用户提供文章检索及查看的功能。

(2)留言回复:允许交流平台合法用户对相关文章进行留言回复。但只由合法的登录用户才能对相关文章进行留言。

(3)发表文章:提供交流平台合法用户编辑、发表新文章功能。

(4)用户管理:不同于外部论坛的使用模式,企业内部交流平台主要面向的是实名制的内部员工用户,所有平台用户的管理(包括新增、删除用户)的权限只有论坛管理员才具有。用户只能提交自身信息更新请求,包括用户昵称、密码、姓名、电话等相关资料。论坛管理员会按照用户的不同身份,可以将指定用户设置成版主,从而具备删除、汇总本讨论区中对应文章等特殊操作的权利。

(5)分区管理:可以根据实际讨论内容,将内部交流论坛划分成不同的讨论区,用户可以根据兴趣进入不同的讨论区。管理员可以根据实际需求,定期对谈论区的分类进行调整。

(6)文章管理:论坛管理员或被赋予权限的版主有权搜索并删除相应文章或留言。此外,管理员可以根据需求,生成热点话题或谈论区的文章统计信息。

3 系统实现

该企业内部交流论坛将采用Struts2+j Query+My Sql的技术路线实现完成。整个系统按照功能划分为多个组件单元,每个单元再分别按照Struts2 框架进行设计,各个组件单元的藕合性将显著降低。

3.1 功能实现

企业内部交流平台基于Struts2 框架,通过JSP页面创建视图模型,Java Bean封装具体的业务逻辑,创建Action实现业务的控制,具体的功能实现如图3 所示。



用户通过JSP提交请求后,由Servlet拦截并分配给相应的Action处理,Action调用相应的Java Bean进行业务逻辑处理,最终跳转向相应的JSP页面作为用户的请求应答。

3.2 数据库实现

考虑到该企业内部交流论坛主要面向中小型企业用户,并发访问和数据量都相对有限,因此数据库采用开源的中小型关系型数据库My SQL。目前My SQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了My SQL作为网站数据库。

目前,根据上文的论坛功能模块设计,可以抽象出来的数据模型主要有:用户、角色、权限、讨论区、文章及留言。这些数据模型在系统中互相关联,如图4 所示,文章按照“用户-角色-权限”和“讨论区-文章-留言”两个维度展现各抽象实体间关联关系。

该内部交流论坛依据每个细分功能项定义角色权限,通过采用的是“用户-角色-权限”的形式进行提供了用户权限控制。角色和权限定义的灵活性也就决定着该内部交流论坛管理的灵活性。

而文章、讨论区和留言则是负责论坛基础功能的作业表。通过各讨论区版主的文章话题汇总或后台定期整理过期数据,降低留言表中的数据量,保持系统访问的正常响应速度。

3.3 运行测试

启动该企业内部交流论坛,利用Window IE浏览器访问主要页面如所示,其中图5(a)为交流论坛主页,图5(b)为文章编辑界面。

通过利用Load Runner自动化工具测试和初步上线运行测试,该企业内部交流论坛系统可以支撑一个500 至1000 人的中小规模企业日常使用,极大地满足了企业员工的内部沟通需求。

4 总结

本文简要介绍了一种优秀的Java EE MVC架构框架Struts 2,并运用其设计开发了一套企业内部交流论坛系统。在开发过程中,通过大量使用Struts 2 所提供的基础功能简化了系统的开发难度,极大地提高开发效率和系统安全性。实践说明,该企业内部交流论坛的运营使用,可以提高员工内部技术交流的便捷性,同时又方便了管理人员及时了解员工动态和技术关注点,最终实现企业的降本增效。

参考文献

[1]郭欣.企业信息管理系统的实现[J].制造业自动化,2011.

[2]于静,董东.基于开源框架的Web应用架构设计[J].软件导刊,2014.

[3]聂常红,唐远强.基于Struts 2的Web应用开发研究[J].现代计算机,2014.

[4]甘文丽,刘为超.基于Struts2和Ajax的企业级Web应用开发[J].工矿自动化,2013.

Struts2 篇8

继续教育包括非学历高端培训和学历远程教育,随着继续教育学院高端培训规模的不断扩大,总收入已超过学历远程教育。为了支撑不断发展的高端培训,继续教育学院迫切需要高效的培训管理平台,以服务于培训事业的发展。

通过平台对高端培训的各个环节进行管理,可规范操作、提高效率、优化资源配置。因此,平台技术上要求易于维护,可以提供对分布式集群的支持,能实现负载均衡,满足平台不断增加的负载量。培训管理平台功能包括以下几个方面:1用户和权限管理;2培训各项工作管理,如项目管理、课程库管理、教学计划与培训方案管理等;3培训后勤管理,其中比较重要的有教室、酒店、客户的基础信息管理;4师资信息管理和酬金信息管理(涉及教师团队、酬金发放、计税等),同时包括培训结果评价和综合查询等。

2培训管理平台系统设计

2.1平台模块结构

培训管理平台模块结构如图1所示,分为用户管理、 培训管理、财务酬金管理、系统管理等几大模块[1]:1用户管理。将用户划分为学院管理人员、培训中心管理人员、 学员等,主要包括用户添加、修改、删除等;2培训管理。 主要是培训相关的项目管理、课程管理、教学计划管理、培训方案管理、后勤管理等;3财务酬金管理。主要包括财务时间设置、发放酬金教师管理、银行卡管理、酬金应发录入/导入、酬金实发录入/导入、劳务费应发录入/导入、劳务费实发录入/导入、酬金审核、劳务费审核、计税、撤销计税、酬金发放管理、酬金查询管理等;4系统管理。主要包括系统参数设置、角色和权限设置、密码管理等。

2.2财务酬金管理子模块功能结构

财务酬金管理子模块的功能结构如图2所示。财务酬金管理子模块需要实现可以灵活地根据教师要求对酬金通过实发(教师税后拿到的酬金)或应发(教师税前拿到的酬金)等方式进行计税和发放工作,满足酬金发放的多样化需求。同时,要能满足累计计税,提高财务部门处理和发放酬金的效率。

2.3财务酬金管理子模块系统流程

财务酬金管理子模块主要流程为:学院财务部门设置财务开放时间段,培训中心人员通过输入或导入方式输入教师酬金(其中可利用程序控制主讲教师酬金比例),输入完成后进行上报,生成酬金计税单,然后提交到培训管理办公室进行审核,审核通过后按流程签字,交给财务进行计税和发放。其中财务可以实现随时计税、随时发放,改变了目前很多单位统一的一月一次的发放方式,极大地提高了财务发放效率。

2.4数据库设计

根据功能结构和流程分析,需要建立用户表、权限表、 项目表、教学计划表、课程表、教师酬金表、酬金明细表、银行卡表等[2]。教师酬金表包含发放酬金教师的所有信息, 酬金明细表存放酬金记录,银行卡表存放教师的银行卡信息,一个教师可记录多张银行卡。

本系统考虑到跨平台兼容性,采用Struts2框架开发[3],并综合考虑采用Oracle数据库[4]。表1列出了简化的酬金明细表,包含主要字段有办班编号、酬金月份、教师姓名、应发金额、代扣税、实发金额、身份证、银行卡、流水号、培训项目表ID、培训教学计划表ID等。

3培训管理平台实现

3.1教师酬金应发录入功能的控制器组件配置和控制器实现代码

3.2酬金审核功能的控制器组件配置和控制器实现代码

4结语

Struts2 篇9

21 世纪是一个信息时代, 谁拥有信息, 谁就拥有优势。 想要提高信息管理水平, 最大限度发挥信息资源优势, 以获得最大经济效益目标, 离不开对信息管理系统的应用。 信息管理系统是利用现代管理思想和方法, 以电子计算机为载体, 采用计算机软件和网络通讯技术, 对各种信息进行收集、处理、存储、分析、管理的系统。 基于Struts2 的信息管理系统结构研究, 能够实现信息资源采编、交流、维护、发布、管理等功能的一体化, 能够有效提高信息发布的时效性、准确性, 更有利于信息资源管理和开发, 目前已广泛应用到了各个领域, 研究Struts2 的信息管理系统设计与实现具有重要意义。

1 信息管理系统

信息管理系统是随着信息技术、计算机技术、网络技术的普及发展起来的新型产物。 通过信息管理系统便能够对相关信息进行收集、加工、处理、传递、储存、共享、利用、交流、管理。 以当代处理信息方法为依据, 附加进电子计算机技术, 来进行进一步的信息分析。信息管理系统的应用能够充分利用信息资源获得最大信息资源利用率。该系统涉及经济学、管理学、计算机科学等很多学科, 具有辅助决策功能。

信息管理系统作为一种新型的信息集成中心而存在, 它不仅可以提供当前信息的分析与处理, 还可以对未来一段时间内的信息进行合理性预测。 这样的系统可以作为企业信息的核心来工作, 并在企业发展中起到非常重要的作用。 在信息化的时代, 企业需要这种信息系统来为企业的运行指引方向, 同时信息管理系统也可以在企业的竞争当中起到至关重要的积极作用。目前在医疗、教育以及企业等方面, 信息管理系统已经得到广泛应用。 不同类型的信息管理系统设计思路不同, 系统结构不同, 功能不同, 特征不同, 所以适用范围也不同。目前市面上常见的信息管理系统绝大多数是从社会活动需要和将来发展战略角度出发进行设计, 以提高系统的针对性和科学性。 如企业信息管理系统, 往往针对企业实际情况而设计, 无法应用于医院管理或校园管理当中。 信息管理系统可以被看做一种信息集成中心, 可以进行所有采集信息的处理与分析一个完善的信息管理系统能够将各类数据信息通过计算机准确的进行处理与分析, 从不同角度得到不同分析结果, 为信息使用者提供决策依据, 使信息使用者能够第一时间得到相关信息。 并且目前许多信息管理系统已经实现网络化, 能够根据内部和外部信息的变化, 对相关信息内容进行变化和调整, 实现动态化信息管理。 这种信息管理方式, 效率更高, 更加灵活, 有效节约了管理成本, 降低了管理难度。传统纸质信息资源, 易丢失、损坏、折皱、受潮, 且使用不方便, 管理工作量大, 不利于使用和归档分析。 相比之下, 信息管理系统应用优势十分明显, 积极推广和应用信息管理系统具有重要意义。

2 Struts的基本介绍

Struts框架是一套非常经典, 应用广泛, 基于JAVA语言开发的框架。 最早开发于2000 年5 月, 2001 年6 月发布, 参与开发人数上千。目前我们通过改善Strut处理系统信息的方法作为进一步研究的核心, 全面改善标签库的研究对象, 以此来进行信息系统的长远架构。框架名称的用意是希望人们能记住一切事物都需要基础支撑。这也恰恰解释了Struts在WEB应用开发中的重要地位, 就像任何建筑都需要基础一样, 同样软件工程师使用Struts为业务应用的每一层提供支持。Struts作为信息管理的中心载体不仅可以控制来访者的访问权限, 更是可以将不同国家的处理数据进行规范化的处理。因此我们在设计Struts的时候就会面临更大的难题, 诸如该系统的运行环境、处理模式以及结构框架等都是我们需要着重考虑的问题。经过不断的改进和完善, Struts已经十分成熟、稳定、可靠, 市场占有率达到20%, 已经上工业化标准。 但随着时代的进步, 科技的不断发展, Struts的局限性和不足开始暴露出来。 Struts1 支持的表层技术过于单一, 与JSP/Servlet耦合非常紧密, 局限性较大, 灵活性较差, 并且不可能与视图层模版技术进行整合。 与此同时, 将Struts1 的性能作为研究的主体进行系统性能的进一步提升, 发明了Struts2 作为Struts1 缺陷的补偿版本。不仅提高了Struts1 的各方面功能指标, 更是为以后的研究打下了良好的基础。Struts2 虽然是Struts1 的衍生版, 却有着很大变化, Struts2 以Web Work为核心, 实质上与Struts1 关联较少, 整体框架结构已经面目全非, 几乎可以说是两个完全不同的框架。 两个框架之所以选用同样名字, 是因为开发组织希望推广Struts2, 以取代Struts1。 Struts2 诞生不久就得到了广泛应用, 逐渐成为JAVA应用程序开发中广泛使用的主流框架。基于它的信息管理系统, 集信息采编、发布、管理、传播等功能为一体, 有利于使用者及时、准确的掌握信息资源。

3 基于Struts2 的信息管理系统总体设计

信息管理系统设计中必须要做好总体设计, 分析系统功能需求, 总体设计质量直接关系着信息管理系统设计的成功与否, 只有正确把握业务逻辑和软件使用者意图, 针对使用需求和要求, 才能进行有针对性真实, 避免设计与开发及需求间产生矛盾, 避免发生返工现象。通过前文对Struts的分析可以看出, 基于Struts2 的信息管理系统设计是一项具有复杂性和专业性的工作。因此, 必须要进行总体设计规划, 明确设计思路, 确定设计策略, 寻找设计方向, 为后续详细设计提供依据。 基于Struts2 的信息管理系统, 除了要满足业务需求和使用者要求外, 要尽可能做到操作简单, 界面简洁大方, 能够实现多种用户权限管理模式, 实现分角色管理, 以便于访问权限限制。首先应该达到能够适应中心板块信息处理、暂时信息处理、日程信息处理、历史工作状态处理以及板块联合处理等条件。在系统的深入工作中可以对于日常信息活动进行管理, 并且可以很好的进行日程信息管理与维护, 从而提升系统总体的可靠性。 前不久Struts2 框架的安全漏洞频频爆出, 使得基于Struts2 的信息管理系统安全问题受到了广泛关注。 因此, 具体开放中应对系统安全问题提高重视, 保障系统安全, 避免信息泄露。分角色管理设计中应设置角色识别功能, 系统中应包括:系统管理员、项目负责人、项目组长、成员、用户等五个角色, 不同角色应具备不同权限和职能, 信息访问范围也应根据角色不同来区分, 这样以来便能够进一步提高信息资源管理水平, 避免信息泄漏。 只有做好总体设计才能进行详细设计, 保障总体设计质量至关重要。

4 基于Struts2 的信息管理系统详细设计与实现

不同行业或同一行业不同企业, 其业务特点和业务处理流程, 以及自身实际情况都存在较大差异, 所以在社会活动过程中所产生的信息量和信息内容差异较大, 对信息管理系统功能要求也会有较大出入。 想要避免一些具体业务在软件上没有提供相应服务或一些功能不能满足企业业务流程需要, 就必须做好系统功能分析, 然后结合总体设计目标和设计思路进行设计。 所以要先了解项目设计目标, 确定信息管理系统适用范围、开发规模、性能要求、使用要求等。 下一步就是进行细致的区分。 通常我们可以分四个板块, 即:中心管理、标的管理、数据库管理与日程管理。 通过这几个模块的细致划分达到资源的合理应用。 中心管理模块负责个人日常工作中产生的信息交流和记录, 并对这些信息进行处理和分析。 项目管理模块则负责对相关信息资源的创建、维护、删除、查询等操作。 管理员模块则能够进行公告维护、会议安排。日报管理模块则能够进行日报添加、审核、统计, 是整个系统的核心模块。 系统管理模块则负责系统基本信息维护和管理, 能够对系统功能进行调整。 此外, 具体管理功能要涉及:后台管理、信息管理、多媒体管理、栏目管理、专题管理、信息采编管理、信息审核流程管理、日志管理等内容。栏目管理中栏目应可排序, 能够控制栏目访问权限, 可设置显示模块和隐藏模块, 可控制信息显示状态和方式, 例如, 动态显示或静态显示。系统的信息管理应具有可变性, 即一方面能够对原有信息进行储存于淘汰, 另一方面可以对信息的编辑进行图形化处理。 一旦将信息系统的数据进行图形化处理后, 我们就可以清晰的得出各种信息类型与信息数据。信息审核流程管理中, 必须有合理、有序、科学的管理机制。 信息审核机制要严格完整, 遵循二级审核机制, 能够明确信息发布人信息, 以便于信息审核与提交。信息审核模块要包括具体具体审核流程、审核方式、审核范围、审核人姓名、审核时间、审核状态, 若未通过审核应可显示未通过原因。只有保障每一个模块的合理性、科学性、完整性, 才能使整个系统安全、稳定、合理, 挥出最大性能。管理模块确定后, 要进行数据库设计。在这里我们就要强调数据库的重要性, 一个运行良好的数据库会包含许多的信息管理内容的。 数据库的容量、科学以及运行是否流畅等问题直接影响着信息系统作用的发挥。 所以要想提高信息系统的效率, 就要优先优化数据库的模式以及结构。 数据库结构要能够体软件数据业务的逻辑关系, 以利用数据库提高数据访问和操作速度。数据库结构设计中要考虑到触发器、函数、存储过程, 并且每一个管理模块应相互关联, 具有类似的结构, 以便于后期维护。 系统的成功与否还要依赖后期的系统功能测试, 也就是通常所说的JUNTI测试法。 JUNIT测试效果好, 功能强, 能够大大降低单元测试难度。

5 结束语

21 世界人类社会正在逐步进入信息时代, 社会活动中产生的信息量越来越大, 内容越来越多, 传统的人工信息管理模式已经不能适应时代发展需求。因此, 在信息管理工作中应积极融入信息管理系统, 通过信息管理系统提供信息管理效率, 提升信息利用率, 发挥信息资源职能。

摘要:随着全球经济的发展及科学技术的不断进步, 21世纪人类社会正在逐步进入信息时代, 信息技术应用范围越来越广, 几乎融入社会活动的所有领域, 人类已开始对信息技术产生依赖性。通过信息技术实现了智能化、高效化、自动化、无纸化办公, 信息管理系统成为了人们工作中不可或缺的重要工具。新经济环境下, 社会活动中产生的信息量越来越大, 内容越来越多, 传统人工信息管理模式已难以取得预期效果, 不仅效率低, 有效性差, 且易造成信息数据丢失或损坏, 将影响信息资源利用率。想要对信息资源进行有效管理, 保障信息安全, 提高信息资源利用率, 就要进行信息化建设, 融入信息技术, 应用信息管理系统。本文将针对基于Struts2的信息管理系统设计与实现展开研究和分析。

关键词:Struts2,信息系统,系统设计,系统实现

参考文献

[1]王益维.基于Struts2的门户网站自动生成系统的设计和实现[D].华中师范大学, 2014.

Struts2 篇10

随着技术的不断发展,越来越多的开发框架不断地进入开发人员的视野中,然而,经过开发人员在实际应用中的检验后,发现每一个框架都有着各自的优势和劣势,那么是否可以将众多的框架进行整合,吸取各自的优势,形成一套更加简洁适用的框架呢?这正是文中内容研究的初衷。

2 SSF框架的三层体系架构

SSF框架是Struts2+Spring+Freemarker 3项技术整合而成的一个自定义框架。Struts2是在Struts1和Web Work的基础上而产生的。Struts2相对于Struts1,它将实现用户业务逻辑(Action)同Servlet API分离开,这种分离机制采用了拦截器或者拦截器栈(拦截器链)的方式,而拦截器正是Struts2的核心内容之一。Struts2的工作流程相对于Struts1要简单,而与Web Work框架基本相同,所以说Struts2是吸取了Struts1和Web Work的优点后的升级版本。

Spring和Struts2一样都是一种轻量级的Java EE应用程序框架,Struts2注重的是降低表现层和逻辑层的耦合程度,主要是把业务逻辑和表现层分开,但是不涉及业务层与持久层的关联。Spring主要是对业务层的细化,也就是更深层次地降低耦合程度。在持久层的封装与整合上,Spring做了很多的努力。Spring的Jdbc Template封装了传统的JDBC程式执行流程,并为用户作了例外处理与资源管理等动作,用户所需要的只是给它一个Data Source,而这只要在Bean定义中完成依赖注入。

Free Marker是一个“模板引擎”。它是使用纯Java编写,是一个可用来生成基于模板的文本的工具。Free Marker在生成页面上面更有实效,尤其是那些遵从MVC模式、基于Servlet的应用程序。MVC模式可以将页面设计人员和程序开发人员分离,从而使个人更加专注在他的专长上面。Free Marker模板不会因为受到复杂的代码片断的影响。即便对于页面设计人员和程序开发人员为同一个人的项目,这样的分离也是有用的,因为这有利于保证代码的整洁和便于维护。

SSF框架采用了Java EE分层体系的思想以及MVC设计模式,定位为3层体系结构,即表现层、业务逻辑层以及数据层,其中表现层又细分为页面资源层和页面模板层,业务逻辑层细分为控制层和业务处理层。SSF框架的体系结构如图1所示。

在Java EE体系里,客户层以及表示逻辑层的一部分被抽象为SSF的表现层,Java EE体系里表示逻辑层的一部分以及业务逻辑层被抽象为SSF的业务逻辑层。这样,从MVC设计模式角度审视SSF,表现层充当了View的角色,业务逻辑层中的控制子层充当了Controller的角色,业务逻辑层中的业务处理层和数据持久层充当了Model的角色。

3 SSF框架核心技术及运作流程

在表现层,SSF的技术亮点在于采用了Free Marker生成最终页面。Free Marker能作为JSP的替代,用于MVC模式的设计时可以分离可视化设计和应用程序逻辑。因此,在SSF框架中由于使用了Free Marker,表现层的设计和实现更加具有层次性。Free Marker中静态部分包含HTML、CSS及Java Script,用HTML设计页面结构,用CSS进行页面风格设定,用Java Script进行验证和动态编程,以及可以使用j Query或Ajax等作为Java Script组件库。

SSF中的业务逻辑层分为控制层、业务处理层以及数据持久层3个子层,3个子层间相互协作,各司其职。在控制子层,采用了Struts2框架。选用Struts2框架的根本原因之一是从SSF的结构性和层次性考虑的,另一方面的考虑就在于Struts2真正的优势是它强调简洁和协作能力的根本理念。使用Struts2将有助于最小化代码并允许开发人员更多的关注业务逻辑和建模而不是诸如编写Servlet之类的事情,并且Struts2支持多种视图技术,其中就支持Free Marker。Struts2在整个体系中具体的作用有以下几点:

(1)将用户的请求封装为一个数据对象。

(2)根据请求的不同,调用相应的逻辑处理单元,并将数据对象作为参数传入。

(3)逻辑处理单元完成后,返回一个结果数据对象。

(4)将结果数据对象中的数据与预先设计的表现层相融合并展现给用户。

在业务处理层,SSF采用了Spring框架。通过Spring的核心容器Io C,将有助于简化代码、可使得业务逻辑与基础架构分离,从而使应用程序更易于维护。在项目中,Spring用于管理整个应用的Service,它是一个非常好的Java Bean工厂,当程序启动加载时,Spring把应用的所有Service放在容器里,通过Bean工厂实例化Service对象,当前端应用调用到Service的时候,它就会把已经通过对象注入的Service提供给应用程序。

与Java EE体系相比,SSF框架在数据持久化方面没有直接使用传统的JDBC,而是引入了第三方组件,即Spring Jdbc Template。Spring Jdbc Template模板是对JDBC的良好封装,通过提供相应的模板和辅助类,在相当程度上降低了JDBC操作的复杂性。

为了能够对SSF框架有一个更加直观的理解,可通过如图2———SSF框架的运作流程图,通过一个使用SSF框架开发的登录功能的流程运作的说明,进一步对SSF框架的核心技术及理念进行理解。

(1)首先用户填写了表单,表单中有用户名、密码,然后提交表单到登录Action,第一步,根据预先写好的web.xml,里面所有的Action都映射到Struts2的Servlet来,于是请求发到了Struts2的控制层。

(2)控制层调用Struts2的分派器类,分派器根据写的配置文件struts.xml,找到login请求应该调用的是Login Action,请求便转发给Login Action。

(3)Login Action调用了由Spring负责管理的Service层,具体负责用户管理的是User Service。

(4)User Service通过和数据库交互,使用Spring Jdbc Template取得了用户的信息。

(5)用户信息存放在一个Map对象中返回给Login Action,在Login Action中判断当前取得的密码是否跟用户的提交密码一致,密码一致后验证通过,返回一个success结果给Struts2分派器。

(6)Struts2分派器根据struts.xml文件中对success结果的映射,调用Free Marker模板引擎解析对应的success.ftl文件。

(7)最终用户获得服务器发回的响应,显示登录成功。

4 SSF框架相对传统Java Web开发的优化

传统的Web开发中,Java EE的逻辑层和业务逻辑层都位于应用服务器上,它们由一些Java EE标准组件JSP(Java Server Page)、Servlet、EJB(Enterprise Java Beans)等来实现。在SSF框架中,虽然也有表现层和业务逻辑层,但实现手段已经进行了改进,图3是SSF框架的技术体系结构图。

从图3中可以看出SSF框架对传统Java Web开发技术的几点改进如下:

(1)更明确的页面分工。SSF框架的页面资源层虽由HTML、CSS、Java Script组成,但是它们分别起到不同的作用,分工上更加明确了。这对于日后项目的修改和代码的重用无疑提供了更可靠的可能性。

(2)页面模版引擎的使用。Free Marker的使用大大改善了JSP造成的页面代码、数据对象以及Java代码混乱的问题。

(3)使用Struts2替代了Java EE里面纯Servlet的功能。Struts2不但可以使用Servlet的处理功能,它本身还有独特的处理功能,起到了MVC框架中核心中枢的功能。

(4)在业务处理上,由于Spring的介入,SSF框架较Java EE更加简便、更加轻量级。SSF框架充分利用了Spring的Io C,使得业务处理时更加简单方便。

(5)与Java EE相比,SSF框架在数据持久层引入了第三方组件JDBC Template,这样节省了许多重复的代码,更好地避免了可能出现的诸如数据库连接泄露等异常,还提高了开发效率。

5 结语

通过对Java EE、Struts2、Spring框架和Freemarker模板技术的研究,提出了集成Struts2和Spring等轻量级框架技术,以及Freemarker模板技术的自定义框架的架构设计方案,并在基于现有的流行框架技术的基础上的某些方面进行创新及改进,拓展出一些新的特性,希望能够在实际的应用中,为开发高效、灵活的Web应用系统提供一种新的思路及方案。

参考文献

[1]罗时飞.精通Spring——深入JavaEE开发核心技术[M].北京:电子工业出版社,2008.

[2]温涛.东软Java软件工程师实例参考手册[M].大连:大连理工大学出版社,2011.

[3]闫术卓,等.Struts2技术详解:基于WebWork核心的MVC开发与实践[M].北京:电子工业出版社,2008.

本文来自 360文秘网(www.360wenmi.com),转载请保留网址和出处

【Struts2】相关文章:

struts2总结学习04-14

实验04struts2crud04-16

MVC以及Struts2工作流程04-22

上一篇:物联网安全威胁下一篇:分级开放

本站热搜

    相关推荐