最近在网上看到很多关于Struts2.0的教程,但是照着上面的操作一步步走下来,不是部署不成功就是运行不成功。总之谁遇到了很过麻烦,后来注意到这是struts版本的问题以及一些本人还无法解释的问题造成的,在此做一个小结,与大家分享。首先声明本人现在用的struts版本是2.1.8.1,如果版本不同,以下操作过程中所涉及的内容可能会不一样,请注意。
1. 首先建立web工程,并复制struts相关的jar文件,如下图所示。
注意:按照网上的教程,曾经出现过Unable to load configuration. ……struts-default.xml的错误,这个问题是缺少jar包造成的。
2. 建立用于处理用户请求的类,需要扩展ActionSupport类,并重写父类的execute方法,示例代码如下:
public class MissYou extends ActionSupport { /** * */ private static final long serialVersionUID = 1L; private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String execute() throws Exception { name = "Miss You Very Much, " + name; return super.execute(); } }
3. 添加action映射(mapping),在src目录下添加struts.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "http://struts.apache.org/dtds/struts-2.1.7.dtd"> <struts> <include file="struts-default.xml"></include> <package name="com.thu.afa.struts" extends="struts-default"> <action name="missYou" class="com.thu.afa.struts.MissYou"> <result>result.jsp</result> </action> </package> </struts>
注意:这里DOCTYPE的声明需要与你的struts版本保持一致,这可以直接从struts2-core-2.1.8.1.jar包中的struts-default.xml文件中copy过来。至于struts标签中各个配置项的具体含义,这里不再详细介绍。
4. 添加jsp页面,示例如下:
<!-- index.jsp --> <body> <s:form action="missYou"> Name: <s:textfield name="name"></s:textfield> <s:submit /> </s:form> </body>
<!-- result.jsp --> <body> <h3><s:property value="name" /></h3> </body>
5. 修改web.xml文件,添加以下内容:
<filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
6. 部署,运行,效果如下:
7. 项目文件结构如下图所示。
-------------------------------
Stay Hungry, Stay Foolish!
Afa
Mar 14th, 2010
-------------------------------