通過學習Struts2 框架可以了解到,當你在Struts2 的web應用程序里點擊一個超鏈接或提交一個HTML表單時,會由控制器收集輸入并發(fā)送一個叫Actions的Java類。Action被執(zhí)行后,Result會選擇一個資源給予響應。這個資源通常是一個JSP,也可以是一個PDF文件,一個Excel表格,或者是一個Java小程序窗口。
假設你已經(jīng)建好了你的開發(fā)環(huán)境,那么現(xiàn)在讓我們繼續(xù)構建第一個Struts2 項目:Hello World 。這個項目的目標是構建一個收集用戶名并在用戶名后跟隨顯示“Hello World”的web應用程序。我們需要為每個Struts2 項目構建以下四個組件:
序號 | 名稱及描述 |
1 | Action(操作) |
創(chuàng)建一個動作類,包含完整的業(yè)務邏輯并控制用戶、模型以及視圖間的交互。 | |
2 | Interceptors(攔截器) |
這是控制器的一部分,可依據(jù)需求創(chuàng)建攔截器,或使用現(xiàn)有的攔截器。 | |
3 | View(視圖) |
創(chuàng)建一個JSP與用戶進行交互,獲取輸入并呈現(xiàn)最終信息。 | |
4 | Configuration Files(配置文件) |
創(chuàng)建配置文件來連接動作、視圖以及控制器,這些文件分別是struts.xml、web.xml以及struts.properties。 |
我們?nèi)绻蛩闶褂肊clipse IDE,那么所有必需的組件都要在動態(tài)Web項目(Dynamic Web Project)下創(chuàng)建。因此我們就先從創(chuàng)建動態(tài)Web項目開始。
按照下圖選擇所有默認選項,最后檢查 Generate Web.xml deployment descriptor 選項。這個將在Eclipse為你創(chuàng)建一個動態(tài)web項目?,F(xiàn)在點擊“Windows”>“Show”>“View”>“Project Explorer”,你就可以看到你的項目窗口,如下圖:
package cn.w3cschool.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; } }
<%@ 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>
<%@ 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>
<?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="cn.w3cschool.struts2.HelloWorldAction" method="execute"> <result name="success">/HelloWorld.jsp</result> </action> </package> </struts>
<?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> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <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>
注意:
如果它是struts2-core-2.5.jar,那么將web.xml中的過濾器類標記值更改為
<filter-class>
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
</filter-class>
如果它是struts2-core-2.1.3.jar,那么將web.xml中的過濾器類標記值更改為
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
自Struts 2.1.3以來,F(xiàn)ilterDispatcher就不推薦使用了。如果您使用的是較舊的版本,則用戶高于解決方案。
如果它是struts2-core-2.3.X.jar,那么將web.xml中的過濾器類標記值更改為
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
org.apache.catalina.core.ContainerBase.[Catalina].level = INFO org.apache.catalina.core.ContainerBase.[Catalina].handlers = \ java.util.logging.ConsoleHandler
默認由logging.properties指定一個ConsoleHandler將日志記錄按指定路線發(fā)送給stdout和FileHandler。程序運行日志的級別閾值可以使用SEVERE,WARNING,INFO,CONFIG,F(xiàn)INE,F(xiàn)INER,F(xiàn)INEST或者ALL。
這樣,我們就準備好使用Struts 2運行我們的Hello World程序了。
右鍵點擊項目名稱,接著點擊“Export”>“WAR File”創(chuàng)建WAR文件,然后將WAR部署到Tomcat的webapps目錄中。最后,啟動Tomcat服務器并嘗試訪問URL http://localhost:8080/HelloWorldStruts2/index.jsp ,將會呈現(xiàn)如下圖所示的結果:
輸入一個“Struts2”值并提交頁面,你可以看到以下頁面
注意,你可以在struts.xml文件中定義一個索引作為操作,這樣你可以調(diào)用索引頁面 http://localhost:8080/HelloWorldStruts2/index.action 。查看下面是怎樣定義索引作為操作:
<?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="index"> <result >/index.jsp</result> </action> <action name="hello" class="cn.w3cschool.struts2.HelloWorldAction" method="execute"> <result name="success">/HelloWorld.jsp</result> </action> </package> </struts>
更多建議: