struts2的jar包可以从apache的官方网站上下载到,现在已经更新到2.2.3.1版本,其中包含四个文件夹(all):
app:example applications可以看到一些struts2的示例程序,我们做开发的时候需要用到的一些jar包和xml文件可以从这里copy
lib:essential dependencies包含所有的struts2的库文件,使用的时候把需要的jar文件拷到WEB-INF的lib文件夹下即可
docs:Documentation文档
src:Source源码
使用struts2框架的一般步骤:
1、复制相应的软件包到项目中:在apps文件夹里面有一个struts2-blank.war压缩包,是提供的最简单的示例程序,里面包含开发基于struts2的web程序所需要的最少的软件包,可以直接将他们copy到工程的WebContent/WEB-INF/lib中,因为在这个目录中的库文件在web应用运行时会被自动增加到classpath中
2、修改Web应用的描述文件web.xml:也可以直接从struts2-blank.war里面copy
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Struts Blank</display-name> <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> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>
3、创建自己的Action:在自己项目的Java Resources/src目录下创建包action(包名自己起),类HelloWorldAction.java,该类继承ActionSupport,并重写execute函数,在我写的这个类里面,只添加了一个属性message,用于在jsp页面显示,并必须添加getXXX()函数,以使jsp页面里可以通过标签访问到该属性
package action;
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorldAction extends ActionSupport {
String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String execute(){
setMessage("Test success!");
return SUCCESS;
}
}
4、实现jsp显示页面:本例中,通过struts2所提供的<property>标签来显示Action中的数据。<property>标签的value属性指定的是所要输出的属性名称。(其指定的属性必须有getXXX()函数)
注意我在此页面添加了一个超级链接,指向自己创建的Action类,程序运行时由此链接访问Action,Action返回时还是返回本页面。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>Hello World!</h1> <a href="helloword/HelloWorld">helloServlet</a> <h1><s:property value="message" /></h1> </body> </html>
5、配置struts.xml:在配置文件中,<action>元素用来定义每一个Action的配置信息,class属性指向我们创建的Action类。而在<action>元素外面还包含了<package>元素,其作用是将Action进行分组。运行时在浏览器中访问Action的URL是与<package>元素的namespace属性的值相关的,具体为:http://IP:port/Web应用名称/namespace/<action>的name属性.action
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="false" /> <package name="helloword" namespace="/helloword" extends="struts-default"> <action name="HelloWorld" class="action.HelloWorldAction"> <result>/index.jsp</result> </action> </package> </struts>
至此,一个简单的基于struts2框架的helloWorld项目就搭建好了,在tomcat下运行,首先进入index.jsp页面,可以看到原始的index页面,点击超级链接,请求访问Action,返回经过Action处理后的index页面。