<struts> <package name="action" namespace="/" extends="struts-default"> <action name="LoginAction" class="action.LoginAction" method="execute"> <result name="teacher">/teacher.jsp</result> <result name="student">/student.jsp</result> <result name="error">/error.jsp</result> </action> </package> <include file=""></include> </struts>
当xml文件较大时,可以使用多个xml文件来配置,比如在每个包下使用一个xml来配置这个包的action,在struts.xml中使用<include>把其他xml配置文件包含进来即可。
命名空间常配置为 / 或 /包名。
配置为 / 时,表示这个包下的action都在这个WebApp的命名空间中,可直接通过action的name来引用。
<package name="action" namespace="/" extends="struts-default"> <action name="LoginAction" class="action.LoginAction" method="execute"> <result name="teacher">/teacher.jsp</result> <result name="student">/student.jsp</result> <result name="error">/error.jsp</result> </action> </package> <form action="LoginAction"> <!--直接通过action的name来引用--> </form>
配置为 /xxx 时,表示这个包下的action都在命名空间xxx中,要通过命名空间来引用。
<package name="action" namespace="/action" extends="struts-default"> <!--指定命名空间是此WebApp下的action--> <action name="LoginAction" class="action.LoginAction" method="execute"> <result name="teacher">/teacher.jsp</result> <result name="student">/student.jsp</result> <result name="error">/error.jsp</result> </action> </package> <form action="action/LoginAction"> <!--需通过命名空间action来引用--> </form>
注意最前面没有 /
<form action="/LoginAction"> </form>最前面的/表示域名根目录(localhost),不是表示当前WebApp的根目录。这种写法是定位到 http://localhost:8080/LoginAction
可在<action>中使用method属性来设置。缺省时默认为execute。
可在当前action中配置当前action的,也可以在<global-results>配置整个包的。
<result>的name指定逻辑视图名(返回的字符串),元素体指定物理视图名,type指定视图处理方式。
需要用2个<param>指定下一个action的信息,actionName指定下一个Action的name,namespace指定下一个action的namespce(一般是 / 或者 /包名 )。
重定向到action:命名空间是/,写为/action名;命名空间是/xxx,写为/xxx/action名。
用redirect重定向到action,IDEA会报红,但能通过编译,效果正常。建议用redirectAction,更专业。
只能显示jsp、html等的源码,不能显示action的源码。
在<interceptors>中注册拦截器、拦截器栈。
<interceptor>注册一个拦截器,name指定拦截器名,class指定拦截器对应的java类。
<interceptor-stack>注册一个拦截器栈,name指定拦截器栈的名字。<interceptor-ref />指定要引用的拦截器。
可以在<action>中使用<interceptor-ref name=""></interceptor-ref>设置当前<action>要使用的拦截器、拦截器栈,一个<interceptor-ref name=""></interceptor-ref>引用一个拦截器、拦截器栈,可同时使用多个<interceptor-ref name=""></interceptor-ref>。
也可在<default-interceptor-ref name=""></default-interceptor-ref>中设置整个包的默认拦截器、拦截器栈,对此包下所有的action都有效。
引用的拦截器、拦截器栈可以是自己定义的,也可以是structs-default.xml中自带的。
<package>的子元素有一定的顺序,<action>要放到最后。
<action>中的子元素也有一定的顺序,不能随意放置。
可仿照structs-default.xml进行配置。
可直接对 extends="struts-default" 中的struts-default,Ctrl+B找到struts-default.xml,也可以在struts2-core.jar的根目录下找。
<default-interceptor-ref name=""></default-interceptor-ref>配置默认的拦截器、拦截器栈,name指定要引用的拦截器、拦截器栈。
<default-action-ref name=""></default-action-ref>配置默认action,name指定要引用的action的name,当命名空间中没有指定的action时,会调用默认action来处理。
<default-class-ref class=""></default-class-ref>配置action的默认处理类,class指定一个action类,当action缺省class属性时,会设置为默认的Class。
<action>缺省method属性时,默认为execute;
<result>缺省name属性时,默认为success;缺省type属性时,默认为dispatcher(转发)。
struts-default.xml中的默认配置:
<default-interceptor-ref name="defaultStack"/> <default-class-ref class="com.opensymphony.xwork2.ActionSupport" />
ActionSupport类的execute()方法:
public String execute() throws Exception { return "success"; }
转载于:https://www.cnblogs.com/chy18883701161/p/11454591.html