About Struts2
Struts也是一款MVC框架 , Struts2是Struts的下一代产品,是在Struts1和WebWork的技术基础上进行了合并的全新的Struts2框架
其全新的Struts2的体系结构与Struts1的体系结构差别巨大。Struts2以WebWork为核心
Struts2=Struts1+WebWork,而WebWork的核心就是XWork。
XWork提供了很多核心功能:前端拦截机(interceptor),运行时表单属性验证,类型转换,强大的表达式语言(OGNL—the Object Navigation Language),IOC(Inversion of Control 反转控制)容器等。
Struts2 路由配置方式
1、StrutsPrepareAndExecuteFilter
第一种是通过StrutsPrepareAndExecuteFilter
,它是Struts2的核心控制器,也是一个Filter,配置/*
会拦截所有请求,通过之后转发给Struts2框架做请求处理
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
而这样就是全局都是走struts2的路由了
2、ActionServlet
还有一种配置如下,通过ActionServlet
并配置*.do
后缀来匹配请求,将.do
的请求交给ActionServlet
做处理,最终交给Struts2框架
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>
/WEB-INF/struts-config.xml
...
</param-value>
</init-param>
<init-param>
<param-name>application</param-name>
<param-value>ApplicationResources</param-value>
</init-param>
</servlet>
这样操作,就可以自定义一些servlet,从而不走struts2框架进行处理,同时也可以融入SpringMVC,审计时也会遇到SpringMVC+Struts2两个MVC框架做路由的处理。application的配置是说明你的资源包的名字是ApplicationResources.properties,这个一般有关于struts-config.xml
文件中的message-resources
标签
struts-config.xml
<struts-config>
是struts的根元素,它主要有8个子元素,DTD定义如下:
<!ELEMENT struts-config
(data-sources?,form-beans?,global-exceptions?,global-forwards?,action-mappings?,controller?,message-resources*,plug-in*)
>
data-sources
Data-sources元素用来配置应用程序所需要的数据源。java语言提供了javax.sql.DateSource接口,所有数据源必须实现该接口。如下配置:
<data-sources>
<data-source type="org.apached.commons.dbcp.BasicDataSource">
………………
</data-source>
</data-sources>
在action中访问方式如下: ataSource = getDataSource(request,"a");
javax.sql.DataSource dataSource;
java.sql.Connection myConnection;
try
{
dataSource = getDataSource(request);
myConnection = dataSource.getConnection();
}
form-beans
该元素主要用来配置表单验证的类。它包含如下属性:
1. classname:一般用得少,指定和form-bean无素对应的配置类,默认为org.apache.struts.config.FormBeanConfig,如果自定义,则必须扩展FormBeanConfig类。可有可无。
2. name:ActionForm Bean的惟一标识。必须。
3. type:ActionForm的完整类名。必须。
<form-beans>
<form-bean
name="Loign"
type="com.ForumActionForm">
</form-bean>
</form-beans>
像是表单名称与type指定的类进行一个绑定,一般type指定的类会继承ActionForm
类,ActionForm
是struts2中的核心组件之一,用来处理表单数据,本质是一个javabean。
其中自带validate()
方法和reset()
方法是 ActionForm中两种可以覆盖的方法。validate()
方法中定义具体的 ActionForm验证规则。reset()
方法则是在初始化时被调用。
action-mappings
描述从特定的请求路径到相应的Action类的映射。该元素用于将Action元素定义到ActionServlet类中,它含有0到多个<action/>
元素
其格式如下:
<action-mappings>
<action path="Action请求的相对路径,与页面<html:form>的Action属性值一致" type="该Action的对应类的全路径" name="该Action绑定的FormBean,与<form-bean >的Name属性值一致"
<forward name="与Action类中mapping.findForward("mapname")返回的mapname值一致" path="页面跳转的相对路径"/>
</action>
</action-mappings>
每个action子元素可包含一个或多个forward子元素。除了path、type和name属性外,action还具有如下属性:
scope&#