day29_struts2验证&拦截器
来源:互联网 发布:傅雷夫妇 死 知乎 编辑:程序博客网 时间:2024/05/22 09:51
回顾
一、结果视图
<result>
元素
属性:name。取值是一个逻辑视图,和动作类中的动作方法返回值对应。默认值是success
type。指示转向目标的类型(结果类型)。默认值是dispatcher
type的取值:struts-default.xml的struts-default包中有定义。
常用的type类型:
chain dispatcher redirect redirectAction
二、自定义结果视图
1、直接或间接实现Result接口:自己输出即可2、定义结果类型3、使用结果类型
三、局部和全局结果视图
1、局部:动作中使用2、全局:所有动作使用
四、封装请求参数:很重要
1、动态参数:由一个叫做params拦截器负责处理的
a、动作类作为模型: XXXAction :username <input name="username"/>b、动作类和模型分开: XXXAction XXX <input name="xxx.username"/>c、动作类和模型分开:模型驱动 动作类实现ModelDriven接口,getModel()返回模型的实例。 叫做modelDriven的拦截器负责处理的
2、静态参数
在配置文件中给属性赋值
由一个叫做staticParams拦截器负责处理的
3、批量添加时:
把数据封装到List或Map中
五、学生注册案例:Struts2+三层架构
六、类型转换:Struts2都做好了。
自定义类型转换器:
a、直接或间接实现TypeConverter接口(建议继承StrutsTypeConverter)b、String---->其他类型 其他类型------>Stringc、注册类型转换器: 局部:XXX-conversion.properties 全局:xwork-conversion.propertiesd、类型转换失败:自动转向一个name=input的逻辑视图错误消息提示和数据的回显:数据回显:最好使用struts2的标签错误提示:前提:继承ActionSupport;XXX.properties invalid.feildvalue.XXX=你的提示叫做conversionError拦截器
一、输入验证
用户输入验证:开发中工作量极大,产出比较低。
客户端验证:用js。防君子不防高手。
服务器端验证:无论何时都必须写。
实际开发:客户端验证+服务器端验证
以下内容:属于服务器端验证
1、编程式验证
编写验证代码:
缺点:验证规则写到了代码中,硬编码。
优点:验证时可以控制的更加精细。(用的少)
a、针对动作类中的所有动作方法进行验证
1、动作类需要实现ActionSupport,覆盖掉public void validate(){}方法
2、方法内部:编写你的验证规则,不正确的情况调用addFieldError添加错误信息
动作类就是模型:
动作类和模型分开:
不使用student.username这种方式添加错误信息s:fieldError标签中和普通标签中都有错误提示消息,使用了,将只会在s:fieldError中显示错误
消息
3、验证失败:
视图:会自动转向一个name=input的逻辑视图
错误消息提示:建议使用struts2标签库。如果没有显示请使用s:fieldError标签
b、针对动作类中的指定动作方法进行验证
方式一:简单。使用一个注解。
方式二:
如果一个动作方法名叫做regist
只针对该方法进行验证,请编写public void validateRegist(){}
2、声明式验证
优点:把验证规则写到了配置文件中。(用得多)
缺点:不是很精细。
错误视图和消息提示和编程式一致。
a、针对动作类中的所有动作方法进行验证
动作类就是模型:
在动作类所在的包中建立:动作类名-validation.xml配置文件。
动作类和模型分开:
在动作类所在的包中建立:动作类名-validation.xml配置文件。
b、针对动作类中的指定动作方法进行验证
在动作类所在的包中建立:动作类名-动作名(是请求的struts.xml配置文件中的)-validation.xml配置文件。
说明:验证功能是由validation拦截器来负责处理的。回显错误信息是由workflow拦截器来负责处理的。
3、Struts2中提供的内置声明式验证器的使用
Struts2提供的声明式验证器在xwork-core-**.jar包的
com\opensymphony\xwork2\validator\validators\default.xml配置文件中。
4、自定义声明式验证(了解怎么运作的)
验证密码的强度:至少一个大写、小写、数字组成。
a、编写一个类,继承FieldValidatorSupport
b、声明自定义的验证器
在构建路径顶端,建立一个固定名称为validators.xml的配置文件
c、可以像使用struts2内置的声明式验证器使用自己定义的验证器了
二、Struts2的国际化:鸡肋
1、配置全局消息资源文件
1.1配置
在struts.xml中配置全局消息资源文件
1.2使用
a、在动作类中使用
前提:必须经过动作方法。动作类要继承ActionSupport
b、在页面上使用
2、配置局部消息资源文件
1、消息资源文件:动作类名_zh_CN.properties
2、访问:
a、在JSP上使用,直接访问的JSP,显示全局消息资源文件的内容。因为没有经过动作类。
b、通过访问动作,转发到JSP,那么显示局部的。
c、通过动作访问,转发到JSP,如果动作类没有继承ActionSupport,那么会显示全局的。
3、自由指定资源包
资源包在某个目录中
三、Struts2中的拦截器:(很重要)
常用的拦截器(面试题):Struts2中功能核心。是一种AOP编程思想的具体应用。
modelDriven:模型驱动servletConfig:获取ServletAPIstaticParams:静态参数注入params:动态参数注入validation:输入验证,声明式验证。等等
1、自定义拦截器(和过滤器功能差不多,保安)开发步骤
a、编写一个类,继承AbstractInterceptor抽象类
b、配置拦截器
c、使用拦截器
必须明确:执行顺序:
2是动作类中的动作方法;3是结果视图
2、编写一个执行动作方法前验证用户是否登录的拦截器
(细粒度权限控制)
a、针对所有动作方法进行拦截的拦截器
b、开发功能更加强大的拦截器
四、文件的上传和下载
1、文件上传
必要前提:
表单的method必须是post
表单的enctype必须是multipart/form-data
提供input type=”file”类型上传输入域
在Struts2中,文件上传是由一个叫做fileUpload完成的。
1.1单文件上传
1.2多文件上传
1.3上传中出现问题
上传失败时,会转向一个input的视图。
错误显示:
修改上传文件的大小
限制上传文件的类型
allowedTypesSet:允许上传的文件的MIME类型,多个用逗号分隔
allowedExtensionsSet:允许上传的文件的扩展名,多个用逗号分隔
修改错误消息提示:与国际化有关
文件上传所有的默认消息提示在:
struts2-core.jar org\apache\struts2\struts-messsages.properties
覆盖掉默认的消息提示:局部消息资源文件无效。
全局资源文件有效:
2、文件下载
OGNL表达式入门
ValueStack:值栈(数据中心)
- day29_struts2验证&拦截器
- 登录验证--拦截器
- 拦截器+验证
- springmvc拦截器验证
- struts2 拦截器 登录验证
- 拦截器实现用户权限验证
- Struts2拦截器登录验证
- Struts2拦截器登录验证
- Struts2拦截器登录验证
- 权限拦截器 用户信息验证
- Struts2的拦截器、自定义拦截器、Struts2 验证机制
- Struts2拦截器—自定义拦截器验证用户登录
- Spring mvc拦截器实现登录验证拦截
- SpringMVC拦截器实现登陆时的验证拦截
- Struts2的拦截器&验证器
- struts2例程--加了验证拦截器
- SSH2 拦截器 登录验证 三步走
- 拦截器对session验证的实现
- Android案例:通过SharePreferences实现记住密码功能
- 一条SQL搞定卡方检验计算
- HTML元素:行内元素和块元素
- Ubuntu14.04下载编译Android6.0内核源码
- 基于深度学习的图像语义编辑
- day29_struts2验证&拦截器
- JS预解析是什么?
- HDU1301&&POJ1251 Jungle Roads
- 原生ajax请求二次封装
- java基础知识大全
- 内存泄漏与内存溢出分析
- poj1751 highway
- js实现『加载更多』
- Hi,我们再来聊一聊Java的单例吧(转)