Struts2框架核心概念与配置解析
4星 · 超过85%的资源 需积分: 9 187 浏览量
更新于2024-09-17
3
收藏 47KB DOC 举报
"Struts2基础面试题"
Struts2是一个流行的Java Web框架,用于构建MVC(Model-View-Controller)架构的应用程序。在Struts2中,核心控制器不再是Struts1中的ActionServlet,而是StrutsPrepareAndExecuteFilter。这个过滤器负责处理请求,协调工作流程,但它并不是一个Servlet,而是实现了javax.servlet.Filter接口。
在部署Struts2时,我们需要在`web.xml`文件中配置Struts2的过滤器。通常,我们会创建一个名为`struts2-convention`的过滤器,将`filter-class`设置为`org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter`,然后在`filter-mapping`中指定URL模式。URL模式可以是`.action`,也可以是`/*`。`.action`模式会仅拦截以.action结尾的请求,而`/*`模式则会拦截所有请求。当设置为`/*`时,即使请求的是JSP页面,Struts2也会执行默认的拦截器栈。
关于Action的要求,Struts2中的Action并不强制要求继承特定的类或实现特定的接口。默认情况下,Action可以是任何实现了`com.opensymphony.xwork2.Action`接口的类,但通常我们推荐继承`ActionSupport`类,因为它提供了内置的错误处理和校验功能。默认处理请求的方法是`execute()`,方法原型为`String execute()`,返回值表示后续的视图或结果。
在Struts2中,表单数据不再像Struts1那样封装到ActionForm对象中,而是直接映射到Action的属性。Struts2使用OGNL(Object-Graph Navigation Language)来解析请求参数并自动赋值给Action的属性,无论这些属性是基本类型还是自定义类型。
对于非String类型的表单输入,Struts2提供了类型转换机制。有两种类型的转换:全局和局部。全局转换配置在`xwork-conversion.properties`文件中,而局部转换的配置文件位于每个Action类的同级目录下,命名为`{Action}-conversion.properties`。例如,如果Action类名为`UserAction`,则转换配置文件应命名为`UserAction-conversion.properties`。
输入校验在Struts2中可以通过继承`ActionSupport`类并覆盖`validate()`方法来实现。校验规则可以在`validate()`方法内编写,如检查用户名和密码不能为空。输入校验发生在类型转换之后,因为校验是基于Action属性的,这意味着表单数据已经被转换并赋值给Action的属性。
输入校验有两个执行阶段:一是发生在Action实例化和字段赋值之前,二是发生在Action转向JSP页面时,将Action属性转化为字符串显示。这样可以确保在展示错误消息或处理业务逻辑之前,输入数据的正确性。
Struts2的核心控制器、部署配置、Action设计、表单数据绑定、类型转换和输入校验等都是面试中常见的知识点,理解并掌握这些概念对于在Java Web开发领域的工作至关重要。
2020-08-28 上传
2014-02-20 上传
2012-08-23 上传
2014-04-02 上传
2016-10-30 上传
2010-12-09 上传
2011-07-25 上传
D08540125
- 粉丝: 0
- 资源: 6
最新资源
- SSM Java项目:StudentInfo 数据管理与可视化分析
- pyedgar:Python库简化EDGAR数据交互与文档下载
- Node.js环境下wfdb文件解码与实时数据处理
- phpcms v2.2企业级网站管理系统发布
- 美团饿了么优惠券推广工具-uniapp源码
- 基于红外传感器的会议室实时占用率测量系统
- DenseNet-201预训练模型:图像分类的深度学习工具箱
- Java实现和弦移调工具:Transposer-java
- phpMyFAQ 2.5.1 Beta多国语言版:技术项目源码共享平台
- Python自动化源码实现便捷自动下单功能
- Android天气预报应用:查看多城市详细天气信息
- PHPTML类:简化HTML页面创建的PHP开源工具
- Biovec在蛋白质分析中的应用:预测、结构和可视化
- EfficientNet-b0深度学习工具箱模型在MATLAB中的应用
- 2024年河北省技能大赛数字化设计开发样题解析
- 笔记本USB加湿器:便携式设计解决方案