• Struts2知识总结


    一、通配符映射

    1、概念; 有很多相似的result匹配,一个一个的写,比较浪费时间,就产生了通配符映射。

    2、实现

    ​ 2.1、Action类

    public Class UserAction{
     public String UserAction-save(){
     		System.out.println("save")return "success";
     }
     public String UserAction-update(){
     	System.out.println("update")return "success";
     }
     public String UserAction-delete(){
     	System.out.println("delete")return "success";
     }
        
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2.2、struts2.xml

    • 精确匹配>通配符匹配
    • 通配符匹配,若多个可以匹配,按照先后顺序匹配。(在xml中的先后顺序)。
    <struts2>
    	<package name="随便起一个包名" extend="struts-defult" namespace="/"  >
           
            
            
    		<action name="可以随便起,但要见名知意" class="路径.UserAction" method="要调用的action类里面的方法">
                <result name="Action类函数的返回值">要转发的地方
                result>
            action>
          
            
             
    		<action name="UserAction-*" class="路径.UserAction" method="{1}">
                
                <result name="Action类函数的返回值">要转发的地方
                result>
            action>
            
    	package>
    struts2>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    2.3、jsp中

    
    User-save
    User-update
    User-delete
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    二、动态方法调用(了解即可)

    1、概念:

    通过url动态调用Action中的方法

    默认情况下是禁用的,需要手动打开

    <constant name="struts.enable.DynamicMethodInvocation" value="true">constant>
    
    • 1

    2、实现

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AqoFH0di-1668229982274)(D:\Photo\typora-user-images\image-20221112091852888.png)]

    直接在网址中输入!方法

    三、OGNL

    1、前景导入

    
    ProductId: ${productId}
    ProductName: ${productName}
    ProductPrice: ${productPrice}
    
    • 1
    • 2
    • 3
    • 4

    以上代码看起来就像没有对象,就能调用对象的数据成员,这其实是struts2已经对获取属性进行了封装。从栈里面查找这些属性值。

    2、利用OGNL读取栈中的属性值

    • 对于对象栈:读取栈中某一个对象的属性值
    • Map栈: request,session, application中的一个属性值或者一个请求参数值

    2.1、读取对象栈的属性

    object.propertyName    
    object{'propertyName'}
    object{"propertyName"}
    
    
    
    
    ==
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2.2、读取Map栈的属性

    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    
    
    
    • 1
    • 2

    3、读取任何一个Java类的静态字段和静态方法

    
    <constant name="struts.ognl.allowStaticMethodAccess"
              value="true">constant>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    
    
    
        
    
    • 1
    • 2
    • 3
    • 4

    4、调用值栈里面的方法

    
    
    • 1

    5、访问数组/list类型的属性

    <%
     String [] names=new String[]{"aa","bb","cc"};
     request.setAttribute("name",names);
    %>
    length
    
    • 1
    • 2
    • 3
    • 4
    • 5

    四、声明式异常处理

    1、struts.xml

    <action name="" class="" method="">
    <exception-mapping result="input" exception="报错对应的类名">exception-mapping>
        <result name="input">result>
        
    action>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2、jsp

    
    ${exception}
    ${exception.message}
    
    • 1
    • 2
    • 3

    五、标签

    1、property标签

    用来输出值栈属性的值

    需要导入标签

    <%@ taglib prefix="s" url="/struts-tags"%>
    
    • 1

    语法:

    
    
    
    • 1
    • 2

    2、url标签

    1、概念:

    创建一个URL字符串

    
        
    
    
    • 1
    • 2
    • 3

    输出结果 /web/address?id=000

    参考文献
    B站尚硅谷Struts2视频

  • 相关阅读:
    String的增删查【C++】
    实战 | 记一次曲折的钓鱼溯源反制
    数据仓库技术及应用(Hive索引)
    算法 - 检查是否存在满足条件的数字组合
    电阻电路的等效变化(Ⅱ)
    Python和Jupyter简介
    JAVA Swing + Jdbc 实现宿舍管理系统
    玩一玩MySQL8.0.35
    域渗透 | kerberos认证及过程中产生的攻击
    pta-sql补题(2)
  • 原文地址:https://blog.csdn.net/ccb1372098/article/details/127819131