精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Struts2教程1:第一個Struts2程序

開發 開發工具 后端
Struts是Apache基金會Jakarta項目組的一個Open Source項目,它采用MVC模式,能夠很好地幫助Java開發者利用J2EE開發Web應用。和其他的Java架構一樣,Struts也是面向對象設計,將MVC模式"分離顯示邏輯和業務邏輯"的能力發揮得淋漓盡致。Struts的目的是為了減少在運用MVC設計模型來開發Web應用的時間。你仍然需要學習和應用該架構,不過它將可以完成其中一些繁重的工作。在本系列教程中我們將學習到Struts2的各種技術。

【相關文章】

  1. Struts2教程2:處理一個form多個submit
  2. Struts2教程3:struts.xml常用配置解析
  3. Struts2教程4:使用validate方法驗證數據
  4. Struts2教程5:使用Validation框架驗證數據
  5. Struts2教程6:在Action類中獲得HttpServletResponse對象
  6. Struts2教程7:上傳任意多個文件
  7. Struts2教程8:攔截器概述
  8. Struts2教程9:實現自已的攔截器
  9. Struts2教程10:國際化

在本教程中使用的工具和程序庫的版本如下:

開發工具:MyEclipse6

Web服務器:Tomcat6

Struts版本:Struts2.0.11.1

JDK版本:JDK1.5.0_12

J2EE版本:Java EE5.0

在本系列教程中Web工程的上下文路徑都是struts2,如果在Web根目錄有一個index.jsp文件,則訪問路徑如下:

http://localhost:8080/struts2/index.jsp

由于MyEclipse6目前并不支持Struts2,所以我們需要到struts.apache.org去下載Struts2安裝包。要想正常使用Struts2,至少需要如下五個包(可能會因為Struts2的版本不同,包名略有差異,但包名的前半部是一樣的)。

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

Struts2雖然在大版本號上是第二個版本,但基本上在配置和使用上已經完全顛覆了Struts1.x的方式(當然,Struts2仍然是基于MVC模式的,也是動作驅動的,可能這是唯一沒變的東西)。Struts2實際上是在Webwork基礎上構建起來的MVC框架。我們從Struts2的源代碼中可以看到,有很多都是直接使用的xwork(Webwork的核心技術)的包。既然從技術上來說Struts2是全新的框架,那么就讓我們來學習一下這個新的框架的使用方法。

如果大家使用過Struts1.x,應該對建立基于Struts1.x的Web程序的基本步驟非常清楚。讓我們先來回顧一下建立基于Struts1.x的Web程序的基本步驟。

1. 安裝Struts。由于Struts的入口點是ActionServlet,所以得在web.xml中配置一下這個Servlet。

2. 編寫Action類(一般從org.apache.struts.action.Action類繼承)。

3. 編寫ActionForm類(一般從org.apache.struts.action.ActionForm類繼承),這一步不是必須的,如果要接收客戶端提交的數據,需要執行這一步。

4. 在struts-config.xml文件中配置Action和ActionForm。

5. 如果要采集用戶錄入的數據,一般需要編寫若干JSP頁面,并通過這些JSP頁面中的form將數據提交給Action。

下面我們就按著編寫struts1.x程序的這五步和struts2.x程序的編寫過程一一對應,看看它們誰更“酷”。下面我們來編寫一個基于Struts2的Web程序。這個程序的功能是讓用戶錄入兩個整數,并提交給一個Struts Action,并計算這兩個數的代數和,如果代碼和為非負數,則跳轉到positive.jsp頁面,否則跳轉到negative.jsp頁面。

【第1步】 安裝Struts2

這一步對于Struts1.x和Struts2都是必須的,只是安裝的方法不同。Struts1的入口點是一個Servlet,而Struts2的入口點是一個過濾器(Filter)。因此,Struts2要按過濾器的方式配置。下面是在web.xml中配置Struts2的代碼:

<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>

【第2步】 編寫Action類

這一步和Struts1.x也必須進行。只是Struts1.x中的動作類必須從Action類中繼承,而Struts2.x的動作類需要從com.opensymphony.xwork2.ActionSupport類繼承。下面是計算兩個整數代碼和的Action類,代碼如下:

packageaction;
importcom.opensymphony.xwork2.ActionSupport;
publicclassFirstActionextendsActionSupport
{
  privateintoperand1;
  privateintoperand2;
  publicStringexecute()throwsException
  {
    if(getSum()>=0) //如果代碼數和是非負整數,跳到positive.jsp頁面
    {
      return"positive";
    }
    else //如果代碼數和是負整數,跳到negative.jsp頁面
    {
      return"negative";
    }
  }
  publicintgetOperand1()
  {
    returnoperand1;
  }
  publicvoidsetOperand1(intoperand1)
  {
    System.out.println(operand1);
     this.operand1=operand1;
  }
  publicintgetOperand2()
  {
    returnoperand2;
  } 
  publicvoidsetOperand2(intoperand2)
  {
    System.out.println(operand2);
    this.operand2=operand2;
  }
  publicintgetSum()
  {
    returnoperand1+operand2; //計算兩個整數的代碼數和
  }
}

從上面的代碼可以看出,動作類的一個特征就是要覆蓋execute方法,只是Struts2的execute方法沒有參數了,而Struts1.x的execute方法有四個參數。而且execute方法的返回值也不同的。Struts2只返回一個String,用于表述執行結果(就是一個標志)。上面代碼的其他部分將在下面講解。

【第3步】 編寫ActionForm類

在本例中當然需要使用ActionForm了。在Struts1.x中,必須要單獨建立一個ActionForm類(或是定義一個動作Form),而在Struts2中ActionForm和Action已經二合一了。從第二步的代碼可以看出,后面的部分就是應該寫在ActionForm類中的內容。所以在第2步,本例的ActionForm類已經編寫完成(就是Action類的后半部分)。

#p#

【第4步】 配置Action類

這一步struts1.x和struts2.x都是必須的,只是在struts1.x中的配置文件一般叫struts-config.xml(當然也可以是其他的文件名),而且一般放到WEB-INF目錄中。而在struts2.x中的配置文件一般為struts.xml,放到WEB-INF"classes目錄中。下面是在struts.xml中配置動作類的代碼:

<?xmlversion="1.0"encoding="UTF-8"?>
 <!DOCTYPEstrutsPUBLIC
   "-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"
   "http://struts.apache.org/dtds/struts-2.0.dtd">
 <struts>
   <packagename="struts2"namespace="/mystruts"
     extends="struts-default">
     <actionname="sum"class="action.FirstAction">
       <resultname="positive">/positive.jsp</result>
       <resultname="negative">/negative.jsp</result>
     </action>
   </package>
 </struts>

在<struts>標簽中可以有多個<package>,第一個<package>可以指定一個Servlet訪問路徑(不包括動作名),如“/mystruts”。extends屬性繼承一個默認的配置文件“struts-default”,一般都繼承于它,大家可以先不去管它。<action>標簽中的name屬性表示動作名,class表示動作類名。

<result>標簽的name實際上就是execute方法返回的字符串,如果返回的是“positive”,就跳轉到positive.jsp頁面,如果是“negative”,就跳轉到negative.jsp頁面。在<struts>中可以有多個<package>,在<package>中可以有多個<action>。我們可以用如下的URL來訪問這個動作:

http://localhost:8080/struts2/mystruts/sum.action

注:Struts1.x的動作一般都以.do結尾,而Struts2是以.action結尾。

【第5步】 編寫用戶錄入接口(JSP頁面)

1. 主界面(sum.jsp)

在Web根目錄建立一個sum.jsp,代碼如下:

<%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%>
 <%@taglibprefix="s"uri="/struts-tags"%>
 <html>
   <head>
     <title>輸入操作數</title>
   </head>
   <body>
     求代數和
     <br/>
     <s:formaction="mystruts/sum.action">        
       <s:textfieldname="operand1"label="操作數1"/>
       <s:textfieldname="operand2" label="操作數2"/>    
       <s:submitvalue="代數和"/>      
     </s:form>
   </body>
 </html>

在sum.jsp中使用了Struts2帶的tag。在Struts2中已經將Struts1.x的好幾個標簽庫都統一了,在Struts2中只有一個標簽庫/struts-tags。這里面包含了所有的Struts2標簽。但使用Struts2的標簽大家要注意一下。在<s:form>中最好都使用Struts2標簽,盡量不要用HTML或普通文本,大家可以將sum.jsp的代碼改為如下的形式,看看會出現什么效果:

... ...
      求代數和
     <br/>
     <s:form action="mystruts/sum.action" >        
操作數1:<s:textfield name="operand1" /><br/>
操作數2:<s:textfield name="operand1" /><br/>
       <s:submit value="代數和" />      
     </s:form>
     ... ...

提示一下,在<s:form>中Struts2使用<table>定位。

2. positive.jsp

<%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%>
 <%@taglibprefix="s"uri="/struts-tags"%>
 <html>
  <head>
   <title>顯示代數和</title>
  </head>
  <body>  
   代數和為非負整數<h1><s:propertyvalue="sum"/></h1>
  </body>
 </html>

3. negative.jsp

<%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%>
 <%@taglibprefix="s"uri="/struts-tags"%>
<html>
  <head>
   <title>顯示代數和</title>
  </head>
  <body>
   代數和為負整數<h1><s:propertyvalue="sum"/></h1>
  </body>
 </html>

這兩個jsp頁面的實現代碼基本一樣,只使用了一個<s:property>標簽來顯示Action類中的sum屬性值。<s:property>標簽是從request對象中獲得了一個對象中得到的sum屬性,如我們可以使用如下的代碼來代替<s:property value=”sum”/>:

<%
com.opensymphony.xwork2.util.OgnlValueStack ovs =
(com.opensymphony.xwork2.util.OgnlValueStack)request.getAttribute("struts.valueStack");
out.println(ovs.findString("sum"));
%>

啟動Tomcat后,在IE中輸入如下的URL來測試這個例子:

http://localhost:8080/struts2/sum.jsp

【編輯推薦】

  1. Struts2教程2:處理一個form多個submit
  2. Struts2教程3:struts.xml常用配置解析
  3. Struts2教程4:使用validate方法驗證數據
  4. Struts2教程5:使用Validation框架驗證數據
  5. Struts2教程6:在Action類中獲得HttpServletResponse對象
  6. Struts2教程7:上傳任意多個文件
  7. Struts2教程8:攔截器概述
  8. Struts2教程9:實現自已的攔截器
  9. Struts2教程10:國際化
責任編輯:楊鵬飛 來源: BlogJava
相關推薦

2009-06-25 15:11:28

Struts2教程Struts2程序

2009-07-29 09:54:34

struts2和str

2009-02-04 11:00:44

2009-06-25 15:22:03

Struts2教程一個form多個sub

2009-06-03 14:19:34

Struts2Guice

2009-06-25 16:04:30

2009-06-25 15:26:25

Struts2教程struts.xml常

2009-02-04 15:04:13

2009-06-25 15:50:03

Struts2教程上傳任意多個文件

2009-06-25 15:54:42

Struts2教程攔截器

2009-02-04 11:37:15

2009-07-03 09:35:57

Struts2 JSP

2009-06-04 08:34:24

Struts2配置struts.xml

2009-09-14 19:31:36

Struts1和Str

2009-02-04 14:00:59

2009-02-04 14:19:38

2009-06-25 15:33:12

Struts2教程使用validate驗證數據

2009-06-25 15:37:12

Struts2教程Validation框

2012-05-10 14:00:06

StrutsjsonJava

2013-07-19 09:36:04

struts2struts2漏洞
點贊
收藏

51CTO技術棧公眾號

国产成人黄色片| 亚洲一区二区三区视频| 亚洲成人网在线播放| **欧美日韩在线观看| 国产精品全国免费观看高清| 91日本视频在线| 国产大片中文字幕| 好吊色一区二区三区| 亚洲黑丝一区二区| 欧美日韩国产一区二区三区地区| 超碰免费在线公开| 手机看片国产1024| 蜜桃视频免费观看一区| 欧美日韩高清区| 手机在线成人免费视频| av电影免费在线观看| 蜜桃av综合| 久久精品视频99| 中文字幕天堂网| 成人福利一区二区| 91偷拍与自偷拍精品| 国产福利视频一区二区| 欧美精品xxxxx| 免费观看久久av| 91精品国产91热久久久做人人| 欧美一级视频免费看| 又爽又大又黄a级毛片在线视频| 国产成人精品免费网站| 国产精品丝袜视频| 少妇一级淫片免费放中国| 四季av一区二区凹凸精品| 亚洲精品久久久久中文字幕欢迎你| 美女一区二区三区视频| a国产在线视频| 中文字幕日本不卡| 秋霞久久久久久一区二区| 国产熟女一区二区丰满| 久久亚洲欧洲| 韩剧1988免费观看全集| 99成人在线观看| 深爱激情综合网| 欧美不卡视频一区| 日本黄色的视频| 自拍偷自拍亚洲精品被多人伦好爽| 一区二区高清免费观看影视大全 | 大乳在线免费观看| 99精品视频一区| 91久久精品国产91久久性色tv| 最新国产中文字幕| 久久精品一区二区国产| 97成人在线视频| 中文字幕日韩三级片| 久久综合偷偷噜噜噜色| 欧美裸体bbwbbwbbw| av五月天在线| 久久久成人av毛片免费观看| 一本久道久久综合中文字幕| 黄页网站大全在线观看| 久久大胆人体| 亚洲最色的网站| 欧美黄网在线观看| 欧美韩日亚洲| 亚洲小说欧美激情另类| 国产在线视频在线| 成人影音在线| 婷婷久久综合九色综合伊人色| 东北少妇不带套对白| 国精一区二区三区| 五月婷婷久久丁香| av黄色在线网站| 欧美大片免费观看网址| 日韩欧美一区二区三区久久| 欧美xxxxx在线视频| 亚洲欧洲美洲av| 在线欧美小视频| 天天操天天爽天天射| 国产欧美在线观看免费| 亚洲综合免费观看高清在线观看| 男人j进女人j| 欧美人与动牲性行为| 夜夜嗨av一区二区三区四季av| 无码日本精品xxxxxxxxx| 丁香花电影在线观看完整版| 精品国产电影一区| 日韩免费高清在线| 亚洲欧洲一二区| 欧美www视频| 国产在线观看无码免费视频| 国产中文字幕一区二区三区 | 91精品视频专区| 亚洲AV无码精品自拍| 91色视频在线| 中文字幕乱码一区二区三区| 秋霞在线视频| 在线视频一区二区免费| 一起操在线视频| 澳门成人av| 在线日韩精品视频| 在线免费日韩av| 美女黄网久久| 亚洲一区久久久| 亚洲人妻一区二区| 国产精品久久久久久久岛一牛影视| 免费的av在线| 黄色成人免费网| 亚洲狼人国产精品| 人人妻人人做人人爽| 青青热久免费精品视频在线18| 欧美一区二区视频观看视频| 欧美无人区码suv| 欧美oldwomenvideos| 久久久视频精品| 中文字幕第2页| 成人av资源站| 亚洲欧美在线网| 瑟瑟视频在线看| 欧美一区二区三区系列电影| 一区二区三区免费在线观看视频| 五月天久久网站| 欧美尤物巨大精品爽| 国产精品xxxx喷水欧美| 久久精品国产一区二区三| 精品一区2区三区| www视频在线免费观看| 日韩一区二区三区av| 国产精品久久国产精品| 黄色片视频在线免费观看| 绿色成人影院| 欧美一区二区久久| 久久久久久久毛片| 成人全视频在线观看在线播放高清| 91精品国产色综合久久久蜜香臀| 无码人妻精品一区二区三应用大全| 91精品综合| 国产97在线视频| 色欲av永久无码精品无码蜜桃| 日韩一区欧美一区| 青青青国产在线视频| 欧美自拍视频| 欧美精品video| 99热这里只有精品在线观看| 国产精品人妖ts系列视频| 久久久999视频| 91欧美日韩在线| 久久亚洲电影天堂| 这里只有久久精品视频| 91免费观看国产| 日韩精品―中文字幕| 97久久亚洲| 九九热最新视频//这里只有精品| 一级做a爱片久久毛片| 精品一区二区免费| 国产专区精品视频| 国产免费av高清在线| 精品高清美女精品国产区| 亚洲精品久久一区二区三区777| 久久久久97| 欧美精品久久一区二区| www.国产免费| 亚洲午夜激情网站| 亚洲一二三四五| 亚洲性色视频| 国产精品成熟老女人| 蜜桃视频在线入口www| 欧美性极品少妇精品网站| 国产精品久久AV无码| 国产情侣久久| 国产在线视频不卡| 久草资源在线| 日韩一区二区麻豆国产| 国产大片免费看| 国产东北露脸精品视频| 免费看日本黄色| 国内精品国产成人国产三级粉色 | 天堂在线中文字幕| 欧美日韩在线观看视频| 日本不卡一区二区在线观看| 郴州新闻综合频道在线直播| 国产精品网红福利| 国产人成网在线播放va免费| 日韩一级免费观看| 久久免费视频播放| av亚洲精华国产精华| 亚洲一区二区免费视频软件合集| 国产a亚洲精品| 久久中文字幕一区| 日韩中文字幕免费在线观看| 精品国产91久久久久久老师| 成人免费毛片糖心| 精品写真视频在线观看| 欧美人与动牲交xxxxbbbb| 国产女人18毛片水真多18精品| 欧洲一区二区视频| 永久免费av在线| 日韩欧美国产高清| 波多野结衣毛片| 亚洲免费在线视频一区 二区| www.555国产精品免费| 日日夜夜免费精品| 国产一二三四区在线观看| 欧美18免费视频| 国产精品免费视频xxxx| 日本乱理伦在线| 国产亚洲免费的视频看| 超碰在线人人干| 一本大道av一区二区在线播放| 国产小视频你懂的| 91浏览器在线视频| 成人免费黄色av| 久久高清国产| 中文字幕在线中文| 欧洲三级视频| 亚洲精品欧美日韩专区| 午夜日韩成人影院| 欧美激情一二三| 91高清在线视频| 精品成人在线观看| 在线观看国产小视频| 狠狠躁18三区二区一区| 精品国产乱码久久久久久鸭王1| 2024国产精品视频| 手机精品视频在线| 日本大胆欧美人术艺术动态 | 亚洲综合精品| 国产免费内射又粗又爽密桃视频| 一本色道久久综合狠狠躁的番外| 亚洲综合日韩在线| 国产91亚洲精品久久久| 青草热久免费精品视频| 成人性生交大片免费看网站 | 国产又黄又粗的视频| 99精品视频在线播放观看| 四虎国产精品免费| 精品一区精品二区高清| 国产自偷自偷免费一区 | 欧美xxxx14xxxxx性爽| 伊人久久亚洲综合| 欧美日韩国产丝袜另类| 亚洲精品在线观看av| 亚洲女子a中天字幕| 亚洲aaa视频| 欧美激情综合在线| 免费看的黄色网| 久久香蕉国产线看观看99| 亚洲图片欧美另类| 国产成a人亚洲精| 伊人成人免费视频| 国产精品一级片在线观看| av在线免费观看国产| 中文字幕一区二区三区乱码图片| 亚洲永久一区二区三区在线| 韩日一区二区三区| 欧美午夜视频在线| 免费视频国产一区| 欧洲精品国产| 国产一区二区精品福利地址| 日本一区二区三不卡| 狠狠色狠狠色综合婷婷tag| 欧美日韩在线不卡一区| 国产精品美女久久久久久不卡 | 自拍视频一区| 欧美精品人人做人人爱视频| 亚洲高清极品| 欧美专区一二三| 青青草原综合久久大伊人精品| 亚洲高清视频在线观看| 欧美国产美女| 国产免费xxx| 欧美午夜电影在线观看| 欧美综合在线播放| 亚洲专区一区| 亚洲少妇久久久| 久国产精品韩国三级视频| 亚洲图色中文字幕| 高清av一区二区| 毛茸茸多毛bbb毛多视频| 国产日韩欧美精品一区| 美女网站视频色| 亚洲精品视频在线| 国产主播在线观看| 一本一本大道香蕉久在线精品 | 97碰碰视频| 日韩精品社区| 日韩亚洲视频| 精品人人人人| 欧美日韩精品免费在线观看视频| 凹凸成人精品亚洲精品密奴| 一级黄色免费在线观看| 国色天香一区二区| 国产欧美高清在线| 韩国成人福利片在线播放| 国产在线不卡av| 欧美国产在线观看| 久草视频免费在线| 色94色欧美sute亚洲线路一久| 国产乱淫av片免费| 亚洲激情国产精品| 暖暖日本在线观看| 国内精品久久久久久久久| 精品欧美一区二区三区在线观看| 国产又爽又黄的激情精品视频| 精品欧美午夜寂寞影院| 在线视频精品一区| 在线视频日韩| 污污视频网站在线| 久久先锋影音av| 免费在线观看黄视频| 91高清视频在线| 亚洲乱码精品久久久久.. | 亚洲影影院av| 国产精选一区| 久艹在线免费观看| 蜜桃视频在线观看一区| 久久无码人妻精品一区二区三区| ㊣最新国产の精品bt伙计久久| 手机看片久久久| 欧美大片国产精品| 91xxx在线观看| 26uuu亚洲伊人春色| 清纯唯美激情亚洲| 亚洲看片网站| 日日摸夜夜添夜夜添精品视频| 中文字幕1区2区| 亚洲欧美在线观看| 69国产精品视频免费观看| 精品粉嫩aⅴ一区二区三区四区| 黄色片网站在线| 国产精品旅馆在线| 蜜桃国内精品久久久久软件9| 美女扒开大腿让男人桶| 国产精品影视网| 大地资源高清在线视频观看| 色综合久久中文综合久久97| 你懂的网站在线| 欧美猛交ⅹxxx乱大交视频| 婷婷激情成人| 亚洲图片小说在线| 日韩福利视频导航| 黄瓜视频污在线观看| 婷婷夜色潮精品综合在线| 亚洲AV无码乱码国产精品牛牛| 日韩视频第一页| 日本无删减在线| 91理论片午午论夜理片久久| 日韩在线看片| 午夜久久久精品| 国产精品午夜春色av| 国产日韩在线免费观看| 国产亚洲精品91在线| 日韩免费福利视频| 日本一区二区三区视频在线播放| 久久精品天堂| 非洲一级黄色片| 亚洲男人的天堂av| 999精品国产| 不用播放器成人网| 亚洲高清在线一区| 97免费视频观看| 成人午夜激情在线| 国产欧美日韩另类| 日韩精品欧美国产精品忘忧草| 成人爽a毛片免费啪啪| 欧美一级日本a级v片| 免费成人av在线播放| 美国精品一区二区| 91精选在线观看| 欧美黑人猛交| 久久99久久99精品蜜柚传媒| 久久精品女人天堂| 伊人影院综合网| 欧美乱妇20p| 99热国产在线| 国产精品久久久久久久久婷婷| 99xxxx成人网| 亚洲黄色小说视频| 欧美精品久久久久久久多人混战 | 不卡av电影在线播放| 中文字幕第四页| 中文欧美日本在线资源| 精品国产麻豆| 少妇高潮喷水在线观看| 久久精品视频一区二区| 亚洲图片欧美在线| 九九久久综合网站| 免费视频国产一区| 欧美日韩久久婷婷| 欧美日韩人人澡狠狠躁视频| 国产在线网站| 亚洲精品欧美日韩| 亚洲一区二区三区高清不卡| 国产在线免费av| 精品裸体舞一区二区三区| 极品美女一区| 日本一本草久p| 91美女在线观看| 国产又大又长又粗| 欧美专区第一页| 亚洲色图网站| 日韩av在线看免费观看| 欧美一区二区三区在线观看|