首先要明确的知识点是, Stauts2不是基于Stauts更新的!!
Stauts2不是基于Stauts更新的!!
Stauts2不是基于Stauts更新的!!而是基于WebWork的全新框架
Statuts2一般用于SSH框架中,实现MVC的三层j架构
Struts2:安装配置5步骤,配置文件加载顺序:1.default.properties,2.Struts-default.xml,3.struts-plugin.xml,4.struts.xml,5,struts.properties,6,web.xml
动作类和Struts联系的各种流程:用户请求-->StrutsPrepareAndExecuteFilter(web.xml)<-->Struts.xml | -->动作类-->tsp
三种构建动作类方式:1:POJO就是什么也不继承 2:实现Action接口 3:继承ActionSupport
三种修改后缀名:(想要像Action那样 的最后加,,)1.新建properties 2 在we'b.xml中 ,在we'b.xml中init-param中的param-name提示干什么和param-value给值,3.在Stru't's中constant的value中改 在constant中修改是否默认加载配置文件 如果用DevMode的开发者模式那就不用再设置了,已经包含 引入其他配置文件不要忘了add class和method都可以不写,都有默认的 默认class可以通过 default-class-ref修改 有一种在一个包里配置然后其他包继承的思想 method默认是excuse 返回success 与之类似的, 平时写的都是局部的结果试图,而定义包中global-results ,就都用这个结果视图了
六个(不止)结果集类型:默认dispatcher是转发tsp chain是转别的ACTION redirect是重定向到j'sp redirect Action 是重定向到动作类 plainText是... 当跳转涉及到有namespace时 就要涉及到把本来写JSP的位置写上注入参数了 namespace和actionName去哪找
通配符 **用{1}{2}
两大参数封装:静态参数封装很简单 拦截器是StaticParam action中定义了Param 的 name,就可以在action的全局变量中取出来 动态参数封装:中的属性驱动 分以param为拦截器,只是普通form表单的普通属性和又加了个类的复杂属性,别忘了OGNL 再就是模型驱动拦截器modelDriven 返回时必须是实例化对象
输入验证分为 编程式验证和声明式验证 编程验证针对全局有validate 针对部分有两种 @s'k和validate方法名 声明验证在xml中 别忘了约束头找法 就是xml名字写法很重要 动作名加上validation 局部再加上要局部的方法名字 拦截器是用validate和workflaw(回显)的 +正则表达式 拦截器使用Intercepter声明 还可以在里边的param中定义除了哪个方法(excludeMethods),或者针对某个方法的拦截(includeMethods) 当声明了一个拦截器 那就代表只有这个拦截器能用,这时候涉及到把声明的和本有的都放到一个新的拦截器中
intercator-stack 和intercaptor-ref 文件的上传与下载了: 上传:先在Action里写了四个全局变量 最重要的是File类型的PHOTO了吧 就对应着在 form表单上对应的input 然后出了uesrname还有两个固定名称的 xxxfileName文件名 和 xxxConten'tType是表示上传文件的MIME类型 然后得到ServletContext对象在调用getRealPath("/file")得到存放文件的目录 调用new file(真是目录,文件名)构建一个目标文件 最后写入文件 调用FileUtils.copyFile(photo,目标文件) 动态修改文件名字 下载;定义了一个Inputstrem 实现下载就是在给它赋值 就是new 一个FileInputStream(里边放着getRealPath(图片)后得到的) 再就是一些Struts中的 设置报错 限制后缀等
最后是OGNL,用法涉及${}导航 #相当于上下文 \%负责声明字符串是OGNL表达式 还有操作Context Map 它中有很多熟悉的....其中最重要的是ValueStack 再