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