Cheug's Blog

当前位置:网站首页 / JAVA / 正文

Struts2[二]

2019-09-24 / JAVA / 1041 次围观 / 0 次吐槽 /

struts配置文件

多个struts配置文件的用途是为了模块开发减少开发中的冲突

减少开发中的冲突

image.png

模块开发

    只有一个struts.xml配置

image.png

    多个struts文件开发

image.png


Action接收请求参数的方式

我们以一个简单的登录案例来讲解

    通过以前的Servlet来获取

image.png

image.png

image.png

通过Action属性的set方法注入

struts通过表单字段的名调用set方法,比如username字段调用setUsername

image.png

通过Action属性的set模型的形式注入

image.png

参数封装到一个User模型中,然后Action提供模型的get/set方法

image.png

image.png

Action模型驱动封装参数

image.png

image.png

参数注入的原理

参数会自动注入是因为有拦截器在工作

struts-default.xml源码可以看到下面两个拦截器

<interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>

<interceptor name="modelDriven" class="com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor"/>

image.png

静态参数注入少用

struts可以通过在action静态注入参数,然后Action提交属性注入

种是静态流入,参数写死

image.png

struts自定义参数类型转换

前面的爱好请求参数,struts框架会自动进行字符串的拼接,如拼接成【泡妞, 写代码, 买房子】,逗号+空格类型来拼接的

提交生日时,2017-08-09格式提交的,struts会把字符串转成Date些都struts做的类型转换

是如果提交的08/09/2017,struts就会报错【错误的日期表达】

image.png

struts类型转换器

image.png

struts字符串类型转换是由一个类com.opensymphony.xwork2.conversion.impl.StringConverter来完成的

日期类型转换是由com.opensymphony.xwork2.conversion.impl.DateConverter来完成

源码分析得出,如果要自己写一个类型转换

实现DefaultTypeConverter抽象

我们一般也可以用它的子类StrutsTypeConverter实现

自定义日期类型转换步骤

步:一个类继承StrutsTypeConverter,实现抽象方法

实现两个抽象方法的逻辑

image.png

第三配置类型转换器

局部类型转换器

  在模型包下配置【模型名字-conversion.properties一个文件内容如:

birthday=com.cheug.web.convert.MyDateConvert

配置全部类型转换器

在类的根路径配置一个xwork-conversion.properties文件

key为数据类型(全类名)

    value类型转换器的全类名

struts错误回显

前提前面用户注册案例的时间转化时,抛出运行时异常

image.png

struts.xmp配置回显页面

image.png

页面添加struts标签

image.png

image.png

strutsform表单标签

strutsfrom标签提供了和原始html表单几乎一的属性

属性

Action

请求地址。直接写动作名称,用写contextPath

method

请求方式,认的是post请求以不用写

enctype

静音编码的MIME类型

 

案例:前面的用户注册案例struts表单标签来显示

image.png

strtus的错误处理和中文显示

struts标签如果有字段错误,回显信息

设置回显信息为红色

添加s:head标签即

image.png

设置回显信息中文化

模型的包中,添加一个模型+properties配置key value

key格式为下面的invalid.fieldvalue.字段名

image.png

struts的表单数据验证方式

1.服务Action验证

image.png

2 xml声明式验证

全局声明方式

action中声明UserAction-validation.xml文件

种方式配置是全局配置,action方法都会拦截验证

如果其它方法不想验证,配置@SkipValidation注解

dtd约束可以在xwork-corejar包中找

image.png

struts默认有很多种验证器类型,声明在default.xml

image.png

局部声明方式

action中声明UserAction-register-validation.xml文件

    声明方式 Action类名-方法-validation.xml

              xml内容与上面的一样


Powered By Cheug's Blog

Copyright Cheug Rights Reserved.