JSP的那些事兒(7)—-Struts 2.1.6的配置和使用

來源:互聯網
上載者:User

本文不打算介紹什麼是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頁面

>>

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.