开发流程:
1 web.xml定义filter
2 定义post方法所需要的jsp网页 如果是get方法则不需要
3 定义Action类
4 配置struts.xml即配置Action和物理视图资源与处理结果的关系
struts按照以下顺序加载struts2常量
struts-default.xml
struts-plugin.xml
struts.xml
struts.properties
web.xml
如果多个文件中配置了同一个常量 后面文件的覆盖前面文件定义的常量
struts.xml用<constant>定义常量
web.xml用
<filter><init-param><param-name><param-value></></></></>定义常量
struts2可以用<include>包含其他配置文件
如果action太多则分在多个xml中
ActionSupport类实现Action接口
它是struts2默认的Action处理类 继承该类可以大大简化Action的开发
在某个Action中实现ServletResponseAware接口可以在该Action中直接使用HttpServletResponse对象
而不需要再通过ActionContext.getResponse方法获得封装过的HttpServletResponseMap对象
但即使获得了HttpServletResponse对象 也不能直接在Action中对客户端产生相应
另外 直接调用ServletActionContext类的getResponse方法也可以直接获得HttpServletResponse对象
但也存在与ServletAPI直接耦合的缺点
struts.xml中的<packet>的namespace属性控制该packet下的所有action的命名空间
处在命名空间下的action被访问时会加入namespace的路径前缀
如处在aaa命名空间下的bbb action被访问时的路径为/aaa/bbb.action
需要一个action提供多个处理函数时 可以通过javascript改变action的响应函数
form.action=“ActionName!methodName”
<action>的method属性可以使一个action类中的多个响应函数编程多个逻辑action
javascript改变action的响应函数变为
form.action=“ActionName
<action> name="*"
<result>/{1}.jsp</result>
</action>
尽量不要让超链接直接连接某个视图资源 而是应该全部交给struts框架处理上面的代码可以处理通用连接
当某个请求的action遇到多个匹配的action时,会按照struts中的顺序一起匹配 没有优先级
配置<result.../>时没有指定location参数,系统会把<result></result>中间的字符串当做实际试图资源,如果没有指定name属性,则name属性采用默认值success,如果没有指定type值则采用默认结果类型dispatcher
struts支持很多种结果类型
只要实现com.opensymphony.xwork2.Result接口就可以实现自己希望要的结果类型
有很多插件可以使用来增加struts的结果类型
其中redirect类型使用时会丢失所有请求参数、请求属性以及action实例、属性
并且网址也会变成xxx.jsp而不是xxx.action
需要一个action提供多个处理函数时 可以通过javascript改变action的响应函数
form.action=“ActionName!methodName”
<action>的method属性可以使一个action类中的多个响应函数编程多个逻辑action
javascript改变action的响应函数变为
form.action=“ActionName
<action> name="*"
<result>/{1}.jsp</result>
</action>
尽量不要让超链接直接连接某个视图资源 而是应该全部交给struts框架处理上面的代码可以处理通用连接
当某个请求的action遇到多个匹配的action时,会按照struts中的顺序一起匹配 没有优先级
配置<result.../>时没有指定location参数,系统会把<result></result>中间的字符串当做实际试图资源,如果没有指定name属性,则name属性采用默认值success,如果没有指定type值则采用默认结果类型dispatcher
struts支持很多种结果类型
只要实现com.opensymphony.xwork2.Result接口就可以实现自己希望要的结果类型
有很多插件可以使用来增加struts的结果类型
其中redirect类型使用时会丢失所有请求参数、请求属性以及action实例、属性
并且网址也会变成xxx.jsp而不是xxx.action