1,在webl.xml中的进行过滤器的配置,
如:<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
是将满足<url-pattern>/*</url-pattern>的url路径的都留下,不满足这个条件的都过滤掉。
2 在struts2中可以设置路径的扩展名,例如可以设置为.action或.do,不过一般不用,因为设置了容许动态方法为true时会矛盾,
必须设置的路径的最后面为.action或.do,系统才认可。而设置了动态方法后最后面就会有方法名或参数,这样就会有矛盾,
所以在struts2中不设置<constant name="struts.action.extension" value="do,action"/>。
如:<constant name="struts.action.extension" value="do,action"/>注释:一般不设置。
3在struts2中可以设置默认的字符集,通过设置struts.i18n.encoding的值为UTF-8,这些配置都在struts2的配置文件中。
如:<constant name="struts.i18n.encoding" value="UTF-8"/>
4在struts2中可以设置浏览器中是否有缓存,通过struts.serve.static.bowserCache的值为true,默认的是为true,一般不用。
如:<constant name="struts.serve.static.bowserCache" value="false"/>
5 在struts2中可以设置是否自动加载xml文件,通过struts.configuration.xmlreload的值为true,则会自动加载xml文件。
如:<constant name="struts.configuration.xmlreload" value="true"/>
设置为true则会自动加载xml文件,
还有一个会可以自动加载xml文件的struts2的设置,就是开发模式:struts.devMode的值为true
6 在struts2中可以设置是否是开发模式,通过struts.devMode的值为true,则会处于开发模式,修改xml文件、java和前台文件都会自动加载。
不用重新启动服务器
如:<constant name="struts.devMode" value="true"/>
7 在struts2中如果需要将struts2和spring集成起来,则需要通过设置struts.objectFactory的值为spring。
如:<constant name="struts.objectFactory" value="spring"/>
8 在struts2中可以设置是否容许动态方法,通过struts.enabel.DynamicMethodInvocation的值为true,则容许通过在路径后面通过"!"+方法名,如:http://localhost:7001/test20120208/login!loginUser
如:<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
9 在struts中可以包含多个配置文件,通过include,配置文件从src的下面开始,
如:<include file="com/action/struts2.xml"/>
加载struts2.xml的配置文件。
10在struts2中paceage中的属性namespace的值,它是通过命名空间(路径的),一般action的名字只是一个字符串,而路径中例如/test/login!loingUser这是表示/test/login命名路径下的loginUser的方法。而action一般最多表达login,而默认的namespace的值为/,这时表的的路径只是:/login!loginUser。
所以需要namespace的值设置为/test,这样路径就是namespace+action的共同加起来。
总的来说路径:是通过namespace+action一起加起来。而action是只能表达一个字符串
如:<package name="default" namespace="/test" extends="struts-default">
<default-action-ref name="index" />
<action name="login" class="userAction" >
<result name="success">
/main.jsp
</result>
</action>
</package>
则能处理的路径是:/test/login!XXX。
而:<package name="default" namespace="/" extends="struts-default">
<default-action-ref name="index" />
<action name="login" class="userAction" >
<result name="success">
/main.jsp
</result>
</action>
</package>
则能处理的路径是:/login!XXX。
11 在struts2配置文件中有global-result来配置全局result的设置。不过如果在某个action中的result的name的值相同,则优先的是某个action的result。就好像全局和非全局变量类似。
如:<package name="default" namespace="/test" extends="struts-default">
<default-action-ref name="index" />
<global-results>
<result name="success">/admin.jsp</result>
</global-results>
<action name="login" class="userAction" >
<result name="success">
/main.jsp
</result>
</action>
</package>
当return的值为success时,则 优先的是返回到main.jsp,返回的页面路径是从WebRoot开始的。/main.jsp是表示从WebRoot下的main.jsp
12 struts2中的result中可以重定向,通过type属性可以重定向到action和别的包下的action。一般都不怎么用type属性,一般都用name属性。
13 在struts2中有拦截器的设置,拦截器的作用在执行这个action的方法前,先执行拦截器的方法。然后再执行action的方法。
拦截器:public class UserInterceptor extends AbstractInterceptor{
@Override
public String intercept(ActionInvocation invocation) throws Exception {
// TODO Auto-generated method stub
System.out.println("这里是拦截器");
return invocation.invoke();
}
}
就是在执行action的某个方法前执行拦截器的方法。
拦截器的配置如下:
<package name="default" namespace="/" extends="struts-default">
<interceptors>
<interceptor name="userInterceptor" class="com.action.interceptor.UserInterceptor"/>//定义拦截器
</interceptors>
<global-results>
<result name="success">/admin.jsp</result>
</global-results>
<action name="login" class="userAction" >
<interceptor-ref name="userInterceptor"></interceptor-ref>//使用拦截器
<result name="success">/main.jsp</result>
</action>
</package>
如:<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
是将满足<url-pattern>/*</url-pattern>的url路径的都留下,不满足这个条件的都过滤掉。
2 在struts2中可以设置路径的扩展名,例如可以设置为.action或.do,不过一般不用,因为设置了容许动态方法为true时会矛盾,
必须设置的路径的最后面为.action或.do,系统才认可。而设置了动态方法后最后面就会有方法名或参数,这样就会有矛盾,
所以在struts2中不设置<constant name="struts.action.extension" value="do,action"/>。
如:<constant name="struts.action.extension" value="do,action"/>注释:一般不设置。
3在struts2中可以设置默认的字符集,通过设置struts.i18n.encoding的值为UTF-8,这些配置都在struts2的配置文件中。
如:<constant name="struts.i18n.encoding" value="UTF-8"/>
4在struts2中可以设置浏览器中是否有缓存,通过struts.serve.static.bowserCache的值为true,默认的是为true,一般不用。
如:<constant name="struts.serve.static.bowserCache" value="false"/>
5 在struts2中可以设置是否自动加载xml文件,通过struts.configuration.xmlreload的值为true,则会自动加载xml文件。
如:<constant name="struts.configuration.xmlreload" value="true"/>
设置为true则会自动加载xml文件,
还有一个会可以自动加载xml文件的struts2的设置,就是开发模式:struts.devMode的值为true
6 在struts2中可以设置是否是开发模式,通过struts.devMode的值为true,则会处于开发模式,修改xml文件、java和前台文件都会自动加载。
不用重新启动服务器
如:<constant name="struts.devMode" value="true"/>
7 在struts2中如果需要将struts2和spring集成起来,则需要通过设置struts.objectFactory的值为spring。
如:<constant name="struts.objectFactory" value="spring"/>
8 在struts2中可以设置是否容许动态方法,通过struts.enabel.DynamicMethodInvocation的值为true,则容许通过在路径后面通过"!"+方法名,如:http://localhost:7001/test20120208/login!loginUser
如:<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
9 在struts中可以包含多个配置文件,通过include,配置文件从src的下面开始,
如:<include file="com/action/struts2.xml"/>
加载struts2.xml的配置文件。
10在struts2中paceage中的属性namespace的值,它是通过命名空间(路径的),一般action的名字只是一个字符串,而路径中例如/test/login!loingUser这是表示/test/login命名路径下的loginUser的方法。而action一般最多表达login,而默认的namespace的值为/,这时表的的路径只是:/login!loginUser。
所以需要namespace的值设置为/test,这样路径就是namespace+action的共同加起来。
总的来说路径:是通过namespace+action一起加起来。而action是只能表达一个字符串
如:<package name="default" namespace="/test" extends="struts-default">
<default-action-ref name="index" />
<action name="login" class="userAction" >
<result name="success">
/main.jsp
</result>
</action>
</package>
则能处理的路径是:/test/login!XXX。
而:<package name="default" namespace="/" extends="struts-default">
<default-action-ref name="index" />
<action name="login" class="userAction" >
<result name="success">
/main.jsp
</result>
</action>
</package>
则能处理的路径是:/login!XXX。
11 在struts2配置文件中有global-result来配置全局result的设置。不过如果在某个action中的result的name的值相同,则优先的是某个action的result。就好像全局和非全局变量类似。
如:<package name="default" namespace="/test" extends="struts-default">
<default-action-ref name="index" />
<global-results>
<result name="success">/admin.jsp</result>
</global-results>
<action name="login" class="userAction" >
<result name="success">
/main.jsp
</result>
</action>
</package>
当return的值为success时,则 优先的是返回到main.jsp,返回的页面路径是从WebRoot开始的。/main.jsp是表示从WebRoot下的main.jsp
12 struts2中的result中可以重定向,通过type属性可以重定向到action和别的包下的action。一般都不怎么用type属性,一般都用name属性。
13 在struts2中有拦截器的设置,拦截器的作用在执行这个action的方法前,先执行拦截器的方法。然后再执行action的方法。
拦截器:public class UserInterceptor extends AbstractInterceptor{
@Override
public String intercept(ActionInvocation invocation) throws Exception {
// TODO Auto-generated method stub
System.out.println("这里是拦截器");
return invocation.invoke();
}
}
就是在执行action的某个方法前执行拦截器的方法。
拦截器的配置如下:
<package name="default" namespace="/" extends="struts-default">
<interceptors>
<interceptor name="userInterceptor" class="com.action.interceptor.UserInterceptor"/>//定义拦截器
</interceptors>
<global-results>
<result name="success">/admin.jsp</result>
</global-results>
<action name="login" class="userAction" >
<interceptor-ref name="userInterceptor"></interceptor-ref>//使用拦截器
<result name="success">/main.jsp</result>
</action>
</package>