Struts2练习题说课讲解

合集下载

北京动力节点-Struts2讲义-第1章Struts2入门

北京动力节点-Struts2讲义-第1章Struts2入门

Struts2讲义第1章Struts2入门1.1 Struts2简介1.1.1 框架1.1.2 Struts2简介1.1.3 Struts2下载与版本Struts2官网:版本号的意义:Alpha:内测版,一般不向外部发布,会有很多Bug。

Beta:除错 + 增新内测版,但相对于Alpha版已有了很大的改进,消除了严重错误,但还是存在缺陷,需经更多测试来消除。

这个阶段的版本会加入新的功能。

RC:除错Release Candidate,发行候选版,外测版。

与Beta版最大的区别在于Beta阶段会加入新功能,而RC版一般不会加入新功能,而主要着重于除错。

RC版本是最终发放给用户的最接近正式版的版本,发行后改正bug就是正式版了,是正式版之前的最后一个测试版。

GA:General Availability,普通有效版,稳定版,官方开始推荐广泛使用了。

Release:发行版,即最终版。

在一系列测试版之后的正式发行版本,是最终交付用户使用的一个版本。

该版本也称标准版。

Release会以单词形式出现在软件封面上,有时会使用符号R。

1.1.4 Strut2的优点(1)Struts2是非侵入式设计Struts2的Action类为POJO类,不依赖于Servlet API和Struts API。

(2)Struts2提供了拦截器,利用拦截器可以进行AOP编程,实现如权限拦截等功能。

(3)Struts2提供了类型转换器,可以将特殊的请求参数转换成需要的类型。

(4)Struts2的输入验证可以对指定方法进行验证。

(5)提供了全局范围、包范围和Action范围的国际化资源文件管理实现。

1.2 Struts2开发环境的搭建1.2.1 Struts2的Jar包Struts2最基本的Jar包,可以从Struts2框架解压目录下的apps中的struts2-blank.war 中获取。

将struts2-blank.war扩展名修改为zip后,解压。

Struts 2 讲义(2)

Struts 2 讲义(2)

Struts2(2) 工作原理一、Struts2框架结构Struts2框架按照模块来划分,可以分为Servlet Filters、Struts核心模块、拦截器和用户实现部分。

Struts2框架结构图如图4-1所示。

图4-1 Struts 2框架结构图一个请求在Struts2框架中的处理大概分为以下几个步骤。

①客户端提交一个(HttpServletRequest)请求,如上文在浏览器中输入http://localhost: 8080/bookcode/ch2/Reg.action就是提交一个(HttpServletRequest)请求。

②请求被提交到一系列(主要是3层)的过滤器(Filter),如(ActionContextCleanUp、其他过滤器(SiteMesh等)、FilterDispatcher)。

注意:这里是有顺序的,先ActionContext CleanUp,再其他过滤器(Othter Filters、SiteMesh等),最后到FilterDispatcher。

③FilterDispatcher是控制器的核心,就是MVC的Struts2实现中控制层(Controller)的核心。

④F ilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个(HttpServlet Request)请求,如果ActionMapper决定需要调用某个Action,FilterDispatcher则把请求的处理交给ActionProxy。

⑤ActionProxy通过Configuration Manager(struts.xml)询问框架的配置文件,找到需要调用的Action类。

例如,用户注册示例将找到UserReg类。

⑥ActionProxy创建一个ActionInvocation实例,同时ActionInvocation通过代理模式调用Action。

但在调用之前,ActionInvocation会根据配置加载Action相关的所有Interceptor(拦截器)。

尚学堂Struts2_01

尚学堂Struts2_01

版权所有:尚学堂科技
尚学堂
手把手教程
Struts+Hibernate+Spring
我的第一个Struts2——控制器Action
开发HelloWorldAction public class HelloWorldAction { private String name = ""; // 用户输入的姓名 private String message = ""; // 向用户显示的信息 //当Struts 2处理用户请求时,在默认配置下调用的方法 public String execute() { // 根据用户输入的姓名,进行“Hello,XXXX!”的封装 this.setMessage("Hello,"+this.getName()+"!"); return "helloWorld"; // 处理完毕,返回“helloWorld” } … //省略setter、getter方法 }
截获所有请求 从请求的URL中分析功能 分发到相应的处理类中 根据处理结果进行跳转
2. 编写处理类
1. 编写处理类接口(Action)
String execute(request,response)方法
2. 编写处理类的实现类xxxAction
版权所有:尚学堂科技
尚学堂
手把手教程
Struts2通过StrutsPrepareAndExecuteFilter过滤器来启动,在web.xml 文件中加入如下配置: <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping>

Struts2企业开发实践教程课后练习答案-第一章

Struts2企业开发实践教程课后练习答案-第一章

试验目的:•熟悉S t r u t s 2框架的基本组成。

•掌握S t r u t s 2应用的配置基础。

试验大纲:•掌握S t r u t s 2的引入和配置。

•掌握A c t i o n的编写和配置。

•掌握A c t i o n的访问。

试验任务:•创建办公自动化J a v a W e b项目o a w e b 。

•配置S t r u t s 2框架( 引入J A R, 修改w e b . x m l ) 。

•创建S t r u t s的配置文件s t r u t s . x m l 。

•创建用户增加页面“/ u s e r / a d d . j s p ”,显示的表单和表单元素如表1 - 3所示。

表1 - 3 表单及表单元素表单表单元素账号文本框密码密码框姓名文本框简介文本域提交按钮•创建用户增加处理A c t i o n “ a c t i o n . U s e r A d d A c t i o n ”, 编写 A c t i o n处理方法e x e c u t e ( ) , 并在自己的配置文件中配置p a c k a g e 、 a c t i o n和r e s u l t( 1 )取得输入的用户信息。

( 2 )如果账号、密码、姓名任何一个为空, 则自动跳转到增加页面。

2 1( 3 )如果账号、密码、姓名都不为空, 则直接在A c t i o n 中连接数据库, 将用户信息增加到用户表中, 数据库和用户表自己确定。

( 4 )增加用户成功后自动跳转到用户主页“/ u s e r / m a i n . j s p ”。

( 5 )如果增加失败, 自动跳转到用户增加页面“/ u s e r / a d d . j s p ”。

•编写用户主页“/ u s e r / m a i n . j s p ”。

显示的“增加新用户成功! 继续增加新用户”信息中“增加新用户”为超链接, 单击后可自动跳转到用户增加页面。

Struts2试题上课讲义

Struts2试题上课讲义

Struts2 试题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元素,找到与返回值对应的result2.struts2的web里需要配置什么?1.<filter>2.<!-- 配置Struts2核心Filter的名字 -->3.<filter-name>struts2</filter-name>4.<!-- 配置Struts2核心Filter的实现类 -->5.<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>6.</filter>7.<!-- 配置Filter拦截的URL -->8.<filter-mapping>9.<!-- 配置Struts2的核心FilterDispatcher拦截所有用户请求 -->10.<filter-name>struts2</filter-name>11.<url-pattern>/*</url-pattern>12.</filter-mapping>3.struts.xml文件哪个常量可以实现不用重新启动服务就可以得到反馈?Timmer4.struts中的package的作用是什么?namespace可以为空吗?如果namespace为空会意味着什么呢?标识可以、如果没写,说明该包为默认空间只要敲index没有精确对应的package都交给namespackage 如果还没有就崩溃5.Action 的实现通集成常用那种方法?一种是直接实现自己的Action另一种是实现Action的接口继承ActionSupport6.路径设置用什么路径,绝对还是相对?都可以7.通配符有几种?要遵循什么原则?{1}方法名8.Action的属性?path属性:指定请求访问Action的路径type属性:指定Action的完整类名name属性:指定需要传递给Action的ActionForm Beanscope属性:指定ActionForm Bean的存放范围validate属性:指定是否执行表单验证input属性:指定当表单验证失败时的转发路径。

struts2讲义

struts2讲义

e.g. ums_struts2_02_action/struts.xml Ⅲ. 使用 DMI 或通配符 目的:减少 Action 的数量 方式一:动态方法调用(Dynamic Method Invocation DMI,struts2.1 后不建议使 用) 定义一个 Action 类,类中可以定义多个与 execute()方法,声明部分相同但方法名 不同的方法。 e.g. ums_struts2_02_action/UserAction_DMI.java 1、定义 UserAction_DMI 类
e.g. ScopeAction_3.java 方式四:实现 ServletRequestAware 接口
e.g. ScopeAction_4.java 注意:1、其中,前两种方式与 Servlet API 解耦合,后两种方式与 Servlet API 耦合,推荐使 用第二种方式,第二种方式使用了 IOC 的模式,解耦合更好。 Ⅵ.Action 中生成响应信息 e.g. ums_struts2_02_result Struts2 框架通过 Action 中 execute()方法的返回值,与 struts.xml 中<action>的<result>元 素的 name 属性值来判断最终响应信息的内容。其中<result>元素设置如下: <result type=”结果类型” name=”名称”>WEB 资源路径或名称</result> 说明: 1、name:result 名称随便起,默认为“success“,与 execute 方法返回值一致。 2、 WEB 资源路径或名称:WEB 资源路径如果为相对路径,则该路径相对于 WEB 应用上下文。如果跳转到 Action 则为该 Action 所对应的<action>元素的 name 值。 3、 type:设置生成响应信息的类型,默认为 dispatcher。 (Ⅰ)ActionSupport 中预定义的结果常量 在 Struts2 的 ActionSupport 类中预定义了一些 Result 常量,当定义的 Action 类继承了 ActionSupport 时就可以使用这些结果常量,当然也可以使用自定义的 result 字符串。

Struts2考试题分析

Struts2考试题分析

题目1以下不属于Struts2中result的type属性( )A.actionB.redirectC.redirectActionD.dispatcher题目2下列有关拦截器说法错误的是?A.struts通过拦截器完成执行action请求处理方法前一系列操作。

例如:数据封装、文件上传、数据校验等B.在struts中,直接访问jsp页面,struts将使用默认拦截器栈处理当前请求。

C.在执行action时,struts将执行若干拦截器1、2、3,执行action完成后,将继续执行拦截器3、2、1D. 默认情况,在一个action没有配置拦截器的引用,说明当前action将不使用拦截器题目3以下哪些是Action接口提供的返回值?A.successB.noneC.errorD.input题目4如果要实现struts2的数据检验功能A普通的Action类可以实现B继承自Action接口的可以实现C继承自ActionSupport类可以实现D继承自ActionValidate类可以实现题目5struts2默认的处理结果类型是:A.dispatcherB.redirectC.chainD.forward题目6在值栈的上下文Context中,存在一些固定的key表示不同的对象,以下描述正确的是?A.request,表示request作用域的数据B.session,表示session作用域的数据C.application,表示application作用域的数据D.parameters,表示请求参数的所有数据题目7以下属于struts2配置文件中的配置元素是:()多选)A.<package>B.<action>C.<form-beans>D.<action-mappings>题目8有关值栈 context Map栈数据操作描述正确的是?A.ActionContext.getContext().put(key,value) 直接对context进行操作B.使用<s:property value="#key"/>获得context中指定key的内容C.ActionContext.getContext().getSession().put(key,value); 将数据放置context 固定key为session对应的map中D.ActionContext.getContext().getApplication().put(key,value); 将数据放置context固定key为application对应的map中题目9有关<s:iterator/>描述正确的是?A.value属性的值对应值栈中的相关的数据B.默认情况,将遍历的每一个数据都临时压入到root的栈顶,遍历结束时再将数据移除C.如果使用var属性,在值栈的context中存放一个键值对D.如果使用status属性,可以获得当前遍历的状态。

Struts 2讲义(一)

Struts 2讲义(一)

Struts 2入门讲义宋 铁11/2011CH 基本1. 2. 3. Str 1. 称作1体与内单应会导况更设计上讲务的深层页需意,中提和内H10. St 本内容Struts 2的由下载和搭建案例:基于ruts 2的Model 1早期的JSP 规作JSP Model 体系中,如图内容的分离,应用的需要,导致JSP 页内更为严重。

尽计人员开发并讲,将导致角Model 2体的方法。

它吸层次的处理任需要使用的b 在JSP 页内没提取动态内容内容,明确了truts 由来和概述。

Struts 2的运Struts 2的H 由来和概、Model 规范提出了两1 和JSP Mod 1所示,JSP 因为所以的它却不能满被嵌入大量尽管这对于Ja 并维护的――通角色定义不清体系结构,如吸取了两种技任务。

在这里ean 和对 象没有处理逻辑容插入静态模了角色的定义2(一)运行环境。

HelloWorld 程概述2和MVC 两种用JSP 技del 2,它们的P 页面独自响数据存取都是满足复杂的大的脚本片段或ava 程序员来通常这是开发清和职责分配图1.图2所示,是术各自的突出,servlets 充象,同时根据用辑;它仅负责模板。

在我看来义以及开发者)程序。

C技术建立应用的本质区别在响应请求并将是由bean 来型应用程序的或Java 代码,来说可能不是发大型项目的不明,给项 Model 1示是一种把JS 出优点,用J 充当控制者的用户的动作决责检索原先由来,这是一种与网页设计用程序的方式在于处理批量将处理结果返来完成的。

尽的实现。

不加,特别是当需是什么大 问题的规范――这项目管理带来示例图P 与servlets JSP 生成表达角色,负责管决定把那个J 由servlets 创建种有代表性的计者的分工。

式。

这两种方量请求的位置返回客户。

这尽管 Model 1加选择地随意需要处理的请题,但如果JS 这就确实是个来不必要的麻联合使用来达层的内 容,管理对请求的JSP 页传给请建的对象或 的方法,它清事实上,项方式在术语中置不同。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Struts 2作业1.简述什么是MVC?答:MVC 的全称为model-view-controller(模型-视图-控制器)。

MVC 是一种开发应用程序的模式,这个模式已经具有了很好的框架架构,并且十分容易维护。

使用MVC 开发出来的应用程序一般包括以下几块内容:·控制器(Controller):控制器类处理客户端向Web 应用程序发出的请求,获取数据,并指定返回给客户端,用来显示处理结果的视图。

·模型(Model):模型类代表了应用程序的数据,这些数据通常具有一个数据验证逻辑,用来使得这些数据必须符合业务逻辑。

·视图(View):视图类是Web 应用程序中用来生成并显示HTML 格式的服务器端对客户端请求的响应结果的模板文件2.Struts 2以(WebWork)为核心,采用(拦截器)的机制来处理用户的请求。

3.简述一个请求在Struts 2框架中的处理流程,请按自己对框架的理解叙述。

答:1-用户提交自己的请求;2-由web.xml拦截,转发到action进行处理;3- Struts.xml根据相应的action配置,调用相应的方法来处理,并根据结果转发到不同的页面。

4.不属于Action接口中定义的字符串常量是( B )?A)SUCCESSB)FAILUREC)ERRORD)INPUT5.资源文件的后缀名为(D)?A)txtB)docC)propertyD)properties6.在JSP页面中可以通过Struts 2提供的(D)标签来输出国际化信息。

A)<s:input>B)<s:property>C)<s:submit>D)<s:text>7.以文字过滤拦截器为例,简述拦截器的使用步骤。

答:1-用户提交自己的请求;2-由web.xml拦截,转发到action进行处理;3- Struts.xml根据相应的action配置,调用相应的方法来处理,并根据结果转发到不同的页面;8.在同一个系统中配置多个拦截器,试说明它们的执行顺序。

答:一般来说:先配置的拦截器,会先获得执行的机会,但是实际情况不是这样。

execute()方法执行之前,配置在前面的拦截器,会先对用户的请求起作用。

execute()方法执行之后,配置在后面的拦截器,会先对用户的请求起作用。

(两头向中间靠拢的执行)。

9.请简述struts2中输入校验的几种方式。

答:客户端校验:在客户端用过使用javascript脚本对用户输入的数据进行校验;服务器校验:在服务器端对数据进行校验。

10.使用配置方式实现输入校验有哪两种方式?它们的命名规则是?如果同时配置了两种方式,寻找校验文件的顺序是?答:-1 重写validate()方法实现和validateXxx()方法实现;-2 命名规则:必须以validate开头;-3 顺序:当被请求的action方法处理逻辑还有相应的validateXxx()方法。

那么该校验方法将在validate()校验之前进行。

11.校验器配置风格有哪两种?举例解释使用标签的含义。

答:-1 一种是字段优先,称为字段校验器风格;一种是校验器优先,称为非字段校验器风格。

-2 字段校验器:以<field> 指定action中校验的属性<field-validator>指定校验器,message为校验器的失败提示信息 key为国际化资源文件中的key -3 非字段校验器:以<validate>为基本元素。

Type指定该元素的类型, Param 指定传人参数。

12.Struts 2哪些内置校验器支持客户端校验?以及如何通过Struts 2标签自动生成客户端校验代码?答:必填校验器(required)必填字符串校验器(requiredstring)字符串长度校验器(stringlength)整数校验器(int)日期校验器(date)邮件地址格式校验器(email)网址格式校验器(url)转换校验器(conversion)表达式校验器(expression)字段表达式校验器(fieldexpression)正则表达式校验器(regex)13.自定义校验器必须实现哪个接口?注册校验器的配置文件应如何命名?答:实现com.opensymphony.xwork2.validator.Validator;接口;配置文件必须以validate.xml命名;14.按照自己的理解,谈谈自定义类型转换器的方法。

答:1 继承DefaultTypeConverter类;2 注册局部类型转换器方法在Action所在的目录下,创建ActionClassName-conversion.properties文件,文件内容格式syntax: <propertyName> = <converterClassName>;3 注册全局类型转换器方法在classpath的根下创建 xwork-conversion.properties 文件,文件内容语法:syntax: <type> = <converterClassName>15. Struts2中动态调用的格式(CD)A)ActionName?methodName.do。

B)ActionName!methodName.do。

C)ActionName?methodName.action。

D)ActionName!methodName.action。

16什么是国际化?国际化资源文件的命名格式是?答:国际化是(i18n)指的是软件设计阶段,就应该使软件具有支持多种语言和地区的功能、这样,当需要在应用中添加对一种新语言和国家的支持是不需要对已有的软件返工,不需要修改的代码;java资源文件的命名可以有3种格式: basename_language_country.properties basename_language.properties basena me_properties17.在页面中使用(<s:text>)输出国际化信息;在Action类中如何输出国际化信息?表单标签中又当如何?答:在action类中,可以继承actionSupport,使用getText()方法得到国际化信息;在表单标签中,通过key属性指定资源文件的key18.加载国际化资源文件有哪四种方式?答:加载全局范围资源文件,加载包范围资源文件,加载action范围资源文件,加载临时指定范围内的资源文件;19.按照你的理解,谈谈如何实现自由选择语言环境?答:Struts 2提供一个名字为i18n的拦截器,并已把该拦截器添加到默认拦截器中。

i18n拦截器自动查找客户端请求中名字为request_locale的参数,并根据该参数实例化一个Locale对象。

Struts 2会把Locale保存在Session中的一个名字为WW_TRANS_I18N_LOCALE 的属性中,该属性值将会作为浏览器默认的Locale.20.请画出OGNL上下文的结构示意图。

解释如何访问OGNL上下文的对象?常常需要配合哪个Struts标签使用?答:添加值栈,将值存放到值栈里面,在页面访问方式# 配合<s:property>21.Struts 2默认响应请求的后缀名是.action,若要配置Struts 2只处理以.do为后缀名的请求,有哪些方法?若要处理多个后缀又当如何?答:1 .可以修改struts.xml 和struts.properties来修改默认的配置,在struts.xml中<struts>添加子接点<constant name=”struts.action.extension” value=”do” />或者是修改struts.properties文件添加struts.action.extension = do这都是一样的效果注意:struts.xml 和struts.properties的都放在src下发布的时候会自动拷贝到WEB-INF/classes下2. 在web.xml里面的filter中加入<init-param>值为do; 3 处理多个后缀,在步骤1里面用逗号隔开添加即可;22.实现在Action中访问Servlet API有哪几种方法?答:直接访问方式,间接访问方式,ioc和非ioc方式;23.Struts 2文件上传需要用到那两个包?根据你的理解,谈谈实现文件上传的步骤。

答:Comons-fileupload-1.2.1.jar 和 commons-io-1.2.1.jar第一步:在web-inf/lib下面添加必须的jar文件第二步:把form表单的enctype设置为“multipart/form-data”; 第三步:在action 类中;添加必要属性: private File upload;//得到上传文件的类型 private String uploadFIletype;//文件类型 private String uploadFileName;//文件名称24.在strutrs2中数据验证失败时,通过(D)标签显示错误信息。

E)<s:text>F)<s:error>G)<s:faild>H)<s:fielderror>25.以下配置文件上传拦截器只允许bmp图片文件代码,正确的是(D)。

I)<param name="allowedTypes">*.bmp </param>J)<param name="allowedTypes">bmp </param>K)<param name="allowedTypes">image/*.bmp </param>L)<param name="allowedTypes">image/bmp </param>26.如下代码,对DemoAction起作用的拦截器有( B )。

<package name="default" extends="struts-default" ><default-interceptor-ref name="testInterceptor"/><action name="DemoAction" class="action.DemoAction" ><interceptor-ref name="demoInterceptor" /></action></package>M)只有testInterceptor.N)只有demoInterceptor.O)都不起作用。

相关文档
最新文档