Struts2 in action读书笔记(4)

xiaoxiao2026-08-08  6

第四章 Adding workflow with interceptor(下) 16. 拦截器只能通过XML文件来配置,不支持Java annotations方式。 17. 在struts.xml类型的文件声明中,interceptors包含一个package中所有的拦截器和拦截器栈 例如struts-default.xml文件中: <interceptors>…… <interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/> <interceptor name="prepare" class="com.opensymphony.xwork2.interceptor.PrepareInterceptor"/> <interceptor name="staticParams" class="com.opensymphony.xwork2.interceptor.StaticParametersInterceptor"/>…… <interceptor-stack name="defaultStack"> <interceptor-ref name="exception"/>…… <interceptor-ref name="modelDriven"/> <interceptor-ref name="fileUpload"/> <interceptor-ref name="checkbox"/> <interceptor-ref name="staticParams"/> <interceptor-ref name="params"> <param name="excludeParams">dojo\..*</param> </interceptor-ref>…… <interceptor-ref name="workflow"> <param name="excludeMethods">input,back,cancel,browse</param> </interceptor-ref> </interceptor-stack></interceptors><default-interceptor-ref name="defaultStack"/> interceptor用于描述一个拦截器,仅仅是将拦截器名同class对应起来,并不和任何action相结合 interceptor-stack和interceptorref用于定义拦截器栈 default-interceptor-ref用于指定一个package默认的拦截器(栈) 18. 通常情况下,自己定义的actions所在的package通常继承自struts-default.xml,因此也会默认继承defaultStack拦截器栈 可以根据自己的需要修改action的参数,加入需要的拦截器如下所示: <action name="MyAction" class="org.actions.myactions.MyAction"> <interceptor-ref name="timer"/> <interceptor-ref name="logger"/> <interceptor-ref name="defaultStack"/> <result>Success.jsp</result></action> 当然timer和logger拦截器并没有做什么工作,一般需要在最后加上defaultStack拦截器栈或者自己定义的其他拦截器栈,例如缺少了params拦截器,request中的数据都无法保存到action中,更不要说其他工作了 19. 设置拦截器的参数,例如defaultStack拦截器栈中的workflow拦截器 <interceptor-ref name="workflow"> <param name="excludeMethods">input,back,cancel,browse</param></interceptor-ref> 覆盖拦截器的参数,例如覆盖defaultStack拦截器栈中的workflow拦截器的参数 <action name="YourAction" class="org.actions.youractions.YourAction"> <interceptor-ref name="defaultStack"> <param name="workflow.excludeMethods">doSomething</param> </interceptor-ref> <result>Success.jsp</result></action> 20. 实现自己的拦截器通常需要继承AbstractInterceptor或者实现Interceptor 21. SessionAware接口 Actions that want access to the user's HTTP session should implement this interface. 接口包含的方法 /** * Sets the Map of session attributes in the implementing class. * @param session a Map of HTTP session attribute name/value pairs. */public void setSession(Map session); 22. ActionInvocation的一个重要方法 Map session = actionInvocation.getInvocationContext().getSession(); 相关资源:敏捷开发V1.0.pptx
转载请注明原文地址: https://www.6miu.com/read-5050883.html

最新回复(0)