Struts2[二]
2019-09-24 / JAVA / 1041 次围观 / 0 次吐槽 /多个struts配置文件
n 多个struts配置文件的用途是为了模块开发和减少开发中的冲突
减少开发中的冲突
模块开发
只有一个struts.xml配置
多个struts文件开发
Action接收请求参数的方式
n 我们以一个简单的登录案例来讲解
通过以前的Servlet来获取
通过Action的属性的set方法注入
n struts会通过表单字段的名称,调用set方法,比如username字段会调用setUsername
通过Action的属性的set模型的形式注入
把参数封装到一个User模型中,然后Action提供模型的get/set方法
通Action模型驱动封装参数
参数注入的原理
n 参数会自动注入是因为有两个拦截器在工作
n 查看struts-default.xml源码可以看到下面两个拦截器
n <interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>
n <interceptor name="modelDriven" class="com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor"/>
静态参数注入【少用】
n struts学可以通过在action中静态注入参数,然后在Action提交属性注入
n 这种是静态流入,参数写死
struts自定义参数类型转换
n 前面的多个爱好请求参数,struts框架会自动进行字符串的拼接,如拼接成【泡妞, 写代码, 买房子】,是以逗号+空格类型来拼接的
n 提交生日时,是以2017-08-09的格式提交的,struts也会把字符串转成Date类型,这些都是struts做的类型转换
n 但是如果提交的08/09/2017,struts就会报错【错误的日期表达】
n struts有很多类型转换器
n struts的字符串类型转换是由一个类com.opensymphony.xwork2.conversion.impl.StringConverter类来完成的
n 日期类型转换是由com.opensymphony.xwork2.conversion.impl.DateConverter来完成
n 源码分析得出,如果要自己写一个类型转换
n 可以实现DefaultTypeConverter抽象类
n 我们一般也可以用它的子类StrutsTypeConverter来实现
自定义日期类型转换步骤
第一步:写一个类继承StrutsTypeConverter,并实现抽象方法 |
第二步:实现两个抽象方法的逻辑 |
第三步:配置类型转换器
局部类型转换器
在模型的包下配置【模型名字-conversion.properties】的一个文件,内容如:
birthday=com.cheug.web.convert.MyDateConvert
配置全部类型转换器
n 在类的根路径配置一个xwork-conversion.properties文件
n key为数据类型(全类名)
value为类型转换器的全类名
struts的错误回显
n 前提:将前面用户注册案例的时间转化时,抛出运行时异常
n 在struts.xmp中配置回显页面
n 在页面中添加struts的标签
struts的form表单标签
n struts的from标签提供了和原始html表单几乎一至的属性
n 属性
Action | 请求地址。直接写动作名称,不用写contextPath |
method | 请求方式,默认的是post请求,可以不用写 |
enctype | 静音编码的MIME类型 |
案例:将前面的用户注册案例改成struts的表单标签来显示
strtus的错误处理和中文显示
n struts标签如果有字段错误,会回显信息
设置回显信息为红色
n 添加个s:head标签即可
设置回显信息中文化
n 在模型的包中,添加一个模型+properties,配置key value
key格式为下面的invalid.fieldvalue.字段名
struts的表单数据验证方式
1.服务端Action验证
2 xml声明式验证
全局声明方式
n 在action包中声明UserAction-validation.xml文件
n 这种方式配置是全局配置,所有action的方法都会拦截验证
n 如果其它方法不想验证,可配置@SkipValidation注解
dtd约束可以在xwork-core的jar包中找
n struts默认有很多种验证器类型,声明在default.xml中
局部声明方式
n 在action包中声明UserAction-register-validation.xml文件
声明方式 【Action类名-方法名-validation.xml】
xml内容与上面的一样
- 上一篇:Struts2[一]
- 下一篇:Struts2[三]
Powered By Cheug's Blog
Copyright Cheug Rights Reserved.