#学习基于ActionSupport
本文基于搭建以及学习struts2.5版本
迷途知返:
-
不能选取struts2.5中的struts2-rest-plugin-6.jar会出现莫名错误
-
若是最初学习并搭建一个普通框架的话,在导入其资源包时,只需要导入最基本或者是必须的资源包,不然 额外的包在没有相应配置的情况下,会引发莫名的错误,至少现阶段难以排查。
-
若遇到filter类无法找到的情况,讲web.xml的 filter-class标签内修改为 org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
因为struts升级到2.5后 整合了补分类,而不再需要cn.filter这样的路径,精简成了filter -
适用于大部分工程,请不要讲action类直接存放于SRC中,根据配置文件可能会出现ClassNotFoundException,所以建立一个包用于存放对应的类文件/其他文件是必要的
-
初步学习框架的时候,建议将所有组件都 配置成最新版本以避免出现不可名状错误(相信大公司),而且后续的版本不兼容问题,拿Eclipse来说,可以轻易检测出来,而且只需要搜索部件之间版本匹配关系,就可以解决。
Struts2基本点:
工作原理:
开发步骤:
- 定义发送Request的页面
- 定义Action类,处理Request
- 使用struts.xml配置Action(类似发布)
- 编辑视图(显示页面,如jsp)
PS:Action需要implements Action / extends ActionSupport
ActionSupport实现了execute方法,若不提供新的method,则在struts.xml的action标签内指定method=“execute” execute直接返回SUCCESS(String 常量)
StrutsPrepareAndExecuteFilter 为核心控制器
自定义Action 为业务控制器
两者共同构成Struts2的MVC的C—Control
(由StrutsPrepareAndExecuteFilter分配Request给指定Action,毕竟WEBXML内配置时 url-pattern是 /*)
Action获取请求参数 ?
该部可以类比于Servlet 不过原则上Action为了解耦而放弃ServletAPI(就是HttpServletRequest 等)
具体方式为:发起Request的页面的参数名 发送至Action后,Action对此一一创建Field,每个Filed都需要创建对应的setter与getter,随后使用Action实例来使用setter 以接受参数
当然只要是原则,就会有例外
ServletAPI也可以访问
有一下两种方法:
伪访问:ActionContext
真访问:ServletActionContext