当前位置:文档之家› Java开源架构技术学习重点(部分答案版)(1)

Java开源架构技术学习重点(部分答案版)(1)

第一章 Strut2框架技术的入门1、Struts2的是怎么产生的?Struts2是Struts的下一代产品,是在Struts1和WebWork的技术基础上进行了合并,全新的Struts2框架。

其全新的Struts2的体系结构与Struts1的体系结构的差别巨大。

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

因此Struts2和Struts 1有着太大的变化,但是相对于WebWork,Struts2只有很小的变化。

2、Struts2的设计模式是什么?采用这种设计模式有什么好处?MVC模式MVC模式对于Web应用的开发无疑是一种非常先进的设计思想,无论选择哪种语言,无论应用多复杂,它都能为理解分析应用模型提供最基本的分析方法,为构造产品提供清晰的设计框架,为软件工程提供规范的依据。

1. 模型(Model)Model 部分包括业务逻辑层和数据库访问层。

在Java Web 应用程序中,业务逻辑层一般由JavaBean或EJB构建。

Model 部分就是业务流程或状态的处理以及业务规则的制定。

业务流程的处理过程对其他层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。

业务模型的设计可以说是MVC最主要的组件。

MVC并没有提供模型的设计方法,而只提供给用户应该组织管理这些模型,以便于模型的重构和提高重用性。

2. 视图(View)在Java Web 应用程序中,View 部分一般用JSP 和HTML 构建,也可以是XHTML、XML、Applet和JavaScript。

客户在View 部分提交请求,在业务逻辑层处理后,把处理结果又返回给View部分显示出来。

因此,View部分也是Java Web应程序的用户界面。

一个Web项目可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理以及响应用户的请求,而不包括在视图上的业务流程的处理。

业务流程的处理由模型负责。

3. 控制(Controller)Controller 部分由Servlet 组成。

当用户请求从View 部分传过来时,Controller 把该请求发给适当的业务逻辑组件处理;请求处理完成后,又返回给Controller。

Controller再把处理结果转发给适当的View 组件显示或者调用Model。

因此,Controller 在视图层与业务逻辑层之间起到了桥梁作用,控制了两者之间的数据流向。

模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。

如果用户通过某个视图的控制器改变了模型的数据,所有其他依赖于这些数据的视图都应反映到这些变化。

因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,使显示得到及时更新。

MVC设计模式工作流程是:用户的请求(V)提交给控制器(C);控制器接受到用户请求后根据用户的具体需求,调用相应的JavaBean或者EJB (M部分)来进行处理用户的请求;控制器调用M处理完数据后,根据处理结果进行下一步的调转,如跳转到另外一个页面或者其他Servlet。

3、在MyEclipse环境下怎么配置Struts2?在MyEclipse9.1中已经集成了Struts2的插件,直接使用就可以。

新建一个项目“ch01”后,单击“MyEclipse”->“Project Capabilities”->“Add Struts Capabilities”,如图1-22所示,弹出对话框如图1-23所示的对话框,在图1-23中选择“Struts2.1”后弹出另外一个对话框,在该对话框中单击“Next”,弹出如图1-24对话框。

在图1-24中可以选择Struts2类库,进行选择后点击“打开”,Struts2类库在MyEclipse项目中配置完成。

配置完成后,在“ch01”项目中将自动添加一个Struts2的包“Struts2 Core Libraries”。

如需使用Struts2的最新版本,可以在该包中导入。

图1-22图1-234、Struts2的工作原理是什么?图1-26Struts2的工作原理如图1-26所示,用户请求提交后经过多个拦截器拦截后交给核心控制器FilterDispatcher处理,核心控制器读取配置文件struts.xml,根据配置文件的信息指定某一个业务控制器Action(POJO类)来处理用户数据,业务控制器调用某个业务组件进行处理,在处理的过程中可以调用其他模型组件共同完成数据的处理。

Action处理完后会返回给核心控制器FilterDispatcher一个处理结果,核心控制器根据返回的处理结果读取配置文件struts.xml,根据配置文件中的配置,决定下一步跳转到哪一个页面。

5、Struts2的核心组件是什么?怎么配置?P151.FilterDispatcher控制器FilterDispatcher是一个过滤器,是Struts2的核心控制器,控制着整个Web 项目中数据的流向和操作。

与Web应用程序整合的MVC框架需要web.xml配置文件。

基于MVC的Web框架需要在Web应用程序中加载一个核心控制器,Struts2框架需要加载FilterDispatcher,需在web.xml中进行配置。

除了web.xml配置文件配置核心控制器FilterDispatcher外,Struts2控制数据的操作时,还需要Struts2本身的配置文件struts.xml。

2. struts.xml配置文件在Struts2中核心的配置文件是struts.xml,用户请求提交给核心控制器FilterDispatcher后,具体由那个业务控制器Action来完成,是struts.xml 配置文件中配置的,根据配置文件struts.xml中的数据,核心控制器FilterDispatcher调用某个业务控制器Action来完成数据的处理,处理完数据后把处理结果通过其他对象返回给核心控制器FilterDispatcher,核心控制器根据struts.xml配置文件的数据,决定下一步的操作。

所以Struts2中struts.xml是核心配置文件,在控制器操作中起到关键作用。

3.Action控制器Action是Struts2的业务控制器,可以不实现任何接口或者继承Struts2类,该Action类是一个基本的Java类,具有很高的可重用性。

Action中不实现任何业务逻辑,只负责组织调度业务模型组件。

第二章 Struts2核心组件1、struts.xml的文件结构,根标签是<struts>,其中可以带哪些子标签?struts.xml配置文件的基本结构(struts.xml)<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "/dtds/struts-2.0.dtd"><struts><!-- Bean配置--><bean name="Bean的名字" class="自定义的组件类"/><!-- 常量配置,指定Struts2国际化资源文件Bean的名字messageResource。

--><constant name="struts.custom.i18n.resources" value="messageResource"/><!--导入一个配置文件,通过这种方式可以将Struts2的Action按模块配置到多个配置文件中。

--><include file="example.xml"/><!-- 所有的Action配置都应该放在package下,name定义包名,extends 定义继承包空间struts-default。

--><package name="zzf" extends="struts-default"><!--对Action的配置,可以有多对;name是对业务控制器命名,在表单中指定的地址;class指定类的位置。

--><action name="login" class="ch01Action.LoginAction"><!-- 定义两个逻辑视图和物理资源之间的映射, name值是Action中返回的结果--><result name="error">/login/login.jsp</result><resultname="success">/login/success.jsp</result></action></package></struts>2、常量如何配置?常量配置在struts.xml中的配置格式如下:<constant name="属性名" value="属性值"/><constant/>元素的常用属性有:name:指定常量(属性)的名字。

value:指定常量的值。

例如,在struts.xml文件中,配置国际化资源文件名和字符集的编码方式为“gb2312”,代码如下:<!-- 常量配置,指定Struts2国际化资源文件Bean的名字messageResource。

--><constant name="struts.custom.i18n.resources" value="messageResource"/><!--常量配置,指定国际化编码方式。

--><constant name="struts.custom.i18n.encoding" value="gb2312"/>对应的配置在struts.properties文件中的配置代码如下:struts.custom.i18n.resources=messageResourcestruts.custom.i18n.encoding=gb2312<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class><init-param><!--指定国际化资源文件常量--><param-name>struts.custom.i18n.resources</param-name><param-value>messageResource</param-value><!--指定编码方式常量--><param-name>struts.custom.i18n.encoding</param-name><param-value>gb2312</param-value></init-param></filter>3、包含如何配置?包含配置在struts.xml中的配置格式如下:<include file="文件名"/><include />元素的常用属性有:flie:指定文件名,必选项。

相关主题