Struts2是一个流行的Java web开发框架,用于构建MVC(模型-视图-控制器)架构的应用程序。在处理用户输入时,确保数据的有效性和正确性是至关重要的,这就是输入校验的作用。Struts2提供了内置的验证框架Struts2 Validator,帮助开发者实现这一功能。 在Struts2中进行输入校验,主要涉及以下几个步骤: 1. **配置Action**:你需要在Struts2的配置文件中定义Action,并指定一个`input`属性,这是当验证失败时,用户将被重定向到的页面。例如: ```xml <action name="validateAdd" class="com.struts2.validator.ValidateAction" method="add"> <result name="input">/inputPage.jsp</result> </action> ``` 2. **创建验证XML文件**:为每个Action或Action中的每个方法创建对应的验证规则文件。文件名通常是`Action类名-validation.xml`,或者`Action类名-action方法名-validation.xml`。例如,对于名为`add`的方法,文件名为`ValidateAction-validate_add-validation.xml`。 3. **编写XML验证规则**:在创建的XML文件中,定义要验证的字段及其验证规则。字段名称与Action类中对应的属性相对应。例如,验证邮箱字段`mail`的规则可能如下所示: ```xml <validators> <field name="mail"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>Please enter a mail</message> </field-validator> <field-validator type="email"> <message>Invalid MAIL</message> </field-validator> </field> </validators> ``` 这里使用了两种内置验证器:`requiredstring`确保邮箱不为空,`email`验证邮箱格式的合法性。 4. **Struts2内置验证程序**:Struts2提供了一系列预定义的验证程序类型(`type`),如`required`、`requiredstring`、`int`、`date`等,这些可以直接在XML文件中使用。它们对应不同的验证逻辑,例如: - `required`:检查字段值是否为空(不等于null)。 - `requiredstring`:与`required`类似,但会忽略空字符串。 - `int`:验证字段值是否为整数。 - `date`:验证字段值是否符合日期格式。 5. **处理验证失败**:当验证失败时,Struts2会自动将错误信息放入ValueStack,然后跳转到`input`属性指定的页面。但由于ValueStack中的值可能会丢失,你可以选择实现`Preparable`接口并在`prepare()`方法中重新初始化页面所需的数据。为了使`prepare()`方法能获取到表单提交的参数,需要在Action配置中添加`<interceptor-ref name="paramsPrepareParamsStack"/>`。 6. **表单提交与显示错误**:在JSP页面中,使用Struts2标签库如`<s:form>`和`<s:submit>`创建表单,并通过`action`属性指定验证的Action。如果验证失败,Struts2会自动显示错误消息。例如: ```jsp <s:form action="validate_add"> <s:textfield name="mail" label="Email"/> <s:submit value="Submit"/> </s:form> ``` 在表单中,错误消息可以通过`<s:fielderror>`标签显示。 Struts2的输入校验机制提供了一种灵活且易于管理的方式,来确保用户输入的数据符合应用程序的需求,从而提高了应用的健壮性和用户体验。通过合理配置Action、创建验证规则文件并利用内置验证程序,开发者可以轻松地对用户输入进行有效控制。































剩余28页未读,继续阅读


- 粉丝: 1
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- lintcode的算法、数据结构,基于Java和Python的分析、实现。lintcode solutions in java & python..zip
- Linux下基于python的定时提醒工具。主要两个功能,一是间隔一定时间后提醒休息,二是提醒待办事项。.zip
- mitmproxy作为一款出色中间人攻击工具,它在渗透、爬虫、ajax-hook、抓包
- mitmproxy非常适合捕捉网络流量,但是对于Java用户没有简单的接口
- MUI+Vue 的webapp, 后台基于python tornado 框架.zip
- NextB的基于敏感哈希的恶意文件相似度比较工具(python版本).zip
- Neural Cloud Auto Helper based on ADB and Python _ 基于python的云图计划护肝助手.zip
- OnlineJudge系统,实现了一般OJ功能,基于python _ tornado.zip
- Pinchy是一个基于Python+FastAPI开发的脚本调度执行系统
- PySunday是一个 快速的、简单的、插件化的 用于快速开发基于python的工具的集成库.zip
- Opencv实战基于python,银行卡识别、全景图片拼接、OCR图片识别.zip
- Python prometheus client for kafka logsize(Prometheus基于kafka logsize监控).zip
- python 实现基于语义的关键词提取.zip
- Python 数据分析初探项目 基于 Python 数据可视化的网易云音乐歌单分析系统 大学编程作业(TUST 天津科技大学 2022 年).zip
- Python+Spark+Hadoop大数据基于用户画像电影推荐系统毕业源码案例设计.zip
- python011基于Python协同过滤算法的电影推荐系统带vue前后端分离毕业源码案例设计.zip


