现在的位置: 首页 > 综合 > 正文

struts2常见面试题

2014年09月05日 ⁄ 综合 ⁄ 共 2613字 ⁄ 字号 评论关闭

搭建struts2的步骤:

1、  创建一个webproject工程

2、  导入jar包

3、  在web.xml文件中编写核心过滤器

4、  写一个action(当struts中写了映射地址时才用写)

5、将struts.xml文件放入类路径(WEB-INF\classes)下:(可以从struts2发型包\apps\struts-blank.war中拷贝)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

</struts>

6、把应用部署到Tomcat中,启动Tomcat,如果没有报错,说明搭建成功

Struts2的工作原理

在web应用启动时就会加载初始化ActionServlet,ActionServlet从

struts-config.xml文件中读取配置信息,把它们存放到各种配置对象

当ActionServlet接收到一个客户请求时,将执行如下流程.

-(1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息;

-(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;

-(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法;

-(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象, 就表示表单验证成功;

-(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的 Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;

-(6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给ActionForward对象指向的JSP组件;

-(7)ActionForward对象指向JSP组件生成动态网页,返回给客户;

为什么要用struts2?


当我们不用框架而仅仅依靠servlet处理问题时,servlet暴露给我们了很多问题

1、  在web.xml文件中需要配置很多行代码,维护起来很不方便,不利于团队合作

2、一个servlet的入口只有一个doPost或者doGet方法,如果在servlet中写很多个方法,代码结构会显得非常混乱。

3、servlet类与servlet容器高度耦合,每个方法中都有两个参数request,response。如果服务器不启动,这两个参数没有办法初始化。

4、如果在servlet的一个方法中有很多功能,会导致该方法相当复杂,不利于维护。

5、如果在一个servlet类中有很多方法,在浏览器中输入访问的url写起来也会相当麻烦

6、在servlet中如果获取页面上表单中的数据,那么在方法中会写很多行。

         而struts恰恰帮我们解决了这系列的问题,基于Struts开发的应用由3类组件构成:控制器组件(ActionServlet/RequestProcessor/Action/ActionMapping/ActionForward)、模型组件、视图组件。

1、利用struts提供的taglib可以节约开发时间;2、维护扩展方便,通过一个配置文件即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。c、表现与逻辑分离

d、表单验证解决了请求数据的验证问题,增强了系统健壮性。

e、便于团队开发

struts的缺点:大量使用标签,对于初学者难度大,ActionForms使用无法进行单元测试

struts提供了几个标签库?

Struts提供了5个标签库,即HTML、Bean、Logic、Template和Logic

HTML 标签 用来创建能够和Struts 框架和其他相应的HTML 标签交互的HTML 输入表单

Bean 标签 在访问JavaBeans 及其属性,以及定义一个新的bean时使用

Logic 标签 管理条件产生的输出和对象集产生的循环

Template 标签 随着Tiles框架包的出现,此标记已开始减少使用

                   Titles框架为创建web页面提供了一种模板机制,能将页面的内容和布局分离。

Nested标签 增强对其他的Struts 标签的嵌套使用的能力

strust的Action是不是线程安全的?如果不是有什么方式可以保证Action的线程安全?

不是线程安全的,只要不声明类变量,因为只存在一个Action类实例,所有线程会共享类变量。

Struts的主要功能包括??

一包含一个controller servlet,能将用户的请求发送到相应的Action对象。二JSP自由tag库,并且在controller servlet中提供关联支持,帮助开发员创建交互式表单应用。三提供了一系列实用对象:XML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提示和消息。

Validator的组成与作用?

1) 实现各种验证规则的Java类  

2) 配置文件  

3) 资源文件  

4) JSP自定义标签  

Validator组件可以很好地解决用户输入数据的验证问题,但它并不是一个独立运行的组件,它可以被

嵌入到目前大部分的Web应用开发框架中。Validator组件的验证方式有多种,既可以通过JavaScript脚本实现用户输入数据的页面验证,也可以实现在后台处理程序中的Java验证

ActionForm的作用?

ActionForm属于一种数据传输对象,联系了前台页面与后台的Action方法,实现了前后台的数据转换和传递。它的作用有:

1、  在显示页面的时候用于完成页面中各种控件的初始化工作。

2、  在用户提交请求的时候,ActionForm又代表了用户所提交的数据,供Action以及后续的业务处理方法使用

3、  可以对用户提交数据的合法性进行验证

待续……

抱歉!评论已关闭.