JSP+Struts+Spring+Hibernate笔记

Struts2:
开发流程:
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
posted @ 2011-07-23 22:03  thunderhao  阅读(207)  评论(0编辑  收藏  举报