struct2搭配及简单login程序

11年前
    struct2的搭建,下载好struct2,解压之后发现N多架包,一时眼花缭乱,只能学网上的办法,到APP目录里解压一个例子程序来使用,其实发现核心架包就这么几个 asm-3.3.jar,asm-commons-3.3.jar, asm-tree-3.3.jar, commons-fileupload-1.2.2.jar,commons-io-2.0.1.jar,commons-lang3-3.1.jar,freemarker-2.3.19.jar, javassist-3.11.0.GA.jar,ognl-3.0.5.jar, struts2-core-2.3.4.1.jar,xwork-core-2.3.4.1.jar。还是和当年导入mysql的驱动架包一样导入到项目中。
   之后还是要在例子程序中COPY其中的structs.xml文件。注释掉Ation和package标签之后就不报错了,以后的Action模仿例子程序中的Action来写。修改web.xml文件,加入对struct的支持,代码也是从例子程序中copy的,源码如下
<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>

例子程序中的Action如下
<struts>        <constant name="struts.enable.DynamicMethodInvocation" value="false" />      <constant name="struts.devMode" value="false" />        <package name="default" namespace="/" extends="struts-default">            <default-action-ref name="index" />            <global-results>              <result name="error">/error.jsp</result>          </global-results>            <global-exception-mappings>              <exception-mapping exception="java.lang.Exception" result="error"/>          </global-exception-mappings>                 <!--这里修改了,改了交给一个UserAction的类来处理-->          <action name="index" class="UserAction">          <result type="redirectAction" name="success">                  <param name="actionName">HelloWorld</param>                  <param name="namespace">/example</param>              </result>          </action>      </package>        <include file="example.xml"/>        <!-- Add packages here -->    </struts>
程序的运行路径,当网页访问···/index.action时,就会想先前的servlet一样先在web.xml中查找,当找不到这个url时,就会跳到struct.xml中查找,找到index的action标签,然后交给UserAction处理,在如果UerserAction返回的是success的字符串,那么就会进入到result中,然后交给了/example处理。这就完成了一次Action。
   而UserAction要想处理这些信息就必须继承ActionSupport类,这个类在com.opensymphony.xwork2的包中。类中有一个方法是将处理信息反馈回去的public String execute();
  
    第一个Struct总算是搭好了。