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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Struts(七):action配置文件之通配符映射

發布時間:2025/4/16 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Struts(七):action配置文件之通配符映射 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 通配符映射:一個Web應用可能有成百上千個action聲明,可以使用struts提供的通配符映射機制把多個彼此相似的映射關系簡化為一個映射關系。
  • 通配符映射規則:
  • 若找到多個匹配,沒有通配符的那個將勝出;
  • 若指定的動作不存在,Struts將會嘗試把這URI與任何一個包含著通配符*的動作名進行匹配;
  • 被通配符匹配的URI字符串的字串可以通過{1}、{2}來引用。{1}匹配第一個子字符串,{2}匹配第二個字串。。。;
  • {0}匹配整個URI
  • 若Struts找到的帶有通配符的匹配不止一個,則按先后順序進行匹配;
  • *可以匹配零個或多個字符,但不包括/字符,如果想把/字符包括在內,需要使用**。如果需要對某個字符進行轉義,需要使用\。
  • 如果我們需要一個user的添加,修改,刪除,查詢操作的struts2的實現,一般情況下我們在struts.xml文件中,需要配置action的映射關系,最直接的配置關系是這樣子:

    ?

    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是一個導航頁面:

    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

    一切都是我們預期的結果。

    但是,我們學習了action配置通配符映射關系之后,發現上邊實際上就可以簡化很多。

    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同樣規則符合以上規則的頁面,但是需要跳轉到另外一個頁面\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

    測試結果:

    基于上邊的例子,我們是把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>

    ,測試的結果和上邊的結果是一樣的。

    ?

    轉載于:https://www.cnblogs.com/yy3b2007com/p/5605409.html

    總結

    以上是生活随笔為你收集整理的Struts(七):action配置文件之通配符映射的全部內容,希望文章能夠幫你解決所遇到的問題。

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