java三大框架之struts-2总结

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

一:入门1Struts2是一款优秀MVC框架,MVC:是一种思想,将软件分为Model模型、View视图、Controller控制器(StrutsPrepareAndExecuteFilter:控制器)(JSP:视图)(Action:可以作为模型,也可以是控制器)2Struts2内核webworkXwork提供了很多核心功能:前端拦截器(interceptor),运行时表单属性验证,类型转换,强大的表达式语言(OGNL–theObjectGraphNavigationLanguage),IoC(InversionofControl反转控制)容器等3导入jar包到开发工程只需要导入apps/struts2-blank.war中所有jar包----12个jar包在web.xml配置struts2前端控制器(Filter)在src下创建struts.xmlpackagename=defaultnamespace=/extends=struts-default!--ahref=${pageContext.request.contextPath}/hello.action访问struts2入门/a--!--将请求分发给一个Action--!--action的name就是hello.action去掉扩展名--actionname=helloclass=cn.itcast.struts2.demo1.HelloActionresultname=success/index.jsp/result/action/package4执行目标Action中execute方法(默认执行execute()方法,如果不是execute方法,就要配置action中的method属性)。在Action的execute方法中返回字符串,在struts.xml中配置字符串与页面对应关系resultname=executesuccess/demo1/success.jsp/result完成结果页面跳转二:struts-2运行流程1流程请求----StrutsPrepareAndExecuteFilter核心控制器-----Interceptors拦截器(实现代码功能,只访问action时执行)-----Action的execuute---结果页面Result*拦截器在struts-default.xml定义struts-core-xxx.jar中*执行拦截器是defaultStack中引用拦截器2配置struts.xml提示问题如果安装Aptana编辑器,请不要用Aptana自带xml编辑器编写struts2配置文件struts.xml提示来自于DTD约束,!DOCTYPEstrutsPUBLIC-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.3//EN如果可以上网,自动缓存dtd,提供提示功能如果不能上网,也可以配置本地DTD提示\struts-2.3.20-all\struts-2.3.20\src\core\src\main\resources***导入DTD时,应该和配置DTD版本一致三:配置1struts.xml的Action相关配置action元素必须配置package元素配置package三个常用属性packagename=defaultnamespace=/extends=struts-defaultname包名称,不能重复,name并不是真正包名,只是为了管理Actionnamespace和action的name属性,决定Action的访问路径(namespace默认以/开始)如namespace=usermanageraction的name属性为hello那么访问action的路径:/usermanager/hello.actionactionname=helloclass=cn.itcast.struts2.demo1.HelloActionresultname=”input”/demo1/1.jsp/result2action元素配置默认值package的namespace默认值/action的class默认值ActionSupport类result的name默认值successStruts-2配置文件加载顺序:1struts-default.xml:在struts-core.jar2.struts-plugin.xml:在struts-Xxx.jar3struts.xml4struts.properties5web.xml后加载文件中struts2常量会覆盖之前加载文件常量内容四..Action如何接受请求参数1struts2Action接受请求参数:属性驱动和模型驱动第一种:Action本身作为model对象,通过成员setter封装(属性驱动)第二种:创建独立model对象,页面通过ognl表达式封装(属性驱动)第三种:使用ModelDriven接口,对请求数据进行封装(模型驱动)-----主流页面:用户名inputtype=textname=username/br/Action:publicclassRegistAction3extendsActionSupportimplementsModelDrivenUser{privateUseruser=newUser();//必须手动实例化publicUsergetModel(){returnuser;}2封装复杂类型参数(集合类型Collection、Map)3参数封装过程中,数据类型转换问题struts2内部提供大量类型转换器,用来完成数据类型转换问题boolean和Booleanchar和Characterint和Integerlong和Longfloat和Floatdouble和DoubleDate可以接收yyyy-MM-dd格式字符串数组可以将多个同名参数,转换到数组中集合支持将数据保存到List或者Map集合4注册类型转换器局部注册:只对当前Action有效(针对属性)全局注册:针对所有Action的日期类型有效(针对类型)局部注册:在Action类所在包创建Action类名-conversion.properties,格式:属性名称=类型转换器的全类名全局注册:在src下创建xwork-conversion.properties,格式:待转换的类型=类型转换器的全类名五.请求数据有效性校验(略)1如何对指定的方法校验???格式Action类名-ActionName(action元素name属性)-validation.xml2手工校验(代码校验)步骤一:封装数据步骤二:实现校验Action,必须继承ActionSupport类步骤三:覆盖validate方法,完成对Action的业务方法数据校验通过代码逻辑判断参数是否有效,如果参数非法,this.addFieldError(ActionSupport提供)workflow拦截器跳转回input页面步骤四:在jsp中通过s:fieldError/显示错误信息*validate方法会对Action中所有业务方法进行校验,如果只想校验某一个方法:validate方法名()3案例required必填校验器field-validatortype=requiredmessage性别不能为空!/message/field-validatorrequiredstring必填字符串校验器field-validatortype=requiredstringparamname=trimtrue/parammessage用户名不能为空!/message/field-validatorstringlength:字符串长度校验器field-validatortype=stringlengthparamname=maxLength10/paramparamname=minLength2/paramparamname=trimtrue/parammessage![CDATA[产品名称应在2-10个字符之间]]/message/field-validator4required必填校验器requiredstring必填字符串校验器stringlength:字符串长度校验器int:整数校验器date:日期校验器url:网络路径校验器email:邮件地址校验器regex:正则表达式校验器fieldexpression:字段表达式校验六.自定义拦截器1、struts2所有拦截器都必须实现Interceptor接口2、AbstractInterceptor类实现了Interceptor接口.并为init,destroy提供了一个空白的实现所有实际开发中,自定义拦截器只需要继承AbstractInterceptor类,提供intercept方法实现3常用struts2拦截器interceptor-refname=modelDriven/模型驱动interceptor-refname=fileUpload/文件上传interceptor-refname=params参数解析封装interceptor-refname=conversionError/类型转换错误interceptor-refname=validation请求参数校验interceptor-refname=workflow拦截跳转input视图七.Struts-2上传1)文件上传enctype=multipart/form-data是MIME协议定义多部分请求体(消息体)2)上传页面编写存在inputtype=filename=upload/上传项,必须提供name属性表单提交方式必须post提交表单编码类型enctype=multipart/form-data3)Struts2对文件上传的支持提供FileUpload拦截器,用于解析multipart/form-data编码格式请求,解析上传文件的内容fileUpload拦截器默认在defaultStack栈中,默认会执行的在Action需要对上传文件内容进行接收页面:inputtype=filename=upload/Action:publicclassUploadActionextendsActionSupport{//接收上传内容//inputtype=filename=upload/privateFileupload;//这里变量名和页面表单元素name属性一致privateStringuploadContentType;privateStringuploadFileName;}*格式:上传表单项name属性+ContentType、上传表单项name属性+FileName*为三个对象提供setter方法通过FileUtils提供copyFile进行文件复制,将上传文件保存到服务器端通过struts.multipart.maxSize常量设置文件上传总大小限制*struts.multipart.maxSize=2097152默认上传文件总大小2MB*超过文件总大小,跳转input视图,通过s:actionError/回显错误信息在struts.xml设置上传总大小constantname=struts.multipart.maxSizevalue=20000000/constant八.struts2文件下载1文件下载原理:服务器读取下载文件内容,通过Response响应流写回,设置ContentType、ContentDisposition

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功