1. 关于strut2拦截器:一个总的strut.xml文件,多个其他模块的配置文件。
试试external-ref<external-ref name="mydefault">???</external-ref>
2. struts拦截器,在struts2配置文件中加入自定义的拦截器就出错
<package name="myinterceptor" extends="struts-default"> <interceptors> <interceptor name="myInerceptor" class="com.interceptor.MyInterceptor1"/> <interceptor-stack name="my"> <interceptor-ref name="myInterceptor"/> <interceptor-ref name="defaultStack"/> </interceptor-stack> </interceptors> <default-interceptor-ref name="my"/> <action name="test_interceptor" class="com.action.InterceptorTest"> <result name="success">/interceptorsuccess.jsp</result> <result name="input">/Hello.jsp</result> </action></package>//试试没坏处
3. 如何配置struts2的过滤器
你说的是拦截器吧第一步:创建一个昌颤类实现Intercepter接口并实现其中方法第二步:注册拦截器(在struts.xml)如:<package name="cust" namespace="/cust" extends="struts-default"> <interceptors> <!– 注册拦截器 –> <interceptor name="first" class="com.interceptor.FirstInterceptor"/> <interceptor name="second" class="com.interceptor.SecondInterceptor"/> <!– 注册拦截器栈,将所有拦皮中截器打包在一起 –> <interceptor-stack name="mystack"> <interceptor-ref name="first"/> <interceptor-ref name="second"/> <!– 引用自定义的拦截器时,会使struts2自带的拦截器失效 因此,要将默认的拦截器加入到自定义的拦截器栈中 –> <interceptor-ref name="defaultStack"/> </interceptor-stack> </interceptors><!–第三步: 引用拦截器 ,<action name="toUpdateCustomer" class="com.action.ToUpdateCustomerAction" method="execute"> <!– 引用拦截器 , <interceptor-ref name="first"/> <interceptor-ref name="first"/>–> <!– 引用拦截器栈,会一次将所有的拦截器引用燃迅山 –> <interceptor-ref name="mystack"/> <result name="success"> /WEB-INF/cust/update_customer.jsp </result> </action> </package>供参考
4. 谁能详细给我解释一下struts2的一个配置文件中<action name,class,method,result>
配置包时必须指定name属性,该name属性值可以任意取名,但必须唯一,如果其他包要继承该包,必须通过该属性进行引用,包的namespace属性用于定义该包的命名空间,命名空间作用为访问该包下的action路径的一部分,见示例.namespace属性可以不配置,如果不指定该属性,默认的命名空间为””通常每个包都应该继承struts-default包,因为struts2很多核心功能都是拦截来实现的,如,从请求中把请求参数封闭到action,文件上传和数据验证等都是通过拦截器实现的,struts-default定义了这些拦截器和Result类型,可以这么说,当包继承了struts-default才能使用struts2提供的核心功能,struts-default包是在struts2-core-2.xx.jar文件中的struts-defalut.xml中定义,struts-default.xml也是struts2默认配置文件,struts2每次都会自动加载struts-default.xml文件.Action元素method属性,默认值为method=”execute”,也就是当action接收到请求后,交给哪个方法去处理,默认的是交给execute方法去处理,当然,也可以交给其他方法,{1}代表通配符,比如你上面的{1}index,我访问aaidex,bbindex都能够跳到此控制机器定义的这个方法<resultname="success">/WEB-INF/JspPage/chapter1/HelloWorld.jsp</result>result元素主要定义视图的跳转和返回的行为及类型、你定义的indexAction变小写是因为这是为spring接管了,。你spring配置文件中肯定有个bean的id是indexAction,class路径指向包名+类名。struts.enable.SlashesInActionNames:该常量设置struts2是否允许action名中使用斜线,该常量的默认值是false。如果希望使用斜线,将该常量值设置成true即可。比如actionname="aa/bb"
5. struts2的web.xml有哪些配置
<!–配置过滤器,如下设置是struts2的主要拦截器 –> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <!– 对应于<filter>配置的<filter-mapping>,一个filter可以对应配置多个<filter-mapping> –> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping> 注意:<filter-mapping>中的<filter-name>必须跟<filter>中的<filter-name>相同。这些个东西是在你发出请求的时候就执行的,比如你配置的那个/*是指无论你发出什么请求都要走struts2的拦截器,通过拦截器来查找你请求的东西,并作出响应;我后来配置的那个*.action是当你发出action请求时也得经过struts2的拦截器,你也可以只写<filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
6. struts2 的struts.xml文件怎么配置
<!– include节点是struts2中组件化的方式 可以将每个功能模块独立到一个xml配置文件中 然后用include节点引用 –> <include file="struts-default.xml"></include><!– package提供了将多个Action组织为一个模块的方式 package的名字必须是唯一的 package可以扩展 当一个package扩展自 另一个package时该package会在本身配置的基础上加入扩展的package 的配置 父package必须在子package前配置 name:package名称 extends:继承的父package名称 abstract:设置package的属性为抽象的 抽象的package不能定义action 值true:false namespace:定义package命名空间 该命名空间影响到url的地址,例如此命名空间为/test那么访问是的地址为http://localhost:8080/struts2/test/XX.action –> <package name="com.kay.struts2" extends="struts-default" namespace="/test"> <interceptors> <!– 定义拦截器 name:拦截器名称 class:拦截器类路径 –> <interceptor name="timer" class="com.kay.timer"></interceptor> <interceptor name="logger" class="com.kay.logger"></interceptor> <!– 定义拦截器栈 –> <interceptor-stack name="mystack"> <interceptor-ref name="timer"></interceptor-ref> <interceptor-ref name="logger"></interceptor-ref> </interceptor-stack> </interceptors> <!– 定义默认的拦截器 每个Action都会自动引用 如果Action中引用了其它的拦截器 默认的拦截器将无效 –> <default-interceptor-ref name="mystack"></default-interceptor-ref><!– 全局results配置 –> <global-results> <result name="input">/error.jsp</result> </global-results> <!– Action配置 一个Action可以被多次映射(只要action配置中的name不同) name:action名称 class: 对应的类的路径 method: 调用Action中的方法名 –> <action name="hello" class="com.kay.struts2.Action.LoginAction"> <!– 引用拦截器 name:拦截器名称或拦截器栈名称 –> <interceptor-ref name="timer"></interceptor-ref> <!– 节点配置 name : result名称 和Action中返回的值相同 type : result类型 不写则选用superpackage的type struts-default.xml中的默认为dispatcher –> <result name="success" type="dispatcher">/talk.jsp</result> <!– 参数设置 name:对应Action中的get/set方法 –> <param name="url">http://www.sina.com</param> </action> </package>