1. 程式人生 > >struts2萬用字元及Action開發的三種方式

struts2萬用字元及Action開發的三種方式

一,萬用字元與動態方法呼叫

1)準備一個UserAction.java,這個Action中有兩個方法login()和register()

package com.bighuan.a_config;

import com.opensymphony.xwork2.ActionSupport;
/**
 * @author bighuan
 */
public class UserAction extends ActionSupport {

	public String login(){
		System.out.println("UserAction.login()");
		return "login";
	}
	
	public String register(){
		System.out.println("UserAction.register()");
		return "register";
	}
}
2)在struts.xml中進行配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

	<constant name="struts.enable.DynamicMethodInvocation" value="false" />
	<constant name="struts.devMode" value="true" />
	<package name="config" namespace="/user" extends="struts-default"
		abstract="false">


		<action name="login" class="com.bighuan.a_config.UserAction"
			method="login">
			<result name="success">/login.jsp</result>
		</action>
		<action name="register" class="com.bighuan.a_config.UserAction"
			method="register">
			<result name="success">/register.jsp</result>
		</action>

	</package>

	<!-- Add packages here -->

</struts>
3)問題:訪問UserAction.java中的login或者register,訪問成功分別跳轉到login.jsp、register.jsp.但是,如果UserAction.java中有很多個業務方法,照這樣下去,豈不是要配置很多個action?答案顯然不是.可以通過萬用字元來解決這種問題.
<!-- 使用萬用字元優化上面的步驟 -->
		<action name="user_*" class="com.bighuan.a_config.UserAction"
			method="{1}">
			<result name="{1}">/{1}.jsp</result>
		</action>

使用萬用字元訪問的方式為:http://localhost:8080/struts2/user_login(struts2是web專案名,user_login表示訪問UserAction中的login方法).總之就是注意方法、返回值、jsp月面命名即可,然後通過萬用字元匹配即可。

二,Action開發的三種方式

方式一:繼承ActionSupport類,如果使用了資料校驗功能,則必須繼承ActionSupport。上面那個Action類就是繼承了ActionSupport類。

方式二:實現Action介面,實現execute()方法/

package com.bighuan.a_config;

import com.opensymphony.xwork2.Action;
/**
 * Action開發方式2:實現Action介面
 * @author bighuan
 *
 */
public class UserAction2 implements Action {

	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		return null;
	}

}
方式三:既不繼承ActionSupport也不實現Action介面.(ActionSupport實現了Action介面)
package com.bighuan.a_config;
/**
 * Action開發方式3:既不繼承ActionSupport也不實現Action介面
 * @author bighuan
 *
 */
public class UserAction3 {

	private String userName;

	public void setUserName(String userName) {
		this.userName = userName;
	}
	
	public String login(){
		System.out.println("UserAction3.login()"+":"+userName);
		return "success";
	}
}

不管是哪種方式,都能夠進行資料的自動封裝.使用者訪問Action,建立Action物件;建立Action物件後並不會馬上執行action的業務處理方法,而是執行預設的18個攔截器(如果自己沒修改的話),而預設的攔截器中就有一個引數攔截器,它會進行資料的自動封裝,然後再執行業務邏輯方法.

相關推薦

struts2字元Action開發方式

一,萬用字元與動態方法呼叫 1)準備一個UserAction.java,這個Action中有兩個方法login()和register() package com.bighuan.a_config; import com.opensymphony.xwork2.Action

Struts2學習筆記】struts2.5使用字元配置action跳轉

寫在前面:其實在一年前,還沒有開始寫部落格的時候就已經學過struts2了,只是當時太蠢,無法理解MVC以及struts2的一些“人性化”的設定,過了一年再反過來看struts2就很明白了。只是在struts2.5裡面多了一個機制導致無法像以往一樣簡單的使

struts2動態方法呼叫和使用字元定義action

struts.xml: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Con

Elasticsearch中的字元正則表示式查詢

想要在ES中使用*或者?作為萬用字元進行模糊匹配? 看這篇就對了~ 本文為轉發!!! 轉自:https://blog.csdn.net/dm_vincent/article/details/42024799 wildcard查詢和prefix查詢類似,也是一個基於詞

Linux 命令列字元轉義符的實現

我們想對一類檔案批量操作,例如批量檢視硬碟檔案屬性,那麼正常命令會是: [[email protected] ~]# ls /dev/sda [[email protected] ~]# ls /dev/sda1 [[email protected] ~]# l

學員優秀博文賞析:泛型字元約束

       最課程師徒班的同學正在紅紅火火的學習中。彷彿、應該、必須,到了跟大家階段性彙報成果的時候了。為什麼,因為畢竟當時把師徒班說的那麼好,就業班的同學該要鬧革命了。        師徒班相較於就業班,雖然課程內容和總量完全一樣,但學員的學習過程掌握了更多的主動性。而檢驗主動性一個重要的標準,除了

正則表示式字元vim

#####萬用字元 正則表示式 vim 使用 1.萬用字元:多對與檔名上操作 比如查詢find,ls,cp [abc] #有a或者有b或者有c [!abc] #除了含有a或者b或者c [^abc] #除了含有a或者b或者c [[:alpha

Struts2字元和它的各種坑

Struts2和Servlet相比有幾個牛逼的地方。對OGNL表示式的整合以及萬用字元的運用就是其中兩個。 而J2EE標準中,與這兩個對應的分別是JSP中EL表示式的運用,以及urlPattern中的萬用字元。 前面的一篇文章中,講述了OGNL的使用(OGN

使用字元定義Action

package zjh.struts2.lx; import com.opensymphony.xwork2.ActionSupport; public class HelloWorld extends ActionSupport { private String message; public Strin

Struts2學習筆記(五):struts2字元用法示例

本文主要介紹struts2配置檔案中萬用字元的用法。 先來看一個簡單的需求,index.jsp中有四個連結。 <a href="Action1_add">add1</a> <br/><br/> <a href="Acti

Linux 字元 特殊字元 $、\、`、

· 採取一定的規則進行選定。 問號“?”匹配任意一個字元 只能任意匹配一個字元。 星號“*” 匹配任意字串 可以匹配任何字串。 中括號“[]” 範圍內的一個字元 可以匹

Search Everything 利用操作符、字元正則表示式搜尋

Everything是一款穩定的檔案搜尋軟體,很少更新,我已經使用很多年了。 下面介紹一下如何使用操作符、萬用字元及正則表示式來搜尋以提高查詢效率。 1.如何使用布林操作符(and /or /not)

【SSH快速進階】——struts2呼叫action方式

經過前段時間對struts2的學習與實踐,總結了一下在struts2中呼叫action的三種方式。 1、直接呼叫 我前面的部落格【SSH快速進階】系列第一篇《【SSH快速進階】——strut

【SSH三大框架】Struts2基礎第篇:配置Action以及呼叫Action方式

一、struts.xml中的包和名稱空間 1、Struts2不支援為單獨的Action設定名稱空間,而是通過為包指定namespace屬性來為包下面的所有Action指定共同的名稱空間。 如果在配置<package>的時候沒有指定namespace屬性,則該包下

struts2中從頁面取值的方式

在中我們建立了第一個struts程式,那麼如何把登陸頁面中的使用者名稱傳遞到登入成功的頁面中呢?有三種方式,1,使用預設的action的傳遞方式。2,自定義一個vo,在action中使用這個vo3,使用ModelDriven的方式。下面分別敘述。1,使用預設的action的

python操作瀏覽器的方式

第一種:selenium匯入瀏覽器驅動,用get方法開啟瀏覽器,例如: import time from selenium import webdriver def mac():     driver = webdriver.Firefox()    

分享知識-快樂自己:Struts2(動態方法、動態結果、字元、方法內部跳轉、action跳轉、OGNL 的使用注意事項)

這裡主要以案例演示:涵蓋以下知識點 1、動態方法呼叫:使用關鍵 符號 ! 進行操作   例如:/名稱空間 ! 方法名 2、動態結果集:就是說,通過後臺返回的結果 ${} 獲取,重定向到符合預期的頁面。 3、萬能萬用字元:*_*  :第一個 * 為 類名、第二個 * 為方

Struts2-Action接受引數方式、method屬性使用字元的配置

一、Action接受引數的方式 1、屬性方式接收 首先編寫一個用於上傳引數的頁面 action配置 成功跳轉的頁面 action類程式碼 public cla

struts2 <action>無法使用字元解決辦法

在我們使用struts2的時候,肯定不想每一個方法就寫一<action>,所以通常我們會使用萬用字元,簡化我們的程式碼。  <action name="userAction_*" class="userAction" method="{1}" >  

struts2.5.12版本使用action字元提示找不到action的問題

我配置了一個PageAction <action name="*" method="{1}" class="com.cheng.web.action.PageAction"> <result name="success">/p