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";
 }
    
}

2.2、struts2.xml

  • 精确匹配>通配符匹配
  • 通配符匹配,若多个可以匹配,按照先后顺序匹配。(在xml中的先后顺序)。
<struts2>
	<package name="随便起一个包名" extend="struts-defult" namespace="/"  >
       <!-- 普通版本 -->
        <!-- action的name就是jsp中要提交的action -->
        
		<action name="可以随便起,但要见名知意" class="路径.UserAction" method="要调用的action类里面的方法">
            <result name="Action类函数的返回值">要转发的地方
            </result>
        </action>
      
        
         <!-- 通配符版本 -->
		<action name="UserAction-*" class="路径.UserAction" method="{1}">
            <!-- {1} 是与第一个子串匹配,-->
            <result name="Action类函数的返回值">要转发的地方
            </result>
        </action>
        
	</package>
</struts2>

2.3、jsp中

<!-- 这里方便起见,采用超链接方式,平常使用表单方式-->
<a herf="UserAction-save">User-save</a>
<a herf="UserAction-update">User-update</a>
<a herf="UserAction-delete">User-delete</a>

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

1、概念:

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

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

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

2、实现

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

直接在网址中输入!方法

三、OGNL

1、前景导入

<!-- 有个类叫Product ${这里面都是这个类的数据成员}-->
ProductId: ${productId}
ProductName: ${productName}
ProductPrice: ${productPrice}

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

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

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

2.1、读取对象栈的属性

object.propertyName    <!-- 最常使用-->
object{'propertyName'}
object{"propertyName"}

<!--第2种方法-->
<!-- 从栈里面直接调用/检索

默认情况下Action对象会默认放到栈顶

-->
<s:property value="[0].propertyName"/>
==
<s:property value="propertyName"/>
<!--如果读取栈顶,下标可以省略不写-->

2.2、读取Map栈的属性

<!--
利用XxxAware接口实现
 那个Modol类继承XxxAware类

 模板
private Map<String,Object> name
-->



<!-- jsp页面-->
<s:property value="#session.product.propertyName"/>

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

<!--
静态方法和属性默认是不能调用的,需要手动打开
-->
<constant name="struts.ognl.allowStaticMethodAccess"
          value="true"></constant>
<!-- jsp页面-->

<s:property value="@类包名+类名+@方法名">
    <!--这样就直接在页面上显示-->

4、调用值栈里面的方法

<s:property value="modul类里面的set方法">

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

<%
 String [] names=new String[]{"aa","bb","cc"};
 request.setAttribute("name",names);
%>
length<s:property value="#modul类里面request的name.names.length"/>

四、声明式异常处理

1、struts.xml

<action name="" class="" method="">
<exception-mapping result="input" exception="报错对应的类名"></exception-mapping>
    <result name="input"></result>
    <!--若在类方法中出现异常,这个异常映射就会接收到,然后转发到对应的result里面,再由result转发-->
</action>

2、jsp

<!--想查看异常信息-->
${exception}
${exception.message}

五、标签

1、property标签

用来输出值栈属性的值

需要导入标签

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

语法:

<s:property value="属性名"/>
<!-- 直接返回一个值-->

2、url标签

1、概念:

创建一个URL字符串

<s:url value="/address" var="url">
    <s:param name="id" value="000"></s:param>
</s:url>

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值