50 个最热门的 Struts 面试问题及答案 (2025)
以下是 Struts 面试问题和答案,可帮助应届毕业生和有经验的应聘者获得理想的工作。
1. Struts框架由哪些组件组成?
Struts框架由以下组件组成:
- Java Servlet
- JSP(Java 服务器页面)
- 自定义标签
- 消息资源
2. 处理程序在基于 MVC 的应用程序中的作用是什么?
处理程序的工作是将请求传输到适当的模型,因为它们与 MVC 架构的模型层绑定。处理程序使用配置文件中的映射信息进行请求传输。
3. 基于 Struts 的应用程序中请求的流程是怎样的?
基于Struts的应用程序采用MVC设计模式。请求流程如下:
- 用户通过单击任何链接或提交任何表单与 View 进行交互。
- 当用户交互时,请求被传递给控制器。
- 控制器负责将请求传递给适当的操作。
- Action 负责调用 Model 中已实现所有业务逻辑的函数。
- 该动作接收来自模型层的响应,然后将其传递到用户能够看到响应的视图。
4.控制器使用哪个文件来获取请求路由的映射信息?
控制器使用配置文件“struts-config.XML 文件获取所有映射信息,以决定使用哪个操作来路由用户的请求。
5. Struts中Action类起什么作用?
在 Struts 中,Action 类充当控制器并执行以下关键任务:
- 收到用户请求后,处理用户的请求。
- 使用适当的模型并从模型中提取数据(如果需要)。
- 选择适当的视图向用户显示响应。
6. 如何创建 actionForm bean?
代孕
actionForm bean 是通过扩展类创建的 org.apache.struts.action.ActionForm
In the following example we have created an actionForm bean with the name 'testForm':
import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.*; public class testForm extends ActionForm { private String Id=null; private String State=null; public void setId(String id){ this.Id=id; } public String getId(){ return this.Id; } public void setState(String state){ this.State=state; } public String getState(){ return this.State; }
7. Validator FrameWork 支持哪两种验证类型?
Validator Framework 用于表单数据验证。该框架提供两种类型的验证:
- 用户浏览器上的客户端验证
- 服务器端验证
8. Struts 安装的步骤是什么?
为了使用 Struts 框架,我们只需要在开发环境中添加 Struts.Jar 文件。一旦 jar 文件在 CLASSPATH 中可用,我们就可以使用该框架并开发基于 Strut 的应用程序。
9. 如何在 JSP 表单上启用客户端验证?
为了在 Struts 中启用客户端验证,首先我们需要在 struts-config.xml 文件中启用验证器插件。这可以通过在此文件中添加以下配置条目来完成:
<!-- Validator plugin --> <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文件中定义验证规则。如果表单包含电子邮件字段,并且我们想为该字段启用客户端验证,则在validation.xml文件中添加以下代码:
<form name="testForm"> <field property="email" depends="required"> <arg key="testForm.email"/> </field> </form>
10. Struts 配置文件中如何使用 action-mapping 标签进行请求转发?
在 Struts 配置文件(struts-config.xml)中,转发选项在 action-mapping 标签下定义。
在以下示例中,当用户点击超链接时 测试.do,请求将被转发至 /pages/testing.jsp 使用 struts-config.xml 文件中的以下配置:
<action path="/test" forward="/pages/testing.jsp">
当用户点击 jsp 页面上的以下超链接时,将发生此转发:
<html:link</strong> page="/test.do</strong>">Controller Example</html:link>
11. 在 Struts 中如何控制表单重复提交?
在Struts中,action类提供了两个重要的方法,可用于避免重复表单提交。
动作类的 saveToken() 方法生成一个唯一的令牌并将其保存在用户会话中。然后使用 isTokenValid() 方法来检查令牌的唯一性。
12. 在 Struts 中,我们如何访问 Java bean 及其属性?
Bean Tag Library 是一个可用于访问 Java bean 的 Struts 库。
13. 在 Struts 中哪个配置文件用于存储 JSP 配置信息?
对于 JSP 配置细节,使用 Web.xml 文件。
14. 动作类的 Execute 方法有什么用途?
动作类的 Execute 方法负责执行业务逻辑。如果用户请求需要任何处理,则在此方法中执行。此方法返回 actionForward 对象,该对象将应用程序路由到适当的页面。
在下面的例子中,execute方法将返回一个在struts-config.xml中定义的名为“exampleAction”的actionForward对象:
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class actionExample extends Action { public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception{ return mapping.findForward("exampleAction"); } }
15. Struts Validation 框架中的validation.xml 和validator-rules.xml 文件有什么区别?
在 Validation.xml 中,我们为任何特定的 Java bean 定义验证规则,而在 validator-rules.xml 文件中,定义标准和通用验证规则。
16. 如何在 JSP 页面上向用户显示所有验证错误?
为了根据 validation.xml 文件中定义的验证规则显示所有验证错误,我们使用JSP 文件中的标签。
17. Struts 中的声明式异常处理是什么?
当在 struts-config.xml 或 action 标签内定义异常处理的逻辑时,它在 Struts 中被称为声明式异常处理。
在下面的例子中,我们在 struts-config.xml 文件中为 NullPointerException 定义了异常:
<global-exceptions> <exception key="test.key" Type="java.lang.NullPointerException" Path="/WEB-INF/errors/error_page.jsp" </global-exceptions>
18.什么是DynaActionForm?
DynaActionForm 是一种特殊类型的 actionForm 类(ActionForm 类的子类),用于动态创建表单 bean。它使用配置文件来创建表单 bean。
19. 在 Struts 中使用 Tiles 需要进行哪些配置更改?
为了使用 Tiles 框架创建可重用的组件,我们需要在 struts-config.xml 文件中添加以下插件定义代码:
<plug-in className="org.apache.struts.tiles.TilesPlugin" > <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" /> <set-property property="moduleAware" value="true" /> </plug-in>
20. Jakarta Struts 和 Apache Struts 有什么区别?哪个更好用?
两者相同,没有区别。
21.Struts.xml配置文件有什么用?
Struts.xml 文件是 Struts 框架的关键配置文件之一,用于定义 URL 和动作之间的映射。当控制器收到用户请求时,控制器使用此文件中的映射信息来选择适当的动作类。
22. Struts 中如何定义标签库?
标签库定义在配置文件(web.xml)里面标记如下:
<taglib> <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri> <taglib-location>/WEB-INF/struts-bean.tld</taglib-location> </taglib>
23. Struts中的逻辑标签有什么意义?
在 Struts 中使用逻辑标签有助于在表示层编写干净高效的代码,而无需使用脚本。
24. Formbean 的两种作用域类型是什么?
- 请求范围: Formbean 值仅在当前请求中可用
- 会议范围: Formbean 值适用于当前会话中的所有请求。
25. 在 Struts 中,怎样将相关的动作归为一组?
要将多个相关操作分组到一组,我们可以使用 DispatcherAction 类。
26.什么时候应该使用 SwtichAction?
使用 SwitchAction 类的最佳场景是当我们有一个模块化应用程序,其中多个模块独立工作时。使用 SwitchAction 类,我们可以从一个模块中的资源切换到应用程序其他模块中的另一个资源。
27. Struts框架有什么好处?
Struts 基于 MVC,因此 Struts 中不同层之间的分离非常好,这使得 Struts 应用程序的开发和定制变得简单。使用不同的配置文件使得 Struts 应用程序易于配置。此外,Struts 是开源的,因此成本低廉。
28. 应用程序从 Struts1 迁移到 Struts2 需要哪些步骤?
从 Struts1 到 Struts2 的迁移需要以下步骤:
- 将 Struts1 actionForm 移动到 Struts2 POJO。
- 将Struts1配置文件(struts-config.xml)转换为Struts2配置文件(struts.xml)
29. 在 Struts 中如何验证表单的属性?
为了验证填充的属性,在将 formbean 的控制权交给 Action 类之前,使用 ActionForm 类的validate()方法。
30.ActionForm类的reset方法有什么用?
actionForm 类的 reset 方法用于在发起新请求之前清除表单的值。
31. Struts 有什么缺点?
尽管 Struts 具有大量相关优点,但它也需要更大的学习曲线,并且降低了开发过程的透明度。
Struts 还缺乏适当的文档,并且对于它的许多组件,用户无法获得适当的在线资源来获取帮助。
32. Struts Validation 框架中的 resourcebundle.properties 文件有什么用?
resourcebundle.properties 文件用于以键值对的形式定义代码中可能发生的任何错误的特定错误消息。
这种方法有助于保持代码清洁,因为开发人员不需要将所有错误消息嵌入代码中。
33. 我可以有吗 HTML 表单属性没有关联的 getter 和 setter formbean 方法吗?
对于每个 html 表单属性,必须定义 formbean 中的 getter 和 setter 方法,否则应用程序将导致错误。
34. Struts 应用程序中使用了多少个 servlet 控制器?
Struts 框架采用集中控制方法的概念,整个应用程序由单个 servlet 控制器控制。因此,我们在 servlet 应用程序中只需要一个 servlet 控制器。
35. 对于单个 Struts 应用程序,我们可以有多个 struts-config.xml 文件吗?
我们可以为单个应用程序设置任意数量的 Struts-config.xml 文件。
为此我们需要以下配置:
<servlet> <servlet-name>action</servlet-name> <servlet-class> org.apache.struts.action.ActionServlet </servlet-class> <init-param> <param-name>config</param-name> <param-value> /WEB-INF/struts-config.xml /WEB-INF/struts-config_user.xml /WEB-INF/struts-config_admin.xml </param-value> </init-param> ............. ............. </servlet>
36. Struts 支持哪些模型组件?
Struts 支持所有类型的模型,包括 Java bean、EJB、CORBA。但是,Struts 不内置对任何特定模型的支持,开发人员可以自行选择使用任何模型。
37.什么时候使用IncludeAction有用?
IncludeAction 是 Struts 提供的动作类,当需要 Struts 和基于 Servlet 的应用程序之间集成时很有用。
38. Struts 线程安全吗?
是的,Struts 是线程安全的。在 Struts 中,不需要新的 servlet 对象来处理每个请求;而是为每个新请求使用一个新的 action 类对象线程。
39. 在 Struts 中使用资源文件需要进行哪些配置更改?
通过在 struts-config.xml 文件中添加以下配置条目,可以在 Struts 中使用资源文件(.properties 文件):
<message-resources parameter="com.login.struts.ApplicationResources"/>
40. 如何在 Struts 应用程序中使用嵌套 Bean?
Struts 为此提供了一个单独的标签库(嵌套标签库)。使用这个库,我们可以在任何基于 Struts 的应用程序中嵌套 bean。
41. Struts框架的核心类是什么?
以下是Struts框架提供的核心类:
- 动作类
- ActionForm 类
- ActionMapping 类
- ActionForward 类
- ActionServlet 类
42. 我们可以以编程方式处理 Struts 中的异常吗?
是的,我们可以通过在代码中使用 try、catch 块以编程方式处理 Struts 中的异常。
try { // Struts code } Catch (Exception e) { // exception handling code }
43. Struts 框架是 J2EE?
虽然 Struts 框架基于 J2EE 技术,如 JSP、Java Beans、Servlets 等,但它不是 J2EE 标准的一部分。
44. 在 Struts 中如何配置动作映射?
动作映射在配置文件 struts-config.xml 中的标签下进行配置如下:
<pre><action-mappings> <action path="/login" type="login.loginAction" name="loginForm" input="/login.jsp" scope="request" validate="true"> <forward name="success" path="/index.jsp"/> <forward name="failure" path="/login_error.jsp"/> </action> </action-mappings>
45. 什么时候应该选择 Struts 框架?
当下列任何或某些条件成立时,应该使用 Struts:
- 需要高度强大的企业级应用程序开发。
- 需要一个可重复使用、高度可配置的应用程序。
- 需要松散耦合的、基于 MVC 的应用程序,并且不同层之间有明确的划分。
46. 为什么 Struts 中的 ActionServlet 是单例?
在 Struts 框架中,actionServlet 充当控制器,用户发出的所有请求都由该控制器控制。ActionServlet 基于单例设计模式,因为只需为该控制器类创建一个对象。稍后会为每个用户请求创建多个线程。
47. 在 Struts 中设置验证器框架需要哪些步骤?
在 Struts 中设置验证器框架需要以下步骤:- 错误的拼写
- 在 WEB-INF 目录中放置 valdator-rules.xml 和 validation.xml 文件。
- 通过添加以下内容在 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>
48. Struts 中的 View 层可以使用哪些技术?
在Struts中,我们可以在视图层使用以下任意一种技术:
- JSP
- HTML
- XML/XSLT
- WML 文件
- 速度模板
- 小服务程序
49.actionForm 正常工作的条件是什么?
ActionForm 必须满足以下条件才能正常工作:
- 它必须有一个无参数的构造函数。
- 它应该对其所有属性具有公共的 getter 和 setter 方法。
50. Struts 为复选框、文本框等表单元素提供了哪个库?
Struts 提供 HTML 标签库,可用于添加表单元素,如文本字段、文本框、单选按钮等。
这些面试问题也会对你的口试有帮助
非常感谢先生,太棒了 ;):) 下载 pdf 链接无效。谢谢
错误已修复!感谢报告
谢谢先生 :):)