本文不打算介紹什麼是Struts,也不打算介紹Struts究竟有什麼神奇所在,僅僅討論如何配置Struts和使用Struts。
學習資料:http://struts.apache.org/2.1.6/index.html
如果使用者需要瞭解Struts的背景知識可以到官網去看使用者手冊;如果使用者需要開始使用Struts可以到官網下載;
在這裡也跟大家提個醒,外面的文章寫得在厲害,官網的東西是最直接的,我寫的東西同樣可以質疑,因為這僅僅是我對Struts的認識。
本文的起點在於你已經下載到了Struts的完整版本。
地址為:http://apache.etoak.com/struts/binaries/struts-2.1.6-all.zip
>>開始我的Struts之旅了
1、我的環境介紹
Tomcat環境的配置,在這裡就不重複了。我以前寫過一篇
【JDK1.6+Tomcat6.0配置開發JSP】http://blog.csdn.net/rocket5725/archive/2009/03/17/3999180.aspx
瞭解我的環境很重要,因為只有瞭解我的環境,您才可以看到設定檔給出的資訊,以及在地址欄輸入的文字。
瀏覽地址:http://localhost:8080/app保證網站是正常瀏覽的,本項目的名稱是app,這一點跟你的肯定不同。在後面的配置過程會出現幾處app的出現,你直接替換成你的項目即可。當然明白原理是最重要的。模仿只是第一步。
你的第一步首先是在地址欄輸入:http://localhost:8080/YourApp可以正常顯示某個簡單的頁面。
2、準備好Struts2安裝包以及依賴包
把下載到的struts-2.1.6解壓,然後在lib中找到以下的包檔案:struts2-core-2.0.11.1.jar、xwork-2.0.4.jar、commons-logging-1.0.4.jar、freemarker-2.3.8.jar、ognl-2.6.11.jar並將這些包拷貝到app/WEB_INF/lib下面。
3、安裝Struts
這一步對於Struts1.x和Struts2都是必須的,只是安裝的方法不同。Struts1的進入點是一個Servlet,而Struts2的進入點是一個過濾器(Filter)。因此,Struts2要按過濾器的方式配置。下面是在web.xml中<web-app>節點下配置Struts2,代碼如下:
<filter><br /><filter-name>struts2</filter-name><br /><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class><br /></filter></p><p><filter-mapping><br /><filter-name>struts2</filter-name><br /><url-pattern>/*</url-pattern><br /></filter-mapping>
4、編寫Action類
這一步和Struts1.x也必須進行。只是Struts1.x中的動作類必須從Action類中繼承,而Struts2.x的動作類需要從com.opensymphony.xwork2.ActionSupport類繼承。下面是計算兩個整數代碼和的Action類,代碼如下:
package com.gslsoft.test;<br />import com.opensymphony.xwork2.ActionSupport;</p><p>public class FirstAction extends ActionSupport<br />{<br />private int operand1;<br />private int operand2;<br />public String execute()throws Exception<br />{<br />if(getSum()>=0) //如果代碼數和是非負整數,跳到positive.jsp頁面<br />{<br />return"positive";<br />}<br />else //如果代碼數和是負整數,跳到negative.jsp頁面<br />{<br />return"negative";<br />}<br />}<br />public int getOperand1()<br />{<br />return operand1;<br />}<br />public void setOperand1(int operand1)<br />{<br /> System.out.println(operand1);<br /> this.operand1=operand1;<br />}<br />public int getOperand2()<br />{<br /> return operand2;<br />}<br />public void setOperand2(int operand2)<br />{<br />System.out.println(operand2);<br />this.operand2=operand2;<br />}<br />public int getSum()<br />{<br />return operand1+operand2;//計算兩個整數的代碼數和<br />}</p><p>}<br />
從上面的代碼可以看出,動作類的一個特徵就是要覆蓋execute方法,只是Struts2的execute方法沒有參數了,而Struts1.x的execute方法有四個參數。而且execute方法的傳回值也不同的。Struts2隻返回一個String,用於表述執行結果(就是一個標誌)。上面代碼的其他部分將在下面講解。
5、編寫ActionForm類
在本例中當然需要使用ActionForm了。在Struts1.x中,必須要單獨建立一個ActionForm類(或是定義一個動作Form),而在Struts2中ActionForm和Action已經變形平板了。從第二步的代碼可以看出,後面的部分就是應該寫在ActionForm類中的內容。所以在第2步,本例的ActionForm類已經編寫完成(就是Action類的後半部分)。
6、配置Action類
這一步struts1.x和struts2.x都是必須的,只是在struts1.x中的設定檔一般叫struts-config.xml(當然也可以是其他的檔案名稱),而且一般放到WEB-INF目錄中。而在struts2.x中的設定檔一般為struts.xml,在app/WEB-INF/classes目錄中建立struts.xml檔案。下面是在struts.xml中配置動作類的代碼:
<?xml version="1.0" encoding="UTF-8" ?><br /><!DOCTYPE struts PUBLIC<br /> "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"<br /> "http://struts.apache.org/dtds/struts-2.0.dtd"></p><p><struts></p><p> <constant name="struts.enable.DynamicMethodInvocation" value="false" /><br /> <constant name="struts.devMode" value="false" /></p><p> <include file="example.xml"/></p><p> <package name="default" namespace="/app" extends="struts-default"><br /> <default-action-ref name="index" /><br /> <action name="sum" class="com.gslsoft.test.FirstAction"><br /> <result name="positive">/positive.jsp</result><br /> <result name="negative">/negative.jsp</result><br /> </action></p><p> </package></p><p> <!-- Add packages here --></p><p></struts><br />
7、編寫使用者錄入介面:建立JSP頁面
(1)首頁面(sum.jsp),在根目錄下建立sum.jsp頁面,代碼如下:
<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK" %><br /><%@ page import="java.util.*" %><br /><%@ taglib prefix="s" uri="/struts-tags" %><br /><html><br /><head><br /><title>輸入運算元</title><br /></head><br /><body><br />求代數和<br/><br /><s:form action="app/sum.action"><br /><s:textfield name="operand1" label="運算元1"></s:textfield><br /><s:textfield name="operand2" label="運算元2"></s:textfield><br /><s:submit value="代數和"></s:submit><br /></s:form><br /></body> <br /></html>
(2)建立positive.jsp頁面
<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK" %><br /><%@ page import="java.util.*" %><br /><%@ taglib prefix="s" uri="/struts-tags" %><br /><html><br /><head><br /><title>顯示整數和</title><br /></head><br /><body><br />代數和為非負整數<h1><s:property value="sum"/></h1><br /></body> <br /></html>
(3)建立nagetive.jsp頁面
<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK" %><br /><%@ page import="java.util.*" %><br /><%@ taglib prefix="s" uri="/struts-tags" %><br /><html><br /><head><br /><title>顯示整數和</title><br /></head><br /><body><br />代數和為非負整數<h1><s:property value="sum"/></h1><br /></body> <br /></html>
這兩個jsp頁面的實現代碼基本一樣,只使用了一個<s:property>標籤來顯示Action類中的sum屬性值。
重啟Tomcat,在地址欄鍵入http://localhost:8080/app/sum.jsp即可看到實現struts的效果
圖一:sum.jsp頁面
>>