java三大框架之struts-2总结.docx
《java三大框架之struts-2总结.docx》由会员分享,可在线阅读,更多相关《java三大框架之struts-2总结.docx(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一:入门1Struts2 是一款优秀MVC框架,MVC:是一种思想,将软件分为 Model模型、View视图、Controller控制器(StrutsPrepareAndExecuteFilter : 控制器)(JSP : 视图)(Action : 可以作为模型,也可以是控制器)2Struts2 内核 webwork Xwork提供了很多核心功能:前端拦截器(interceptor),运行时表单属性验证,类型转换,强大的表达式语言(OGNL the Object Graph Navigation Language),IoC(Inversion of Control反转控制)容器等 3导入jar
2、包到开发工程 只需要导入 apps/struts2-blank.war 中所有jar包 - 12 个jar包在web.xml 配置struts2 前端控制器 (Filter)在src下创建struts.xml!- 访问struts2入门 - /index.jsp 4执行目标Action中execute方法 (默认执行execute()方法,如果不是execute方法,就要配置中的method属性)。在Action的execute方法中返回 字符串,在struts.xml中配置字符串与页面对应关系/demo1/success.jsp 完成结果页面跳转二:struts-2运行流程1流程请求 - S
3、trutsPrepareAndExecuteFilter 核心控制器 - Interceptors 拦截器(实现代码功能,只访问action时执行 ) - Action 的execuute - 结果页面 Result* 拦截器 在 struts-default.xml定义 struts-core-xxx.jar中* 执行拦截器 是 defaultStack 中引用拦截器2配置struts.xml 提示问题如果安装Aptana编辑器 ,请不要用Aptana自带xml编辑器 编写struts2配置文件 struts.xml提示来自于 DTD约束, 如果可以上网,自动缓存dtd,提供提示功能如果不能
4、上网,也可以配置本地DTD提示struts-2.3.20-allstruts-2.3.20srccoresrcmainresources * 导入DTD时,应该和配置DTD版本一致三:配置1 struts.xml的Action相关配置元素必须配置元素配置package 三个常用属性 name 包名称,不能重复 ,name并不是真正包名,只是为了管理Action namespace 和 的name属性,决定 Action的访问路径 (namespace默认以/开始 ) 如namespace=usermanager action 的name属性为hello 那么访问action的路径 : /use
5、rmanager/hello.action/demo1/1.jsp2 元素配置默认值 的namespace 默认值 / 的class 默认值 ActionSupport 类 的 name 默认值 successStruts-2配置文件加载顺序:1struts-default.xml:在struts-core.jar2.struts-plugin.xml:在struts-Xxx.jar3struts.xml4struts.properties5web.xml后加载文件中struts2 常量会覆盖之前加载文件 常量内容四.Action如何接受请求参数1 struts2 Action 接受请求参数
6、:属性驱动 和 模型驱动第一种 :Action 本身作为model对象,通过成员setter封装 (属性驱动 )第二种 :创建独立model对象,页面通过ognl表达式封装 (属性驱动)第三种 :使用ModelDriven接口,对请求数据进行封装 (模型驱动 ) - 主流页面:用户名 Action :public class RegistAction3 extends ActionSupport implements ModelDriven private User user = new User(); / 必须手动实例化public User getModel() return user;2
7、封装复杂类型参数(集合类型 Collection 、 Map)3参数封装过程中,数据类型转换问题 struts2 内部提供大量类型转换器,用来完成数据类型转换问题 boolean 和 Booleanchar和 Characterint 和 Integerlong 和 Longfloat 和 Floatdouble 和 DoubleDate 可以接收 yyyy-MM-dd格式字符串数组 可以将多个同名参数,转换到数组中集合 支持将数据保存到 List 或者 Map 集合4注册类型转换器 局部注册 : 只对当前Action有效 (针对属性) 全局注册 : 针对所有Action的日期类型有效 (针对
8、类型 )局部注册 : 在Action类所在包 创建 Action类名-conversion.properties , 格式 : 属性名称=类型转换器的全类名 全局注册 : 在src下创建 xwork-conversion.properties ,格式 : 待转换的类型=类型转换器的全类名五请求数据有效性校验(略)1如何对指定的方法校验 ? 格式 Action类名-ActionName(元素name属性)-validation.xml2手工校验 (代码校验)步骤一: 封装数据 步骤二: 实现校验Action ,必须继承ActionSupport 类 步骤三: 覆盖validate方法,完成对Ac
9、tion的业务方法 数据校验 通过代码逻辑判断参数是否有效,如果参数非法 , this.addFieldError (ActionSupport提供)workflow拦截器 跳转回 input页面步骤四: 在jsp中 通过 显示错误信息 * validate方法会对Action中所有业务方法进行校验,如果只想校验某一个方法 : validate方法名()3案例required 必填校验器 性别不能为空!requiredstring 必填字符串校验器 true 用户名不能为空!stringlength:字符串长度校验器102true 4required 必填校验器requiredstring 必
10、填字符串校验器stringlength:字符串长度校验器int:整数校验器date: 日期校验器url: 网络路径校验器email:邮件地址校验器regex:正则表达式校验器fieldexpression : 字段表达式校验六自定义拦截 器1、 struts2 所有拦截器 都必须实现 Interceptor 接口 2、 AbstractInterceptor 类实现了 Interceptor 接口. 并为 init, destroy 提供了一个空白的实现所有实际开发中,自定义拦截器 只需要 继承 AbstractInterceptor类, 提供 intercept 方法实现3常用struts2
11、 拦截器 模型驱动 文件上传 参数解析封装 类型转换错误 请求参数校验 拦截跳转 input 视图七Struts-2上传1) 文件上传 enctype=multipart/form-data 是 MIME协议定义多部分请求体 (消息体)2) 上传页面编写存在 上传项,必须提供name属性表单提交方式 必须 post 提交表单编码类型 enctype=multipart/form-data 3) Struts2 对文件上传的支持提供 FileUpload 拦截器,用于解析 multipart/form-data 编码格式请求,解析上传文件的内容 fileUpload拦截器 默认在 default
12、Stack 栈中, 默认会执行的在Action需要对上传文件内容进行接收页面:Action:public class UploadAction extends ActionSupport / 接收上传内容/ private File upload; / 这里变量名 和 页面表单元素 name 属性一致private String uploadContentType;private String uploadFileName; * 格式 : 上传表单项name属性 + ContentType 、 上传表单项name属性 + FileName* 为三个对象 提供 setter 方法通过FileUt
13、ils 提供 copyFile 进行文件复制,将上传文件 保存到服务器端通过 struts.multipart.maxSize 常量设置文件上传总大小限制 * struts.multipart.maxSize= 默认上传文件总大小 2MB * 超过文件总大小,跳转input 视图, 通过 回显错误信息 在struts.xml 设置上传总大小八struts2 文件下载1文件下载原理: 服务器读取下载文件内容,通过Response响应流写回, 设置 ContentType、 ContentDisposition 头信息2protected String contentType = text/pla
14、in; / contentType头信息 (下载文件对应 MIME协议规定类型 )* html - text/html . txt- text/plain protected String contentDisposition = inline; / ContentDisposition头信息 (下载文件打开方式 inline浏览器内部打开, attachment 以附件形式打开)protected String inputName = inputStream; / 需要Action中 提供 getInputStream 方法 返回 InputStream 提供下载文件 内容九扩展自定义的结果
15、类型1.开发一个直接或间接实现com.opensymphony.xwork2.Result接口十OGNL表示式使用 和 值栈OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目。 Struts2框架使用OGNL作为默认的表达式语言。* xwork 提供 OGNL表达式 * ognl-3.0.5.jarOGNL 是一种比EL 强大很多倍的语言 OGNL 提供五大类功能 1、支持对象方法调用,如xxx.doSomeSpecial(); 2、支持类静态的方法调用和值访问 3、访问OGNL上下文(OGNL context)和Actio
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 框架 struts 总结
限制150内