Struts(七):action配置文件之通配符映射
- 通配符映射:一個Web應(yīng)用可能有成百上千個action聲明,可以使用struts提供的通配符映射機制把多個彼此相似的映射關(guān)系簡化為一個映射關(guān)系。
- 通配符映射規(guī)則:
如果我們需要一個user的添加,修改,刪除,查詢操作的struts2的實現(xiàn),一般情況下我們在struts.xml文件中,需要配置action的映射關(guān)系,最直接的配置關(guān)系是這樣子:
?
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 4 "http://struts.apache.org/dtds/struts-2.3.dtd"> 5 6 <struts> 7 <!-- action路徑的擴展名:*.action,*.do,無擴展名 --> 8 <constant name="struts.action.extension" value="action,do," /> 9 <constant name="struts.enable.DynamicMethodInvocation" value="false" /> 10 <constant name="struts.devMode" value="false" /> 11 12 <package name="default" namespace="/" extends="struts-default"> 13 <action name="user-create" class="com.dx.actions.TestAction" method="create"> 14 <result name="create-success">/WEB-INF/testResult.jsp</result> 15 </action> 16 <action name="user-update" class="com.dx.actions.TestAction" method="update"> 17 <result name="update-success">/WEB-INF/testResult.jsp</result> 18 </action> 19 <action name="user-delete" class="com.dx.actions.TestAction" method="delete"> 20 <result name="delete-success">/WEB-INF/testResult.jsp</result> 21 </action> 22 <action name="user-search" class="com.dx.actions.TestAction" method="search"> 23 <result name="search-success">/WEB-INF/testResult.jsp</result> 24 </action> 25 </package> 26 27 </struts>?
我們的index.jsp是一個導(dǎo)航頁面:
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 <body> 10 <a href="user-create">user-create</a><br/> 11 <a href="user-update">user-update</a><br/> 12 <a href="user-delete">user-delete</a><br/> 13 <a href="user-search">user-search</a><br/> 14 </body> 15 </html>testResult.jsp是一個測試顯示通用頁面:
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 <body> 10 ${requestScope.actionName} 11 </body> 12 </html>我們的com.dx.actions.TestAction是這樣來寫:
1 package com.dx.actions; 2 3 import org.apache.struts2.ServletActionContext; 4 5 public class TestAction { 6 public String create(){ 7 ServletActionContext.getRequest().setAttribute("actionName", "create-success"); 8 return "create-success"; 9 } 10 11 public String update(){ 12 ServletActionContext.getRequest().setAttribute("actionName", "update-success"); 13 return "update-success"; 14 } 15 16 public String delete(){ 17 ServletActionContext.getRequest().setAttribute("actionName", "delete-success"); 18 return "delete-success"; 19 } 20 21 public String search(){ 22 ServletActionContext.getRequest().setAttribute("actionName", "search-success"); 23 return "search-success"; 24 } 25 }測試:
訪問:http://localhost:8080/MyStruts003/user-create,頁面顯示:user-create
訪問:http://localhost:8080/MyStruts003/user-update,頁面顯示:user-update
訪問:http://localhost:8080/MyStruts003/user-delete,頁面顯示:user-delete
訪問:http://localhost:8080/MyStruts003/user-search,頁面顯示:user-search
一切都是我們預(yù)期的結(jié)果。
但是,我們學(xué)習(xí)了action配置通配符映射關(guān)系之后,發(fā)現(xiàn)上邊實際上就可以簡化很多。
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 4 "http://struts.apache.org/dtds/struts-2.3.dtd"> 5 6 <struts> 7 <!-- action路徑的擴展名:*.action,*.do,無擴展名 --> 8 <constant name="struts.action.extension" value="action,do," /> 9 <constant name="struts.enable.DynamicMethodInvocation" value="false" /> 10 <constant name="struts.devMode" value="false" /> 11 12 <package name="default" namespace="/" extends="struts-default"> 13 <!-- 14 <action name="user-create" class="com.dx.actions.TestAction" method="create"> 15 <result name="create-success">/WEB-INF/testResult.jsp</result> 16 </action> 17 <action name="user-update" class="com.dx.actions.TestAction" method="update"> 18 <result name="update-success">/WEB-INF/testResult.jsp</result> 19 </action> 20 <action name="user-delete" class="com.dx.actions.TestAction" method="delete"> 21 <result name="delete-success">/WEB-INF/testResult.jsp</result> 22 </action> 23 <action name="user-search" class="com.dx.actions.TestAction" method="search"> 24 <result name="search-success">/WEB-INF/testResult.jsp</result> 25 </action> 26 --> 27 <action name="user-*" class="com.dx.actions.TestAction" method="{1}"> 28 <result name="{1}-success">/WEB-INF/testResult.jsp</result> 29 </action> 30 </package> 31 32 </struts>那如果我們就是要對user-list同樣規(guī)則符合以上規(guī)則的頁面,但是需要跳轉(zhuǎn)到另外一個頁面\WEB-INF\testListResult.jsp進行配置,該怎么配置呢?
index.jsp中添加一行鏈接html:
1 <a href="user-list">user-search</a><br/>在\WEB-INF下添加頁面:testListResult.jsp
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 <body> 10 <h4>This is testListResult.jsp page</h4> 11 ${requestScope.actionName} 12 </body> 13 </html>修改com.dx.actions.TestAction類,添加list方法:
1 public String list(){ 2 ServletActionContext.getRequest().setAttribute("actionName", "list-success"); 3 4 return "list-success"; 5 }修改struts.xml配置文件:
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 4 "http://struts.apache.org/dtds/struts-2.3.dtd"> 5 6 <struts> 7 <!-- action路徑的擴展名:*.action,*.do,無擴展名 --> 8 <constant name="struts.action.extension" value="action,do," /> 9 <constant name="struts.enable.DynamicMethodInvocation" value="false" /> 10 <constant name="struts.devMode" value="false" /> 11 12 <package name="default" namespace="/" extends="struts-default"> 13 <!-- 14 <action name="user-create" class="com.dx.actions.TestAction" method="create"> 15 <result name="create-success">/WEB-INF/testResult.jsp</result> 16 </action> 17 <action name="user-update" class="com.dx.actions.TestAction" method="update"> 18 <result name="update-success">/WEB-INF/testResult.jsp</result> 19 </action> 20 <action name="user-delete" class="com.dx.actions.TestAction" method="delete"> 21 <result name="delete-success">/WEB-INF/testResult.jsp</result> 22 </action> 23 <action name="user-search" class="com.dx.actions.TestAction" method="search"> 24 <result name="search-success">/WEB-INF/testResult.jsp</result> 25 </action> 26 --> 27 <action name="user-*" class="com.dx.actions.TestAction" method="{1}"> 28 <result name="{1}-success">/WEB-INF/testResult.jsp</result> 29 </action> 30 <action name="user-list" class="com.dx.actions.TestAction" method="list"> 31 <result name="list-success">/WEB-INF/testListResult.jsp</result> 32 </action> 33 </package> 34 35 </struts>訪問頁面:http://localhost:8080/MyStruts003/user-list
測試結(jié)果:
基于上邊的例子,我們是把user-list同user-*位置互換
1 <action name="user-list" class="com.dx.actions.TestAction" method="list"> 2 <result name="list-success">/WEB-INF/testListResult.jsp</result> 3 </action> 4 <action name="user-*" class="com.dx.actions.TestAction" method="{1}"> 5 <result name="{1}-success">/WEB-INF/testResult.jsp</result> 6 </action>,測試的結(jié)果和上邊的結(jié)果是一樣的。
?
轉(zhuǎn)載于:https://www.cnblogs.com/yy3b2007com/p/5605409.html
總結(jié)
以上是生活随笔為你收集整理的Struts(七):action配置文件之通配符映射的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 令人疑惑的问题
- 下一篇: XSLT 与 Java集成常见技术关键点