struct2搭配及简单login程序
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的,源码如下
例子程序中的Action如下
而UserAction要想处理这些信息就必须继承ActionSupport类,这个类在com.opensymphony.xwork2的包中。类中有一个方法是将处理信息反馈回去的public String execute();
第一个Struct总算是搭好了。
之后还是要在例子程序中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总算是搭好了。