Struts2框架学习4Day_Struts请求参数合法性校验机制
一个叫李婷的护士不幸感人新型冠状病毒,隔离在房间里,在房间里李婷说我难受,丈夫说那我陪着你,李婷说我不要你陪着我,你离我远一点…李婷在视频通话里问“你后不后悔娶我呀?”,“我后悔没能早点遇见你”…我可能因为羡慕留下了不争气的眼泪 ——2020.03.15
Struts请求参数合法性校验机制
校验的作用域分为全局校验和局部校验
Struts2 支持校验方式:
1、代码中手动数据校验(高耦合、硬编码)
前端代码:
<s:fielderror/> <form action="${pageContext.request.contextPath }/user_login.action" method="post"> 用户名:<input type="text" name="username"/><br/> 密 码:<input type="password" name="pwd"/><br/> <input type="submit" value="登录"/> </form>
Action代码:必须继承ActionSupport,并接受参数
全局校验
@Override public String login() throws Exception { System.out.println(username+"-->"+pwd); return NONE; } public String find() throws Exception { System.out.println(username); return NONE; } public void validate() { //编写校验的逻辑代码,程序运行时会自动调用validate方法进行校验 if(StringUtils.isBlank(username)){ //添加提示信息 //addFieldError 会把错误信息放入一个集合,在页面上通过s:fielderror 标签获取集合中的内容, //在页面上显示错误信息 addFieldError("username_error", "用户名不能为空..."); } if(StringUtils.isBlank(pwd)){ addFieldError("pwd_error", "密码不能为空..."); } }
局部校验
//只校验login方法 public void validateLogin() { //编写校验的逻辑代码,程序运行时会自动调用validate方法进行校验 if(StringUtils.isBlank(username)){ //添加提示信息 //addFieldError 会把错误信息放入一个集合,在页面上通过s:fielderror 标签获取集合中的内容, //在页面上显示错误信息 addFieldError("username_error", "用户名不能为空..."); } if(StringUtils.isBlank(pwd)){ addFieldError("pwd_error", "密码不能为空..."); } }
struts.xml:
<!-- 配置手动验证表单的Action --> <action name="user_*" class="com.igeek_01_validation.LoginAction" method="{1}"> <result name="input">/a_validation/login.jsp</result> </action>
一定要知道:
1.被校验方法首字母要大写。
2.全局校验一定会执行,如果出现局部校验。先执行的局部校验,再执行全局校验。
值得注意的是,你的局部校验和全局校验不能同时对同一个表单内容进行矛盾的校验。
2、XML配置规则进行校验(传说企业推荐)
全局校验
一定要知道:
创建配置全局性的校验文件名::直接是Action的名字-validation.xml
xwork的约束:加在XML里,加约束的方式第一天就写过啦
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
xml代码:
<validators> <field name="username"> <field-validator type="requiredstring"> <message>用户名不能为空(xml)</message> </field-validator> </field> <field name="pwd"> <field-validator type="requiredstring"> <message>密码不能为空(xml)</message> </field-validator> </field> </validators>
其中type属性代表着校验器,每个校验器的作用:
required
必填校验器,要求被校验的属性不能为null
requiredstring
必填字符串校验器,要求被校验的属性不能为null,长度必须大于0,默认情况下会对字符串首尾去空格
stringlength
字符串长度校验器,要求被校验的属性必须在指定的范围内,否则校验失败课程视频
minLength:指定最小长度
maxLength:指定最大长度
trim:指定校验属性被校验时,是否去除字符串前后空格
regex
正则表达式校验器,检查被校验的属性是否匹配某个正则表达式
expression:指定正则表达式
caseSensitive:指定进行正则表达式匹配时,是否区分大小写,默认值为true
Int
整数校验器,要求field 的整数值必须在指定范围内
min:指定最小值
max:指定最大值
double
双精度浮点型校验器,要求field的值必须在指定范围内
min:指定最小值
max:指定最大值
fieldexpression
字段ognl表达式校验器,要求field 满足一个ognl表达式,
expression:指定ognl表达式
该逻辑表达式基于ValueStack进行求值,返回true时,验证通过
email
邮件地址校验器,如果field的内容不为空,则必须是合法邮件地址
url
网址校验器,如果field 的内容不为空,则必须是合法的url 地址
date
日期校验器,field 的内容必须在某个范围内
min:指定最小值
max:指定最大值
conversion
转换校验器,指定在类型转换失败时,提示的错误信息
visitor
用于校验action中复合类型的属性,他指定一个校验文件,校验复合类型中属性
expression
expression:指定ognl 表达式,该逻辑表达式给予ValueStack 进行求值,返回true是校验通过
struts.xml:
<action name="mylogin" class="com.igeek_01_validation.MyLoginAction"> <result>/a_validation/succ.jsp</result> <!--验证出错跳转视图 input --> <result name="input">/a_validation/mylogin.jsp</result> </action>
局部校验
struts.xml:
<action name="myRegist" class="com.igeek_01_validation.MyRegistAction" method="regist"> <result name="input">/a_validation/myRegist.jsp</result> <result name="success">/a_validation/success.jsp</result> </action>
一定要知道:
在Action 执行xml 校验时, 必须要为变量提供getter方法!!!
1.必须要先接收参数(属性驱动、模型驱动)
2.校验文件规则Action名-url-validation.xml(url不是方法名是Action的name 属性)
3、注解的方式校验,暂时不研究
- 点赞
- 收藏
- 分享
- 文章举报
- Struts2请求参数合法性校验机制
- struts2学习笔记----------struts2.1.6接收中文请求参数乱码问题
- Struts2框架学习5Day_Struts拦截器机制
- Struts2.5学习9-HTTP会话接口,Preparable,排除请求参数
- Struts学习_Jquery发送ajax请求以及datatype参数为text/JSON方式
- spring boot 基础学习 - 请求参数映射与参数j校验
- JAVA学习笔记 参数传值机制
- Struts2---请求参数校验
- Struts 2学习及问题记录(4)——拦截器机制
- JavaEE-------------------------自定义Struts 2拦截器得到请求参数
- 学习SpringMVC——如何获取请求参数
- 使用自定义注解进行restful请求参数的校验
- Java学习笔记(十)——方法的参数传递机制
- SSH与SSM学习之Struts209——OGNL表达式与Struts框架结合参数接收
- struts2.X心得7--接收请求参数和struts类型转换介绍以及案例分析
- struts学习:传统方法完成struts注册表单校验与回显数据
- Struts2.0学习笔记---对所有方法进行校验和对某个方法进行校验
- Node入门学习——获取POST请求的参数
- 学习LayUI时自研的表单参数校验框架
- 学习SpringMVC——如何获取请求参数