zoukankan      html  css  js  c++  java
  • 通配符(WildCard)的使用

    一、关于WildCard:一个web应用,有成千上万个action声明,可以利用struts2提供的映射机制把多个彼此相似的映射关系简化成一个映射关系,即通配符。

    1.新建类 ActionWildCard,验证通配符的方法

    2.1添加Student需要实践的两个方法 add,deete

    package cn.cqvie.wildcard;

    import com.opensymphony.xwork2.ActionSupport;

    public class StudentAction extends ActionSupport {
    public String add() {
    return SUCCESS;
    }

    public String delete() {
    return SUCCESS;
    }

    }

    2.2添加Teacher需要实践的两个方法 add,deete

    package cn.cqvie.wildcard;

    import com.opensymphony.xwork2.ActionSupport;

    public class TeacherAction extends ActionSupport {
    public String add(){
    return SUCCESS;
    }
    public String delete(){
    return SUCCESS;
    }
    }

    3.由方法可知,需要新建两个jsp页面用于显示运行结果

    3.1 Studentadd_success.jsp:注意此处的Student必须要大写

    里面只需输出一句话:

    <body>
    Student Add Success! <br>
    </body>

    3.2 Studentdelete_success.jsp:方法同上

    同样只需要输出一句话即可

    <body>
    Student Delete Success!<br>
    </body>

    3.3 Teacher_add_success.jsp:注意此处的T必须要大写

     

    只需输出一句话即可。

    <body>
    Teacher Add SUCCESS!<br>
    </body>

    3.4 Teacher_delete_success.jsp:注意此处的T必须要大写

    输出一句话提示语:

    <body>
    Teacher Delete Success! <br>
    </body>

    4.配置 struts.xml文件的内容: ***

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
    <struts>
    <constant name="struts.devMode" value="true" />
    <package name="actions" extends="struts-default" namespace="/actions">
    <action name="Student*" class="cn.cqvie.wildcard.StudentAction" method="{1}" >
    <result>/Student{1}_success.jsp</result>
    </action>
    <action name="*_*" class="cn.cqvie.wildcard.{1}Action" method="{2}" >
    <result >/{1}_{2}_success.jsp</result>
    </action>
    </package>
    </struts>

    注:此处的“*”代表所有,即Student具有的所有方法,{1}=“*”,即当“*”代表“add”时,“{1}”也就代表“add”。也就是说“*”与“{}”内容一致。

          “*_*”代表的是:第一个“*”代表“Teacher”;第二个“*”代表“add”方法或者“delete”方法。

    5.修改web.xml中的mapping:需要将url-pattern原来的“*.action”改为“/*”,否则就无法找到actions对应的方法。

    <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping></web-app>

    6. 运行/调试

    将该项目部署在tomcat上——>打开浏览器——>在地址栏输入该项目的名称——>回车

    6.1 点击“添加学生”可以发现地址栏变化:action可以成功找到Student的“add”方法

    6.2 点击“删除学生”可以发现地址栏变化:action可以成功找到Student的“delete”方法

    6.3 点击“添加老师”可以发现地址栏变化:action可以成功找到Teacher的“add”方法

    6.4 点击“删除老师”可以发现地址栏变化:action可以成功找到Teacher的“delete”方法

    7.总结、教训

    1)当找到多个匹配,则没有通配符的那个胜出;

    2)若指定的动作不存在,struts将会把这个URI与任何一个通配符包含“*”的动作名进行匹配;

    3)需要注意的是,配置“struts.xml”文件时,相对应的“action”动作要与之一致,否则将找不到访问对象,报404错误。

    4)遵循“约定优于配置”原则,可以使自己在配置时省事。比如类的首字母需要大写,而方法名需要小写。

    没有人能一路单纯到底,但是要记住,别忘了最初的自己!
  • 相关阅读:
    堆排序
    append、appendTo、prepend、prependTo、before、insertBefore、after、insertAfter、replaceAll方法被调用后,原本在页面上显示的元素会消失
    jQuery中的 $.ajax的一些方法
    attr VS prop 区别
    Canvas---clearRect()清除圆形区域
    HTML5 FormData方法介绍
    MongoDB学习笔记——数据库的创建与初始
    es6学习---.babelrc文件
    【转载】基于webpack构建react项目
    node常用模块---path
  • 原文地址:https://www.cnblogs.com/LindaBlog/p/5354460.html
Copyright © 2011-2022 走看看