action 的四種struts 配置方法


配置Action的方法apache

如何解決action太多的問題??app

1.創建多個Action類jsp

  這個方法,Action類多,不簡潔,不推薦使用ide

  

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 
 3 <!DOCTYPE struts PUBLIC
 4         "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
 5         "http://struts.apache.org/dtds/struts-2.5.dtd">
 6 <struts>
 7     
 8     <package name="user" namespace="/" extends="struts-default">
 9         <action name="display" class="action.DisplayAction" method="execute">
10             <result name="success" type="dispatcher">/display.jsp</result>
11         </action>
12         <action name="login" class="action.LoginAction" method="execute">
13         </action>
14         <action name="inspectUserName" class="action.RegisterAction" method="execute">
15         </action>
16         <action name="clickRegister" class="action.ClickRegisterAction" method="execute">
17         </action>
18     </package>
19 </struts>
struts.xml

2.method方式:創建一個Action類,在類中編寫不一樣的方法,在不一樣的方法中處理不一樣的請求。
在struts.xml中配置method屬性,讓不一樣的action指向同一個Action類的不一樣方法。spa

 

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 
 3 <!DOCTYPE struts PUBLIC
 4         "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
 5         "http://struts.apache.org/dtds/struts-2.5.dtd">
 6 <struts>
 7     
 8     <package name="user" namespace="/" extends="struts-default">
 9         <action name="display" class="action.UserAction" method="display">
10             <result name="success" type="dispatcher">/display.jsp</result>
11         </action>
12         <action name="login" class="action.UserAction" method="login">
13         </action>
14         <action name="inspectUserName" class="action.UserAction" method="register">
15         </action>
16         <action name="clickRegister" class="action.UserAction" method="clickRegister">
17         </action>
18     </package>
19 </struts>
struts.xml

3.感嘆號方式:
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
不須要配置method,直接用!方法名的方式來調用。.net

DynamicMethodInvocation =動態方法調用code

這一種action與第二種同樣,不過配置文件中代碼卻少了不少不少xml

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 
 3 <!DOCTYPE struts PUBLIC
 4         "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
 5         "http://struts.apache.org/dtds/struts-2.5.dtd">
 6 <struts>
 7     <constant name="struts.enable.DynamicMethodInvocation" value="true" />
 8     
 9     <package name="user" namespace="/" extends="struts-default">
10         <action name="user" class="action.UserAction" method="display">
11             <result name="success" type="dispatcher">/display.jsp</result>
12         </action>
13         
14     </package>
15 </struts>
struts.xml

不過在jsp頁面寫上傳的方式要用  user!方法名blog

 

4.通配符方式(官網推薦) 「約定大於配置」

checkLogin
checkExists
add
delete
modify ci


<action name="*" class="myuser.UserAction" method={1}>

</action>

這一種官方推薦固然是最好用的

action同上不變,直接看struts2.xml

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 
 3 <!DOCTYPE struts PUBLIC
 4         "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
 5         "http://struts.apache.org/dtds/struts-2.5.dtd">
 6 <struts>
 7     <constant name="struts.action.extension" value="action,,"></constant>
 8     <constant name="struts.enable.DynamicMethodInvocation" value="true" />
 9     <package name="user" namespace="/" extends="struts-default">
10         <global-allowed-methods>login,display,clickRegister,inspectUserName</global-allowed-methods>
11         <action name="*" class="action.UserAction" method="{1}">
12             <result name="success" type="dispatcher">/display.jsp</result>
13         </action>
14     </package>
15 </struts>
struts.xml

其中這裏面在struts2.3以後須要加上

<global-allowed-methods>login,display,clickRegister,inspectUserName</global-allowed-methods>

若是不加這個是會報

Struts has detected an unhandled exception:

Message:There is no Action mapped for namespace [/] and action name [user_login] associated with context path [/shop].錯誤的。

詳情請看http://blog.csdn.net/gsycwh/article/details/52156642 做者的介紹。這個問題整了我1個多小時。

相關文章
相關標籤/搜索