鍍金池/ 教程/ Java/ Struts2 Hello World 實例
設(shè)置復選框的默認值
<s:if>, <s:elseIf>, <s:else> 標簽示例
下拉框示例
Struts2 &lt;s:bean&gt;標簽示例
Struts2 &lt;s:date&gt;標簽示例
<s:text>標簽示例
Struts2的ActionError&ActionMessage示例
Struts2 MySQL數(shù)據(jù)庫訪問
Struts2上傳多個文件例子
Struts2+Log4j集成
Struts 2 hello world (XML版本)
Struts2和Spring集成
Struts2 控件標簽
Struts2 和 JSON 實例
Struts2 環(huán)境配置
Struts2 &lt;s:checkboxlist&gt;多個復選框例子
Struts2 注釋類型
在Struts2中配置靜態(tài)參數(shù)
Struts2 驗證框架
Struts2 param 標簽
Struts2 &lt;s:hidden&gt;隱藏值例子
Struts2下載文件實例
Struts2 &lt;sx:autocompleter&gt;自動提示例子
Struts2 action標簽
autocompleter自動完成示例
Struts2 merge標簽
Struts2 &lt;s:action&gt;標簽示例
<s:property>標簽示例
Struts2 &lt;s:sort&gt;標簽示例
Struts2和Hibernate集成
自動選擇下拉框示例
Struts2 結(jié)果和結(jié)果類型
Struts2 是什么?
如何刪除Struts2動作的后綴擴展名
Struts2 Hello World 實例
<s:action>標簽示例
<s:bean>標簽示例
Struts2 + Quartz調(diào)度集成實例
如何獲取ServletContext對象
Struts2 &lt;s:i18n&gt;標簽示例
Struts2 append標簽
i18n 或本地化示例
autocompleter + JSON 示例
Struts2獲取HttpServletRequest實例
updownselect 示例
Struts2 &lt;s:debug&gt;標簽示例
Struts2重寫攔截器參數(shù)
多個Struts配置文件示例
<s:i18n>標簽示例
Struts2中文本地化問題
文件上傳示例
Struts2 &lt;s:property&gt;標簽實例
Struts2攔截器棧的例子
<s:merge>標簽示例
Struts2 數(shù)據(jù)標簽
Struts2 &lt;s:merge&gt;標簽示例
復選框checkboxes 示例
Struts2 generator標簽
如何配置Struts2全局資源包
key 屬性示例
Struts2 注釋
FilterDispatcher 和 StrutsPrepareAndExecuteFilter區(qū)別?
Struts 2 Hello World (注解版本)
Struts 2 + Log4j 集成實例
Struts2 值棧/OGNL
Struts2配置Action類的靜態(tài)參數(shù)
Struts2 本地化/國際化(i18n)
Chinese 本地化問題
Struts2單選預選按鈕值
Struts2 include標簽
Struts2 + Hibernate 集成實例
配置全局資源包
Struts2 異常處理
Struts2 &lt;s:set&gt;標簽示例
Struts2 &lt;s:doubleselect&gt;示例
Struts2 iterator標簽
optiontransferselect 示例
Struts2映射攔截動作
head 示例
Struts2+Hibernate使用Full Hibernate Plugin集成
Struts2命名空間配置和解釋
<s:param>標簽示例
Struts2+Hibernate集成實例
Struts2 &lt;s:head&gt;示例
Struts2 &lt;s:push&gt;標簽示例
Struts2文件上傳例子
Struts2 &lt;s:param&gt;標簽示例
@ResultPath 注釋示例
Struts2 體系結(jié)構(gòu)
Struts2 execAndWait攔截器例子
Struts2 攔截器
Textarea - 文本域
Struts2教程
<s:push>標簽示例
Struts2 文件上傳
Struts2 date 標簽
Struts2 &lt;s:texttag&gt;標簽示例
Struts2+Quartz2調(diào)度集成實例
Struts2開發(fā)模式
Struts2 autocompleter+JSON例子
Struts2 類型轉(zhuǎn)換
<s:url>標簽示例
Struts2 Ajax 標簽
Struts2 bean 標簽
<s:iterator>標簽迭代示例
Hidden隱藏值示例
在Struts2獲取HttpServletResponse對象
Struts2 主題和模板
Struts2自動選擇下拉框的值
Struts2下載文件實例
在Struts2中獲取 HttpServletRequest
級聯(lián)選擇示例
Struts2 &lt;sx:datetimepicker&gt;示例
Struts2 include(包含)多個配置文件
Struts2 &lt;s:select&gt;下拉框例子
Struts2 Action/動作
Struts2 &lt;s:textarea&gt;文本域?qū)嵗?/span>
Struts2+Spring集成實例
Struts2 &lt;s:updownselect&gt;示例
Struts2 property 標簽
Struts2 &lt;s:url&gt;標簽示例
Struts2 表單標簽
Struts2資源包使用示例
subset tag example
Struts 2 ActionError &amp; ActionMessage Example
Struts2 MVC架構(gòu)
Struts2 if/else標簽
Struts2 &lt;s:generator&gt;標簽示例
<s:include>標簽示例
Struts2開發(fā)者模式
<s:generator> 標簽示例
復選框heckbox 示例
Struts2 text 標簽
Radio 單選按鍵示例
Struts2 &lt;s:a&gt;標簽示例
Struts2 key鍵屬性示例
Struts2設(shè)置多個復選框缺省值
Struts2 基于XML校驗
Struts2 配置文件
Struts2 &lt;s:radio&gt;單選按鈕例子
Struts2 發(fā)送郵件Email
Struts2獲取HttpServletResponse實例
<s:sort>標簽示例
Struts2 &lt;s:optiontransferselect&gt;示例
Struts2和Tiles集成
Struts2模型驅(qū)動實例
Struts2的FilterDispatcher和StrutsPrepareAndExecuteFilter有什么不同?
<s:append>標簽示例
組合框示例
Struts2 &lt;s:password&gt;密碼示例
datetimepicker 日期選擇
Struts2 &lt;s:iterator&gt;迭代器標簽示例
TextBox文檔示例
Struts2 url標簽
資源包使用示例
Struts2本地化和國際化
Struts2 &lt;s:subset&gt;標簽示例
Struts2 + Hibernate使用“Full Hibernate Plugin"插件集成
Struts2和JSON實例
Struts2注解示例
Struts2 &lt;s:checkbox&gt;復選框例子
Struts2快速入門
<s:date>標簽示例
Struts2 set 標簽
<s:set>標簽示例
Struts2 命名空間配置和解釋
Struts 2 hello world (XML版本)
&nbsp;預選單選按鈕
<s:a>標簽示例
Struts2+Spring+Hibernate集成實例
Struts2 &lt;s:combobox&gt;組合框的例子
Struts2 if,elseif,else標簽示例
Struts2 @ResultPath注釋示例
struts2 &lt;s:append&gt;標簽示例
Struts2 &lt;s:textfield&gt;文本示例
多文件上傳示例
使用Struts2動作
<s:debug>標簽示例
在Struts2中如何獲取ServletContext對象
Struts2 &lt;s:include&gt;標簽示例
Password 示例

Struts2 Hello World 實例

前面我們已經(jīng)學習了Struts2 的架構(gòu),當點擊一個超鏈接或提交一個HTML表單在Struts2 的 Web應(yīng)用程序,輸入所收集被發(fā)送到一個Java類稱為操作控制器。當動作執(zhí)行后,結(jié)果選擇了一個資源來呈現(xiàn)響應(yīng)。資源通常是一個JSP,但它也可以是一個PDF文件,Excel電子表格,或一個Java applet 窗口。

假設(shè)已經(jīng)建立開發(fā)環(huán)境?,F(xiàn)在讓我們繼續(xù)為第一個 “Hello World” 的 struts2 項目構(gòu)建。這個項目的目的是建立一個Web應(yīng)用程序,它收集用戶的姓名,并顯示“Hello World” 用戶名。我們將創(chuàng)建任何Struts2項目的四個組成部分:

SN 組件和說明
1 Action
Create an action class which will contain complete business logic and conrol the interaction between the user, the model, and the view.
2 Interceptors
Create interceptors if required, or use existing interceptors. This is part of Controller.
3 View
Create a JSPs to interact with the user to take input and to present the final messages.
4 Configuration Files
Create configuration files to couple the Action, View and Controllers. These files are struts.xml, web.xml, struts.properties.

我打算使用Eclipse IDE,所以所有必需的組件將創(chuàng)建一個動態(tài)Web項目下。所以,讓我們開始創(chuàng)建動態(tài)Web項目。

創(chuàng)建動態(tài)Web項目:

啟動Eclipse,然后再 File > New > Dynamic Web Project 輸入工程名稱為 HelloWorldStruts2 并設(shè)置屏幕中給出其余的選項:

Hello World Sturts2

選擇在接下來的畫面中的所有默認選項和最后檢查 Generate Web.xml deployment descriptor 選項. 這將創(chuàng)建一個動態(tài)Web項目在Eclipse?,F(xiàn)在去 Windows > Show View > Project Explorer, 會看到項目窗口的東西如下:

Hello World Sturts2

現(xiàn)在復制下列文件從struts 2 lib 文件夾 C:struts-2.2.3lib 到工程 WEB-INFlib 文件夾,要做到這一點,你可以簡單地將以下的所有文件拖放復制到WEB-INF lib文件夾。

  • commons-fileupload-x.y.z.jar

  • commons-io-x.y.z.jar

  • commons-lang-x.y.jar

  • commons-logging-x.y.z.jar

  • commons-logging-api-x.y.jar

  • freemarker-x.y.z.jar

  • javassist-.xy.z.GA

  • ognl-x.y.z.jar

  • struts2-core-x.y.z.jar

  • xwork-core.x.y.z.jar

創(chuàng)建動作類:

Action類是 Struts2 應(yīng)用程序的關(guān)鍵,我們實現(xiàn)的大部分動作類中的業(yè)務(wù)邏輯。因此,讓我們創(chuàng)建一個Java文件HelloWorldAction.java Java Resources > src 在下面給出的內(nèi)容包名 com.yiibai.struts2 。

Action類響應(yīng)用戶操作,當用戶點擊一個URL。 Action類中的方法中的一個或多個被執(zhí)行并返回一個字符串結(jié)果?;诮Y(jié)果的值,一個特定的JSP頁面的呈現(xiàn)方式。

package com.yiibai.struts2;

public class HelloWorldAction{
   private String name;

   public String execute() throws Exception {
      return "success";
   }
   
   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }
}

這是一個非常簡單的類,一個名為“name”屬性。我們有標準的“name”屬性的getter和setter方法??,并返回字符串“success”的執(zhí)行方法。 

Struts2框架將創(chuàng)建一個對象HelloWorldAction類并調(diào)用執(zhí)行方法在響應(yīng)用戶的動作。把業(yè)務(wù)邏輯里面的execute方法,最后返回的字符串常量。簡單地說為每個網(wǎng)址,必須執(zhí)行一個動作類,要么就可以直接使用這個類的名稱作為操作名,也可以使用struts.xml文件如下所示映射到一些其他的名字。

創(chuàng)建視圖

我們需要一個JSP提交最后的消息,這個頁面會被稱為Struts2框架一個預定義的動作時,會發(fā)生這種映射將被定義在struts.xml文件。因此,讓我們一起創(chuàng)造在Eclipse項目在WebContent文件夾下面的jsp文件helloWorld.jsp。要做到這一點,右鍵單擊WebContent文件夾在項目資源管理器,選擇New >JSP File。 .

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Hello World</title>
</head>
<body>
   Hello World, <s:property value="name"/>
</body>
</html>

taglib指令告訴Servlet容器,這個頁面將使用Struts 2的標簽,這些標簽將之前由s。 s:property標簽顯示動作類屬性"name> HelloWorldAction類的getName()方法返回的值。 

創(chuàng)建主頁:

我們還需要在WebContent文件夾中創(chuàng)建的index.jsp。該文件將作為初始動作URL,用戶可以在其中點擊告訴Struts 2框架調(diào)用 HelloWorldAction類定義的方法呈現(xiàn) helloWorld.jsp 視圖。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
   pageEncoding="ISO-8859-1"%>
<%@ 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>
<title>Hello World</title>
</head>
<body>
   <h1>Hello World From Struts2</h1>
   <form action="hello">
      <label for="name">Please enter your name</label><br/>
      <input type="text" name="name"/>
      <input type="submit" value="Say Hello"/>
   </form>
</body>
</html>

Hello 動作定義在上面的視圖文件將被映射到HelloWorldAction類和其執(zhí)行方法使用struts.xml文件。當用戶點擊“提交”按鈕,將導致Struts2框架運行的執(zhí)行方法定義的在其中,HelloWorldAction類根據(jù)返回值的方法,將相應(yīng)的視圖選擇和渲染作為響應(yīng)。

配置文件

我們需要一個映射,以配合網(wǎng)址,HelloWorldAction類(模型),和的helloWorld.jsp的(視圖)。映射講述了Struts 2框架類將響應(yīng)用戶的操作(URL),這個類的方法將被執(zhí)行,查看渲染基于字符串結(jié)果,該方法返回。

因此,讓我們創(chuàng)建一個名為struts.xml中。由于Struts2 要求struts.xml中存在類“文件夾中。因此,創(chuàng)建struts.xml文件的WebContent/ WEB-INF/classes文件夾下。 Eclipse不創(chuàng)建“classes”文件夾,所以需要自己做。要做到這一點,在項目資源管理器的WEB-INF文件夾上點擊右鍵并選擇New > Folder。struts.xml中應(yīng)該像這樣:

<?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.devMode" value="true" />
   <package name="helloworld" extends="struts-default">
     
      <action name="hello" 
            class="com.yiibai.struts2.HelloWorldAction" 
            method="execute">
            <result name="success">/HelloWorld.jsp</result>
      </action>
   </package>
</struts>

上面的配置文件的幾句話。在這里,我們設(shè)置為 true常量struts.devMode,因為我們正在程序開發(fā)環(huán)境,我們需要看到一些有用的日志消息。然后,我們定義了一個名為HelloWorld 包。創(chuàng)建一個包是有用的,當想一起進行分組動作。在我們的例子中,我們將我們的行動命名為“hello”,這是相應(yīng)的URL /hello.action 和備份HelloWorldAction.class。執(zhí)行HelloWorldAction.class方法是運行時URL /hello.action 調(diào)用的方法。如果執(zhí)行方法的結(jié)果返回“success”,然后我們把用戶到 helloWorld.jsp。

下一步是創(chuàng)建一個web.xml文件,這是一個Struts2的任何請求的入口點。Struts2應(yīng)用程序的入口點,將是一個部署描述符(web.xml)中定義的過濾器。因此,我們將定義在web.xml中條目oforg.apache.struts2.dispatcher.FilterDispatcher類。 web.xml文件中需要創(chuàng)建的WEB-INF文件夾下的WebContent下。已經(jīng)建立的Eclipse的web.xml文件時為創(chuàng)建項目。所以,讓我們只需要修改如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns="http://java.sun.com/xml/ns/javaee" 
   xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
   id="WebApp_ID" version="3.0">
   
   <display-name>Struts 2</display-name>
   <welcome-file-list>
      <wel