struts2的配置文件是 struts.xml.. 在这个配置文件里面可以使用通配符..其中的好处就是,大大减少了配置文件的内容..当然,相应付出的代价是可读性..

使用通配符的原则是 约定高于配置.

在项目中,我们有很多的命名规则是约定的...我们使用通配符那就必须有一个统一的约定.否则通配符将无法成立

看下面的例子.

(1)先看我们的action配置

1 <package name="user" extends="struts-default" namespace="/">
2   <action name="user_*" class="com.test.action.UserAction" method="{1}">
3    <result>/user_{1}.jsp</result>
4   </action>
5  </package>

第一个带"*" 表示的是 后面匹配任意字符...这个很容易理解

{1}表示的是第一个"*"的内容...注意,这里的大括号,比如,如果是user_add .那么{1}就是表示 add ..

当然,这里只有一个"*".你可以有两个,甚至三个四个..比如这样写 *_* 这样就是两个"*" .那么我们也可以用{1},{2}来分别的表示他们.

(2) 对应的action 内容

 1 package com.test.action;
 2 import com.opensymphony.xwork2.ActionSupport;
 3 @SuppressWarnings("serial")
 4 public class UserAction extends ActionSupport
 5 {
 6  public String add()
 7  {
 8   return SUCCESS;
 9  }
10  public String delete()
11  {
12   return SUCCESS;
13  }
14  public String update()
15  {
16   return SUCCESS;
17  }
18  public String select()
19  {
20   return SUCCESS;
21  }
22 }

因为是举例子,所以每个方法里面都没实现内容.

(3) 其他就是几个jsp页面.

其中 user_*.jsp页面没什么好说的,就是显示一句话.比如user_add.jsp就是显示 "这是添加页面" 其他的类似.就是为了让我们看到已经跳转到对应的页面.

index.jsp写一下

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><a href="user_add.action">添加页面</a><br><a href="user_delete.action">删除页面</a><br><a href="user_update.action">修改页面</a><br><a href="user_select.action">查找页面</a><br>
</body>
</html>

总结一下,

大家可以看到,配置文件里面,只有三句话就将增删改查四个操作全部配置好了....这就是通配符的作用.但是,我们也可以看到,对应的命名规则的约定也非常的苛刻...

最后需要注意的一点是匹配的优先权

(1)如果struts.xml里面有对应的action name .就算它有其他通配符匹配的,都优先对应完全相同的.

比如 有一个 action name 是 "user_add"  还有一个是 "user_*" .现在,来一个请求是 "user_add.action " .那么,它会优先匹配"user_add " ..其实,这个很好理解..

(2)如果一个action name对应于两个带通配符的action name 那么,需要看这个配置谁在前面.它匹配写在前面的

比如 有一个 action name 是 "*_*"  还有一个是 "user_*" .现在,来一个请求是 "user_add.action " .那么,它会优先匹配写在前面的...

任何带"*"的action name 优先权都是一样的...不是说带一个"*"的优先权就比带两个"*" 的高.

引自:http://jingbo2759.blog.163.com/blog/static/9837531520099109488860/

转载于:https://www.cnblogs.com/20gg-com/p/6076874.html

struts2——通配符相关推荐

  1. struts2通配符_基于Struts2框架的名片管理系统

    本篇博文将分享一款基于Struts2框架的名片管理系统,JSP引擎为Tomcat9.0,数据库采用的是MySQL5.5,集成开发环境为Eclipse IDE for Java EE Developer ...

  2. Struts2通配符映射/Struts action name=/*/* method={2} class=com.jxc.action.{1}Action result

    struts2的关于method="{1}"意思详解 <action   name= "Login_* "   method= "{1} &qu ...

  3. struts2 通配符简化配置

    在struts映射中反复出现的模式 动作方法 描写叙述 下一个动作方法 add 为save准备网页 save save 提交INSERT list edit 为update准备网页 update up ...

  4. android基础的博客,【复习】Android基础

    网络互通1.同网段互通-交换     终端     网络        交换机       多层交换机         原理  &nbsp... temp1 = 1.5 print " ...

  5. java 运行窗口_eclipse java 底部的那个显示运行结果的框被我一不小心关掉了,如何打开...

    展开全部 打开方法:点击工具栏上的window输入reset perspective即可或者点击windows->show view->console 初学者可62616964757a68 ...

  6. [JavaWeb基础] 018.Struts2 Action通配符使用

    Struts2中有一个很牛逼的action通配符,可以用来简化action配置,以我们将要讲解的案例来说,如果我们要对一个学生信息进行增加,删除,修改,那么按照原来的做法,我们需要写3个Action来 ...

  7. 【struts2】action中使用通配符

    在以前的学习中,<action>元素的配置,都是用明确的配置,其name.class等属性都是一个明确的值.其实Struts2还支持class属性和method属性使用来自name属性的通 ...

  8. Struts2的2.5.10版本找不到StrutsPrepareAndExecuteFilter过滤器 与 struts.xml文件通配符异常问题

    一.异常描述: 今天在整合ssh的时候,在配置Struts2框架之后,启动之后,项目报错抛异常:主要异常信息如下: java.lang.ClassNotFoundException: org.apac ...

  9. Struts2的通配符配置方式

    Struts2的Action类很有意思,你可以使用3种方式来实现具体的Action类: 让你的Action类继承自ActionSupport类(项目中最常用这种方式,因为ActionSupport类中 ...

最新文章

  1. R语言与数据分析(9)R与Excel
  2. C# 类、对象、方法和属性详解(重新排版,页面整洁)
  3. [转]svn常用命令
  4. mysql 一对多 join_Mysql中FIND_IN_SET与JOIN在一对多关系查询时的优劣
  5. 修改Typora的快捷键【markdown软件】
  6. [2020 年百度之星·程序设计大赛 - 复赛] Battle for Wosneth
  7. 云计算平台构建与实验设计
  8. 软件单元测试方法,单元测试的基本测试方法
  9. 如何将F4V格式的视频转换成MP4格式
  10. 购物车一个Adaper,可以删除,全选反选,数量加减
  11. 缓存行填充与@sun.misc.Contended注解
  12. katacontainers v2编译
  13. android 换肤(1)——插件式无缝换肤(解析鸿洋大神的换肤流程)
  14. 神经网络冻结层,固定参数
  15. 阅文集团的盛世危机才刚刚开始
  16. 懂得选择,学会放弃..
  17. 13岁男孩偷开公交车 连撞12车撞断电线杆
  18. SWPU Python123作业题汇总(持续更新)
  19. 讯飞云论坛的网页设计demo
  20. 流量监控服务器应该位置在哪里,在服务器查看流量监控

热门文章

  1. 奇特的“对自杀说不”许可证
  2. java 集成小米,华为推送
  3. 《卓有成效的管理者》导读
  4. 【AI绘画】个人电脑部署免费AI绘画软件——Stable Diffusion webui启动器
  5. 【PaddleSpeech-学习笔记】第二章:声音分类
  6. RTMP规范(重新整理版)
  7. 看天气WeatherCan V1.0 ---气象数据分析系统web版
  8. Spring注入bean的常用的六种方式
  9. python excel实操之表格转置
  10. TI Sitara系列AM64x开发板(双核ARM Cortex-A53)软硬件规格书