没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
22页
struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc struts面试题大全.doc
资源推荐
资源详情
资源评论
* Struts 几个面试题收集
1 说说 Struts 的优点、缺点
Struts 是开源软件,使开发者能更深入的了解其内部实现机制。
Struts 优点:
业界”标准”(很多成功案例),学习资源丰富。
Struts 的优点主要集中体现在两个方面:Taglib 和页面导航。
a、利用 Struts 提供的 taglib 可以大大节约开发时间。
b、维护扩展比较方便。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着
莫大的好处。
c、表现与逻辑分离
d、表单验证解决了请求数据的验证问题,增强了系统健壮性。
e、便于团队开发
Struts 缺点:
a、大量的使用标签,对于初学者难度较大。
b、ActionForms 使用不便、无法进行单元测试(StrutsTestCase 只能用于集成)
Struts 提供了几个标签库?都是什么标签库?
Struts 提供了五个标签库,即:HTML、Bean、Logic、Template 和 Nested。
HTML 标签 用来创建能够和 Struts 框架和其他相应的 HTML 标签交互的 HTML 输入表单
Bean 标签 在访问 JavaBeans 及其属性,以及定义一个新的 bean 时使用
Logic 标签 管理条件产生的输出和对象集产生的循环
Template 标签 随着 Tiles 框架包的出现,此标记已开始减少使用
Nested 标签 增强对其他的 Struts 标签的嵌套使用的能力
2 分析一下 struts 是如何实现 MVC 的。
Struts 采用 jsp 作为 MVC 的视图,由 ActionServlet 具体指定的 action 动作类作为控制器即 MVC 中的 C,
负责视图与模型之间的交互。控制器的每个入口点都由名为 struts-config.xml 的配置文件设置。该文件
把来自视图的请求映射为特定的 JAVA 类以进行相应的处理,控制器还指定下一个视图的位置。Struts 中
的模型主要指的就是 javabean,它是模型的代表,主要封装数据和业务逻辑。
3 说说 Struts 的处理流程:
控制器进行初始化工作,读取配置文件,为不同的 Struts 模块初始化相应的 ModuleConfig 对象。控制器
接收 Http 请求,并从 ActionConfig 中找出对应于该请求的 Action 子类,如果没有对应的 Action,控制
器直接将请求转发给 JSP 或者静态页面,否则控制器将请求分发至具体的 Action 类进行处理。
在控制器调用具体的 Action 的 Execute 方法之前,ActionForm 对象将利用 Http 请求中的参数来填充自已。
还可以在 ActionForm 类中调用 Validate 方法来检查请求参数的合法性,并且可以返回一个包含所有错误
信息的 ActionErrors 对象。
执行具体的的 Execute 的方法,它负责执行相应的业务逻辑。执行完后,返回一个 ActionForward 对象,
控制器通过该 ActionForward 对象来进行转发工作。也可以把 Action 要处理的业务逻辑封装在 JavaBean
中,如果系统中还有 EJB,那么通过 JavaBean 调用 EJB 以完成业务处理;如果没有 EJB,那么就直接在
JavaBean 中连接数据库,进行数据库相关的操作。
4 说说 Struts 几个关键对象的作用:Action、ActionServlet、ActionForm
* Struts 中 DispatchAction 和 Action 类有什么不同
DispatchAction 是 Struts 包含的另一个能大量节省开发时间的 Action 类。与其它 Action 类仅提供单个
execute()方法实现单个业务不同,DispatchAction 允许你在单个 Action 类中编写多个与业务相关的方法。
这样可以减少 Action 类的数量,并且把相关的业务方法集合在一起使得维护起来更容易。
要使用 DispatchAction 的功能,需要自己创建一个类,通过继承抽象的 DispatchAction 得到。对每个要
提供的业务方法必须有特定的方法 signature。例如,我们想要提供一个方法来实现对购物车添加商品清
单,创建了一个类 ShoppingCartDispatchAction 提供以下的方法:
public ActionForward addItem(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response){
throws Exception;
}
那么,这个类很可能还需要一个 deleteItem()方法从客户的购物车中删除商品清单,还有 clearCart()方
法清除购物车等等。这时我们就可以把这些方法集合在单个 Action 类,不用为每个方法都提供一个 Action
类。
在调用 ShoppingCartDispatchAction 里的某个方法时,只需在 URL 中提供方法名作为参数值。就是说,调
用 addItem()方法的 URL 看起来可能类似于:
http://myhost/storefront/action/cart?method=addItem
其中 method 参数指定 ShoppingCartDispatchAction 中要调用的方法。参数的名称可以任意配置,这里使
用的”method”只是一个例子。参数的名称可以在 Struts 配置文件中自行设定。
* struts 的控制器如何知道什么样的信息转发到什么样的 Action 类呢?
在 struts 中,控制器信息转发的配置映射信息是存储在特定的 XML 文件(比如 struts-config.xml)中的。
这些配置信息在系统启动的时候被读入内存,供 struts framework 在运行期间使用。在内存中,每一个
<action>元素都与 org.apache.struts.action.ActionMapping 类的一个实例对应。当可以通过
/logonAction.do(此处假设配置的控制器映射为*.do)提交请求信息的时候,控制器将信息委托
com.test.LogonAction 处理。调用 LogonAction 实例的 execute()方法。同时将 Mapping 实例和所对应的
LogonForm Bean 信息传入。其中 name=LogonForm,使用的 form-bean 元素所声明的 ActionForm Bean。
* 介绍一下 struts 的 Action 类
ActionServlet 把全部提交的请求都被控制器委托到 RequestProcessor 对象。RequestProcessor 使用
struts-config.xml 文件检查请求 URI 找到动作 Action 标示符。
一个 Action 类的角色,就像客户请求动作和业务逻辑处理之间的一个适配器(Adaptor),其功能就是将
请求与业务逻辑分开。这样的分离,使得客户请求和 Action 类之间可以有多个点对点的映射。而且 Action
类通常还提供了其它的辅助功能,比如:认证(authorization)、日志(logging)和数据验证
(validation)。
Action 最为常用的是 execute()方法当 Controller 收到客户的请求的时候,在将请求转移到一个 Action
实例时,如果这个实例不存在,控制器会首先创建,然后会调用这个 Action 实例的 execute()方法。Struts
Framework 为应用系统中的每一个 Action 类只创建一个实例。因为所有的用户都使用这一个实例,所以你
必须确定你的 Action 类运行在一个多线程的环境中。
* 介绍 一下 struts 的 ActionServlet 类
ActionServlet 继承自 javax.servlet.http.HttpServlet 类,其在 Struts framework 中扮演的角色是中心
控制器。它提供一个中心位置来处理全部的终端请求。控制器 ActionServlet 主要负责将 HTTP 的客户请求
信息组装后,根据配置文件的指定描述,转发到适当的处理器。
按照 Servelt 的标准,所有得 Servlet 必须在 web 配置文件(web.xml)声明。同样,ActoinServlet 必须
在 Web Application 配置文件(web.xml)中描述,有关配置信息如下。
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
</servlet>
全部的请求 URI 以*.do 的模式存在并映射到这个 servlet,其配置如下:
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
一个该模式的请求 URI 符合如下格式:
http://www.my_site_name.com/mycontext/actionName.do
中心控制器为所有的表示层请求提供了一个集中的访问点。这个控制器提供的抽象概念减轻了开发者建立
公共应用系统服务的困难,如管理视图、会话及表单数据。它也提供一个通用机制如错误及异常处理,导
航,国际化,数据验证,数据转换等。
当用户向服务器端提交请求的时候,实际上信息是首先发送到控制器 ActionServlet,一旦控制器获得了
请求,其就会将请求信息传交给一些辅助类(help classes)处理。这些辅助类知道如何去处理与请求信
息所对应的业务操作。在 Struts 中,这个辅助类就是 org.apache.struts.action.Action。通常开发者需
要自己继承 Aciton 类,从而实现自己的 Action 实例。
* Struts 中最核心的类和包有哪些?
1. org.apache.struts.action
基本上,控制整个 struts framework 的运行的核心类、组件都在这个包中,比如我们上面提到的控制器
ActionServlet。已经 Action,ActionForm,ActionMapping 等等。struts1.1 比 1.0 多了 DynaActionForm
类。增加了动态扩展生成 FormBean 功能
2. org.apache.struts.actions
这个包是主要作用是提供客户的 http 请求和业务逻辑处理之间的特定适配器转换功能,而 1.0 版本中的部
分动态增删 FromBean 的类,也在 struts1.1 中被 Action 包的 DynaActionForm 组件所取代
3. org.apache.struts.config
提供对配置文件 struts-config.xml 元素的映射。这也是 sturts1.1 中新增的功能
4. org.apache.struts.util
Strtuts 为了更好支持 web application 的应用,体统了一个些常用服务的支持,比如 Connection Pool 和
Message Source。详细信息请参考
http://jakarta.apache.org/struts/api/org/apache/struts/util/package-summary.html
5. org.apache.struts.taglib
这不是一个包,而是是一个客户标签类的集合。下面包括 Bean Tags,HTML Tags,Logic Tags,Nested
Tags,Template Tags 这几个用于构建用户界面的标签类。
6 . org.apache.struts.validator
Struts1.1 framework 中增加了 validator framework,用于动态的配置 from 表单的验证。
* 如何配置 struts + spring ?
在 struts-config.xml 加入一个插件,通过它加载 applicationContext.xml
在 struts-config.xml 修改 action-mapping 标记,具体 action 交给了 DelegateActionProxy�
通过 DelegateActionProxy 进入一 spring 的环境。�
在 spring 的 applicationContext.xml 加入�<bean name=”/login” class=”" singleton=”false”/>
* Spring 与 struts 的区别
strusts:是一种基于 MVC 模式的一个 web 层的处理。
Spring:提供了通用的服务,ioc/di aop,关心的不仅仅 web 层,应当 j2ee 整体的一个服务,可以很容易融
合不同的技术 struts hibernate ibatis ejb remote springJDBC springMVC
* 如何用 struts 实现国际化
国际化:不用修改代码,就适用于不同的语言国家
本地化:如果要适应一个国家,要修改源代码
实现过程:
在 struts-config.xml 中用如下标签说明资源文件名,注意其只是文件名,没有语言_国家
<message-resources parameter=”struts.ApplicationResources” />
在资源文件对应的目录 struts 中加入适应不同语言、国家的 properties 文件
ApplicationResources_zh_CN.properties 中国
ApplicationResources_en_US.properties us
如果不是英语要转码
native2ascii -encoding gb2312 源 ApplicationResources_zh_CN.properties
在 jsp 页面中用
<bean:message key=”"/>取出信息
如何实现 struts 的 validate 框架
手动:
public class myForm extends ActionForm �
{�
public� ActionErrors validate()
{�
actionErrors.add(ActionErrors.GLOBAL_MESSAGE,new ActionMessage(”properties 中的键名”));
}�
} �
struts-config.xml 中修改 action 的标签 validate=true�
input=”错误页面”�
如果 validate 方法中的 ActionErrors 不为空且 size�>0 时
会回到 input 页面。�
自动�
public� class myForm extends ValidateForm
{�
不能覆盖 validate 方法。�
//public void� validate()
//{�
�
//}�
} �
在 struts-config.xml 文件中加入插件�
� <plug-in className=”org.apache.struts.validator.ValidatorPlugIn”>
� <set-property property=”pathnames”
value=”/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml” />
� </plug-in>
修改 validation.xml 中的内容�
errors.required={0} is� required.
errors.minlength={0} can not be less than {1} characters.�
�<formset>
�<form name=”loginForm”>
�<field property=”userName” depends=”required”>
�<arg0 key=”userName” />
�</field>
�<field property=”pwd” depends=”required,minlength”>
�<arg0 key=”pwd” />
�<arg1 key=”${var:minlength}” resource=”false”/>
�<var>
�<var-name>minlength</var-name>
�<var-value>6</var-value>
�</var>
�</field>
�</form>
�</formset>
struts-config.xml 中修改 action 的标签 validate=true�
input=”/错误页面”�
* 如何在 struts 中配置数据源,在什么文件?用什么标签?如何取出 DataSource
Struts-config.xml
<data-sources>
<data-source key=”data” type=”org.apache.commons.dbcp.BasicDataSource”>
<set-property
property=”driverClassName” value=”com.microsoft.jdbc.sqlserver.SQLServerDriver” />
<set-property
剩余21页未读,继续阅读
资源评论
悠闲饭团
- 粉丝: 150
- 资源: 3301
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功