版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、经典Java EE企业应用,郑州大学软件学院,杨枫(),本次课的主要内容,类型转换器,输入校验,Struts2支持的文件上传和下载,3,Struts2的拦截器,4,Struts2的Ajax支持,1.,2.,3.,4.,5.,类型转换器,Struts2的类型转换 Http请求参数都是字符串类型,MVC框架必须将这些字符串参数转换成相应的数据类型。,输入数据,必须进行类型转换,输出数据,无需类型转换,浏览器,Web应用,类型转换器,Struts2的类型转换 Struts2内建的类型转换器 Struts2内建了字符串类型和boolean、char(character)、int(Integer)、lo
2、ng(Long)、float(Float)、double(Double)、Date、数组和集合之间相互转换的转换器。 实例:PlusDemo 基于OGNL的类型转换 Struts2允许利用OGNL语法将请求参数转换成复合类型,如类类型。只需在客户端JSP页面利用OGNL表达式定义表单域的各个属性,如 实例: PlusDemo1, PlusDemo2,类型转换器,Struts2的类型转换 自定义类型转换器 按照某种分割将字符串转换成复合对象 类型转换器需要实现TypeConverter接口或继承DefaultTypeConverter类(重写convertValue()方法) 必须将类型转换器注
3、册在web应用中,使用一个properties文件 实例:MyConverterDemo 基于struts2的自定义类型转换器 Struts2提供了一个StrutsTypeConverter抽象类,将convertValue()方法改造成两个方法convertFromString()和convertToString() 同样需要注册类型转换器 实例:StrutsTypeConverter,类型转换器,Struts2的类型转换 类型转换中的错误处理 Struts2提供了一个名为conversionError的拦截器,如果发生类型转换错误,该拦截器将负责将对应错误封装成表单域错误(FieldErr
4、or),并将这些错误信息放入ActionContext中。 为了让Struts2框架处理类型转换错误,Action应该继承ActionSupport类 在JSP页面中利用标签输出类型转换错误信息 实例:errorHandler,输入校验,编写校验规则文件 Struts2提供了基于验证框架的输入校验,只需编写简单的配置文件,Struts2的验证框架将会负责进行服务器校验和客户校验。 可以利用配置文件,实现校验信息的国际化提示 实例:ValidateDemo 使用客户端校验 将输入页面的表单元素改为使用struts2标签实现 为元素增加validate=“true”属性 将页面移动到WEB-INF
5、/content目录下,使核心filter起作用。 实例:ClientValidate,输入校验,字段校验器配置风格 元素是校验规则文件的基本组成单位 true 非字段校验器配置风格 元素是校验规则文件的基本组成单位 name true 短路校验器 为或指定一个short-circuit=“true”属性,将某些校验提示信息屏蔽。 true ,输入校验,校验文件的搜索规则 当一个Action包含多个处理逻辑或者两个Action有继承关系,此时需要为校验规则文件增加校验规则别名文件的方式来实现校验的处理逻辑。 总的校验规则是多个校验规则文件的规则总和 实例:overrideRule 基于Anno
6、tation的输入校验 使用Annotation来定义每个字段应该满足的规则 使用验证器Annotation修饰Action里各属性对应的setter方法 实例:annotation,输入校验,内建校验器 必填校验器 必填字符串校验器 整数校验器 日期校验器 表达式校验器 字段表达式校验器 邮件地址校验器 网址校验器 Vistor校验器 转换校验器 字符串长度校验器 正则表达式校验器 实例:validatorDemo,输入校验,手动完成输入校验 重写validate()方法 继承ActionSupport类,重写validate()方法 实例:OverrideValidate 重写valida
7、teXxx()方法 对于多个处理逻辑的校验,会有多个validateXxx()方法,重写这多个方法,可以实现对不同处理逻辑的独立校验处理。 实例:ValidateXxx,输入校验,Struts2的输入校验步骤,对请求参数执行类型转换,转换是否出错,将错误提示保存到ActionContext,内建验证器进行验证,conversionError负责将其转换成fieldError,执行validateXxx()方法,执行validate()方法,包含fieldError吗,调用Action的处理方法,呈现视图资源,是,否,是,跳过Action处理逻辑,返回input视图,否,Struts2支持的文件
8、上传与下载,使用Struts2控制文件上传 Struts2的文件上传 Struts2默认使用Jakarta的Common-FileUpload的文件上传框架 需要增加两个jar包,即commons-io-1.3.2.jar和commons-fileupload-1.2.1.jar 实现文件上传的Action 需要upload、uploadFileName、uploadContentType和savePath4个属性,用以表达文件表单域、文件名、文件类型和文件上传路径。 配置文件上传的Action 需要为savePath属性设置值 实例:simpleUpload,Struts2支持的文件上传与下
9、载,使用Struts2控制文件上传 实现上传文件过滤 手动过滤 在Action中定义一个用于进行文件过滤的方法 为Action增加一个允许文件类型的属性 利用输入校验来判断用户输入的类型是否符合要求,如果不符合要求,就将错误提示信息添加到FieldError中。 在struts.xml中配置允许的文件类型,并配置返回结果的物理视图 实例:codeFilter 拦截器过滤 Struts2中文件上传的拦截器是fileUpload 在strtus.xml中配置fileUpload拦截器有两个参数:allowedType和maximumSize 实例:autoFilter,Struts2支持的文件上传
10、与下载,使用struts2控制文件下载 Struts2提供了stream结果类型,该结果类型就是专门用于支持文件下载功能的。 实现文件下载的Action Struts2的文件下载Action需要提供一个返回InputStream流的方法,该流代表了被下载文件的入口。 配置Action 配置Stream类型的结果需要指定4个属性 contentType:文件类型 inputName:被下载文件的入口输入流 contentDisposition:下载的文件名 bufferSize:下载文件时的缓冲大小 实例:down,Struts2的拦截器机制,拦截器在Struts2中的作用 Struts2拦截器
11、是可插拔式的设计 如果需要使用拦截器,就在struts.xml、struts-default.xml等配置文件中进行配置,不使用就不配置。 Struts2中存在大量的默认拦截器,只要配置Action的package继承了struts-default包,这些拦截器就会起作用。 Struts2框架的绝大部分功能都是通过拦截器来完成的,当StrutsPrepareAndExcuteFilter拦截到用户请求后,大量拦截器将会对用户请求进行处理,然后才会调用用户开发的Action实例的方法来处理请求。,Struts2的拦截器机制,拦截器在Struts2中的作用,Struts2的拦截器机制,Struts
12、2的内建拦截器,Struts2内建了大量的拦截器,这些拦截器以name-class对的形式配置在struts-default.xml文件中,其中name是拦截器的名字,class指定了该拦截器的实现类,如果我们定义的package继承了struts2的默认struts-default包,则可以自由使用内建的拦截器,否则必须自己定义这些拦截器。,Struts2的拦截器机制,配置拦截器,在struts.xml中定义拦截器 配置单一拦截器 配置拦截器栈, 参数值 , ,Struts2的拦截器机制,使用拦截器 一旦定义了拦截器和拦截器栈后,就可以使用这个拦截器来拦截Action了,拦截器的拦截行为将会
13、在Action的execute方法执行之前被执行。 通过元素可以在Action内使用拦截器。 配置默认拦截器 使用作为package元素的子元素,为该包下的所有action配置默认的拦截器, . ,Struts2的拦截器机制,自定义拦截器 如果要开发自己的拦截器类,需要实现erceptor.Interceptor接口或继承AbstractInterceptor类 使用自定义拦截器 通过元素来定义拦截器 通过元素来使用拦截器 实例:simpleInterceptor,Struts2的拦截器机制,拦截方法的拦截器 拦截器方法过滤特性 用户的拦截
14、器类应该继承MethodFilterInterceptor类 如果需要实现自己的拦截逻辑,需要重写doIntercept(ActionInvocation invocation)方法 MethodFilterInterceptor类中增加了方法拦截的白名单和黑名单方法 setExcludeMethods(String excludeMethods):设置不拦截的方法 setIncludeMethods(String includeMethods):设置需要过滤的方法 实例:methodFilter,Struts2的拦截器机制,使用拦截器完成权限控制 当浏览者需要请求执行某个操作时,应用需要先检
15、查浏览者是否登录,以及是否有足够的权限来执行该操作。 利用拦截器来进行判断,intercept方法的invotation参数可以获取ActionContext实例,从而得到用户的session 实例:authorityInterceptor,使用Struts2的Ajax,Ajax是什么 Ajax是异步Javascript和XML技术,使用异步方式发送用户请求和取得服务器的响应。 用户在浏览页面的同时可以发送异步请求,在第一个请求的服务器响应还没有完成时,浏览器可以再次发送请求,页面状态不会停止,即使服务器响应还没有到达,浏览者还可以浏览原来的页面。 当服务器响应到达客户端时,浏览器也无须重新加
16、载整个页面,它只更新页面的部分数据,从而提高了页面的利用时间,因此可以将表现层页面制作成表现功能非常丰富的页面。,使用Struts2的Ajax,使用stream类型的result实现Ajax Stream类型的result可以直接向客户端浏览器生成二进制响应、文本响应。 利用Action直接生成文本响应,然后在客户端动态加载该响应。 客户端利用jQuery发送异步请求。 实例:streamAjax,使用Struts2的Ajax,JSON的基本知识 JSON,即JavaScript对象符号,是一种数据交换格式。 使用JSON语法创建对象 使用JSON语法创建数组,Object= propertyName1:propertyValue1, propertyName2:propertyValue2, ,Arr = value1,value2,使用Struts2的Ajax,JSON插件与json类型的result JSON插件提供了一种
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026安康教资面试题及答案
- 《物联网概论》课件 6.4 因特网-应用实例
- GBT 8491-2026《高硅耐蚀铸铁件》
- 教案9-项目四 汽车经济性测评-任务一 任务一 汽车经济性测评指标
- (新教材)2025-2026学年冀少生物八年级上册 4.1.1 常见的传染病 课件
- 医院挂号收款外包合同
- 酒店营销团队外包合同
- 闵行小面积仓库外包合同
- 2025年吉林长春职业技能竞赛(汽车维修检验工)自测试题及答案
- 护理制度培训:促进团队协作
- 河南省顶级名校2026届高三年级5月押题导向卷(一)语文试卷(含答案及解析)
- 2026中国土地征收补偿机制改革与社会稳定风险评估报告
- 2026年《医疗器械质量管理规范》培训试题及答案
- 2026年青岛市市级机关遴选考试笔试试题(含答案)
- 工程项目经理奖惩制度
- 初中三年级数学《网格背景下无刻度直尺作图-几何直观与逻辑推理的深度融合》教案
- 财报思维:写给忙碌者的财报学习书阅读记录
- 党建引领妇幼健康服务优化
- 游泳馆卫生管理制度(标准版)
- GB/T 28253-2025挤压丝锥
- 高校横向合同管理
评论
0/150
提交评论