1.struts1是单例的,即struts1在创建只有一个,在整个生命周期内,所以线程不安全,
struts1的action是通过继承actionsupport类实现的与servlet耦合,所以做测试复杂,struts1是基于actionform的。
2struts2是多例模式,即每次都创建一个对象,线程安全,没有用到actionform,可以在action中定义属性及使用它;struts2的action不继承其他类,是一个简单
的Java类,便于测试
struts1的struts1.xml配置文件
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
- <struts-config>
- <form-beans>
- <form-bean name="loginActionForm" type="com.lanp.webapp.form.LoginActionForm">
- </form-bean>
- </form-beans>
- <action-mappings>
- <action path="/login"
- type="com.lanp.webapp.action.LoginAction"
- name="loginActionForm"
- scope="request">
- <forward name="success" path="/jsp/loginSucces.jsp" />
- <forward name="error" path="/jsp/loginError.jsp" />
- </action>
- </action-mappings>
- </struts-config>
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
- <struts>
- <!-- Struts 2 的Action必须放在包空间下 -->
- <package name="strutsqs" extends="struts-default">
- <!-- 定义action的名字以及action的实现类 -->
- <action name="LoginAciton" class="com.gjy.struts2.loginAction.LoginAction">
- <!-- 定义action的处理结果result,result有两个属性,其中name指定返回名称,tyle指定返回的类型 -->
- <!-- 处理Login错误时返回/error.jsp -->
- <result name="error">/error.jsp</result>
- <!-- 处理Lognin正确时/suc.jsp -->
- <result name="suc">/suc.jsp</result>
- </action>
- </package>
- </struts>
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
- <display-name>MyStruts1Prj</display-name>
- <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/conf/struts-config.xml</param-value>
- </init-param>
- <init-param>
- <param-name>debug</param-name>
- <param-value>3</param-value>
- </init-param>
- <init-param>
- <param-name>detail</param-name>
- <param-value>3</param-value>
- </init-param>
- <load-on-startup>0</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>action</servlet-name>
- <url-pattern>*.do</url-pattern>
- </servlet-mapping>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.5"
- xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- <filter>
- <filter-name>struts2</filter-name>
- <!--定义struts2的核心Filter的实现类 -->
- <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></web-app>
从上面的struts1和struts2的web.xml来看,struts2是基于拦截器来实现的