開始吧!
首先簡(jiǎn)要介紹下我使用的開發(fā)環(huán)境吧:Eclipse3.3 IDE For Java EE Developers下載地址:http://www.eclipse.org/downloads/,JDK5或以上版本,Struts2.0.9(呵呵,在我寫作的同時(shí)Struts2.0.11已經(jīng)發(fā)布,下載地址http://struts.apache.org/download.cgi#struts206)將下載的struts-2.0.11-all.zip解壓將struts2開發(fā)所必需的jar包加入你的classpath(在Eclipse wtp項(xiàng)目結(jié)構(gòu)下拷貝到WebContent/WEB-INF/lib目錄下即可),我的做法是在Eclipse下創(chuàng)建了一個(gè)struts庫(kù)如圖所示:
struts2-core.jar
|
Struts2的核心api,也是我們以后打交道最多的
|
xwork.jar
|
Struts2(同Webwork一樣)建立在XWork 2庫(kù)的基礎(chǔ)上
|
ognl.jar
|
Object Graph Navigation Language (OGNL), 類似于jsp2.0中EL表達(dá)式的一門用于訪問(wèn)對(duì)象的表達(dá)式語(yǔ)言
|
freemarker.jar
|
Struts2所有的ui標(biāo)記的模板均使用freemarker編寫,freemarker根據(jù)struts2 ui標(biāo)記的模板渲染,可通過(guò)修改或重寫模板使struts2的ui標(biāo)記按你的要求渲染
|
commons-logging.jar
|
封裝了通用的日志接口(在Log4J or JDK 1.4+日志api的基礎(chǔ)上 )
|
上圖中Xwork和struts2 core展開的Source attaching和Javadoc location我分別配置了xwork和struts2 core的源代碼和其文檔的位置,方便開發(fā)中查看源代碼和api函數(shù)的說(shuō)明。如果你是按照我這樣配置的話那么在Eclipse wtp下新建一個(gè)Dynamic Web Project取名為HelloWorld,選中該項(xiàng)目右鍵Build Path加入我們剛才配置好的Struts2庫(kù)如下圖

選擇Add Library選擇User Library加入Struts2所需的庫(kù)。
見上圖選擇J2EE Module Dependencies勾選struts2庫(kù)參看見下圖

勾選struts2庫(kù)后當(dāng)Eclipse wtp將項(xiàng)目發(fā)布到Tomcat的時(shí)候strust2中的jar會(huì)拷貝項(xiàng)目WEB-INF下的lib目錄下(以后的文章將不在強(qiáng)調(diào),請(qǐng)切記將需要的庫(kù)勾選,否則運(yùn)行時(shí)會(huì)出現(xiàn)找不到某某類的錯(cuò)誤,因?yàn)榘l(fā)布的時(shí)候Eclipse wtp不會(huì)將所需的jar拷貝到WEB-INF/lib目錄下,所以程序在運(yùn)行時(shí)位于該庫(kù)的jar中的類會(huì)找不到)
<?xml version="1.0"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
<display-name>Hello World</display-name>
<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>
</web-app>

在web.xml中注冊(cè)一個(gè)FilterDispatcher該Filter攔截所有的請(qǐng)求(/*)使得struts2框架為您服務(wù)。
在項(xiàng)目src目錄下新建一個(gè)struts.xml作為struts2的配置文件(項(xiàng)目發(fā)布到Tomcat的時(shí)候Eclipse會(huì)將src目錄下的文件對(duì)應(yīng)其目錄結(jié)構(gòu)中的文件拷貝到WEB-INF/classes下)如下所示:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts><!-- Configuration for the default package. -->
<package name="default" extends="struts-default">
</package>
</struts>

Package類似于Java中的package,其實(shí)就是可以將Action分類,劃分到不同的package中。extends="struts-default"顧名思義繼承,那么繼承誰(shuí)呢?請(qǐng)大家查看struts2-core.jar包里有個(gè)struts-default.xml文件里面為我們的應(yīng)用程序提供了默認(rèn)配置,應(yīng)用程序從classpath加載struts.xml的時(shí)候會(huì)從classpath中加載struts2-core中并讀取struts-default.xml,以后我也會(huì)經(jīng)常涉及這個(gè)struts-default文件(呵呵,其實(shí)我也不全了解這個(gè)文件里的配置,大家努力!!!)
那么到此Struts2的基本環(huán)境配置的模板搭建好了!
那么新建一個(gè)index.jsp
<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>首頁(yè)</title>
</head>
<body>
<h2><s:form action="HelloWorld">
<s:textfield name="message" label="你的姓名"></s:textfield>
<s:submit value="提交"></s:submit>
</s:form></h2>
</body>
</html>

在這個(gè)頁(yè)面中我將使用struts2標(biāo)記,先注個(gè)冊(cè)先如下:
<%@ taglib prefix="s" uri="/struts-tags"%>(在struts2-core.jar的META-INF/struts-tags.tld中的標(biāo)記<uri>/struts-tags</uri>剛好與上面uri屬性匹配, struts2的所有標(biāo)記的配置信息估計(jì)都在這文件里,大家一起研究研究吧!)
新建一個(gè)Action代碼如下:
package tutorial;
import com.opensymphony.xwork2.ActionSupport;

public class HelloWorld extends ActionSupport
{


public String execute() throws Exception
{
return this.SUCCESS;
}

private String message;


public void setMessage(String message)
{
this.message = message;
}


public String getMessage()
{
return message;
}
}

按我上面所說(shuō)的struts.xml的package中把這個(gè)Action注冊(cè)進(jìn)去吧