日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

struct2(二) struct2的hello world 程序

發布時間:2025/3/21 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 struct2(二) struct2的hello world 程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在struct2 的web應用程序中,當你點擊一個超鏈接或者提交一個HTML頁面的時候,并不是直接的轉向一個另一個的頁面,而是轉到你提供的一個Java 類。這個過程被稱為一個action,一個action執行完畢之后,選擇一個資源進行響應數據,(就是返回數據,選擇頁面展示數據)。結果常常是一個頁面,也可能是一個PDF文見,一個Excel單據,或者一個Java應用程序。

假設你想創建一個簡單的用來展示歡迎信息的hello world程序,建好一個空的基礎的struct2的web應用程序以后,接著創建一個hello world的例子,你需要做以下四件事情。

1. 首先創建一個類來保存歡迎信息(這個就是展示的數據,模型,model)。

2. 創建一個頁面來展示數據(一般是一個html或者jsp文件,view)。

3. 創建一個action,來控制用戶,模型,展示之間的交互。

4. 在structs.Xml中創建一個在action和view之間的交互。

通過這些組件,我們正在把工作分為不同的部分,符合非常有名的MVC模型,這樣的分離原則使復雜的應用變得更加的簡單,下面我們利用在struct2(一)中的基本的struct2的工程,編碼實現上面所說的。

編碼實現:

我們把基本的structTest 增加一個model 類來存儲我們的歡迎信息,一個展示頁面來展示我們的信息。一個action作為controller,一個配置信息把一切結合起來。

第一步:創建model Class? MessageStore.java

package org.apache.struts.helloworld.model;public class MessageStore {private String message;public MessageStore() {setMessage("Hello Struts User");}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}}

在上面的model Class中的get/set方法,提供對類私有成員message的操作方法。在struct2框架中要求view(jsp或者html頁面)的展示的數據必須遵循? JavaBean-style conventions.原則。

第二部: 創建action 類: HelloWorldAction.java

我們需要一個action class 來作為controller。這個action類用來響應用戶的操作(在這個例子中就是點擊html頁面的一個超鏈接,發送給servlet 容器一個特殊的URL),然后action 類中執行完畢以后,會返回一個String類型的信息,在這個結果行的信息的基礎上,一個特殊的展示頁面(在這個例子中為HelloWorld.jsp)響應了。

具體的代碼:

package org.apache.struts.helloworld.action;import org.apache.struts.helloworld.model.MessageStore; import com.opensymphony.xwork2.ActionSupport;public class HelloWorldAction extends ActionSupport {private static final long serialVersionUID = 1L;private MessageStore messageStore;@Overridepublic String execute() throws Exception {messageStore = new MessageStore() ;return SUCCESS;}public MessageStore getMessageStore() {return messageStore;}public void setMessageStore(MessageStore messageStore) {this.messageStore = messageStore;}}

struct2 框架將會創建一個HelloWorldAction 類的實例,調用其中的execute 方法,來響應用戶的操作(在這個例子中就是點擊html頁面的一個超鏈接,發送給servlet 容器一個特殊的URL)。

在這個例子中,執行的方法將會創建MessageStore實例,然后返回SUCCESS 這個常量字符串。

MessageStore實例的get/set 方法提供訪問類私有成員的途徑,所以我們可以知道在展示頁面(HelloWorld.jsp)對MessageStore實例是可見的,當然我們需要MessageStore符合 JavaBean-style 規范。

第三步:創建展示頁面 HelloWorld.jsp

我們需要一個頁面來展示model? MessageStore中存儲的信息。

HelloWorld.jsp 可以放在WebRootFile 文件下,源碼:

<%@ 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><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Hello World!</title></head><body><h2><s:property value="messageStore.message" /></h2></body> </html>

標簽指令告訴servlet容器,這個頁面使用Struct2 標簽庫,這些標簽會在前面放上一個s

<s:property>? 標簽展示的是:HelloWorldAction 的方法getMessageStore 返回的 MessageStore 實例,.maessge 的意思是告訴 Struct2框架調用MessageStore 的getMessage方法,這個方法返回一個String類型的歡迎數據,將會被展示。

第四步:在strcuts.xml 中創建Struct 的配置信息

我們需要有一個映射,把URL 和 HelloWorldAction,以及HelloWorld.jsp 關聯在一起。

struts.xml? 源碼:

<?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="basicstruts2" extends="struts-default"><action name="index"><result>/index.jsp</result></action><action name="hello" class="org.apache.struts.helloworld.action.HelloWorldAction" method="execute"><result name="success">/HelloWorld.jsp</result></action></package> </struts>

第五步:創建URL action

既是創建對應Action的URL,也就是創建用戶操作的入口。此例中我們使用我們原來的index.jsp,

在其中加入超鏈接。

index.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> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Basic Struts 2 Application - Welcome</title> </head> <body> <h1>Welcome To Struts 2!</h1> <p><a href="<s:url action='hello'/>">Hello World</a></p> </body> </html>

?

Struts url 標簽創建了一個Hello Action的URL 這個Action 會映射到 HelloWorldAction? 類上面以及他的執行方法。當用戶點擊這個URL的時候,Struct2的框架就會執行HelloWorldAction 的execute方法,得到相應的返回值,view頁面(HelloWorld.jsp)展示出來響應的信息。

第六步:測試(Build the WAR File and Run The Application)

我們使用的是Jetty 所以和使用Tomcat,以及mvn打包的不同,直接debug JettyStarter 啟動監聽127.0.0.1:12345,在瀏覽器中輸入:127.0.0.1:12345/struct2test/index.action

點擊 Hello World

代碼運行的過程:

1. 瀏覽器向服務器發送URL:http://127.0.0.1:12345/struct2test/hello.action

2. servlet 容器接受到hello.action的請求,根據web.xml的設置,容器會把這個請求交給

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

StructsPrepareAndExecuteFilter 是整個框架的入口。

3.框架會尋找一個與hello相對應的Action,這個在structs.xml中已有設置,這個Action對應的類也會找到:HelloWorldAction 然后會實例化HelloWorldAction,并調用它的execute方法。

4. excutor執行,創建MessageStore 實例,并且返回SUCCESS框架會檢查映射,看看SuCCESS會被返回到那個表現頁面,框架會告訴容器把信息作為返回的數據提供給HelloWorld.jsp.

5. HelloWorld.jsp展示的過程在前面已經說了,不再重復。

轉載于:https://www.cnblogs.com/zhailzh/p/3988190.html

總結

以上是生活随笔為你收集整理的struct2(二) struct2的hello world 程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。