Struts2

一、XML配置文件的主要元素

1、package元素
1.1、 作用:
用来管理action:使用了面向对象的思想
name:用来定义包名,注意:同一个配置文件中包名是唯一的
extends:指定所继承的包
abstract:指定包是抽象的,只能被继承,含有action的包不能是抽象的,默认值是false
namespace:命名空间,访问动作的路径,默认值是" "
              使用了命名空间:访问动作的路径就是 命名空间+动作名称
struts2查找动作的方法:

1:先按照用户输入的路径朝找路径:/a/b/c/d/action1.action
如果没有找到再向上一层路径找:/a/b/c
再向上一层路径找:/a/b  找到了该路径则执行第二步,找不到继续向上一级找
再向上一级路径找:/a  没找到
都没找到直接报错
2:找action:先在当前的命名空间下找,如果没有找到则去默认的(没有写namespace属性的)命名空间下找,如果还没找到就报错!

<struts>
    <constant name ="struts.devMode" value="true"></constant>
<package name="p1" extends="struts-default">
    <action name="action1" class="com.lzh.web.action.Test1Action" method="test1">
    <result name="success">/success.jsp</result>
     </action>
</struts>


1.2、action :用来定义动作

name:动作的名称,用户访问的动作的名称

class:动作方法所属的包和类

method:动作方法
<struts>
    <constant name ="struts.devMode" value="true"></constant>
	
<package name="p1" extends="struts-default">
    <action name="action1" class="com.lzh.web.action.TestAction1" method="test1">
    <result name="success">/success.jsp</result>
     </action>
</struts>

2、POJO:Plain Old Java Object 原始的老的java对象:无侵入式




3、第二种创建动作类的配置


<struts>	
<package name="p1" extends="struts-default">
    <action name="action2" class="com.lzh.web.action.TestAction2"><!--因为默认执行execute()方法所以<pre name="code" class="html">省略method-->
<result name="success">/success.jsp</result> </action></struts>
 
 
4、默认执行的

SUCCESS = "success"   当执行动作方法成功时所前往的页面

ERROR  =  "error"            当方法出现异常时所前往的页面

INPUT  =  ”input“      数据回显

NONE  =  ”none“      什么都不反回,相当于return  null

LOGIN = " login"     回到登陆页面

二、创建动作类的第三种方式


继承Action接口的子类ActionSupport

1、第三种创建动作类的配置
  <action name="action3" class="com.lzh.web.action.TestAction3"><!--因为默认执行execute()方法所以<pre name="code" class="html">省略method-- 相比于第二种不用手动重写execute方法>
<result name="success">/success.jsp</result>
 
 
2、省略class  和method,执行了默认的class:ActionSupport和方法    //<default-class-ref class="com.opensymphony.xwork2.ActionSupport" />
改变默认执行的class,不建议修改
<default-class-ref class=" ">
<action name ="defaultAction">
<result    name = "success">/success.jsp</result>
</action>
3、UserAction中方法的配置

		<action name = "addUser" class= " com.lzh.web.action.UserAction method ="addUser"">

		<result name ="success" >/addUser.jsp</result>

		<action name = "delUser" class= " com.lzh.web.action.UserAction <span style="font-family: Arial, Helvetica, sans-serif;">method ="delUser”</span>>

		<result name ="success" >/delUser.jsp</result>

4、使用通配符来配置action{1}:表示取第一个*号的值
		<action name = "*" class= " com.lzh.web.action.UserAction method ="{1}">

		<result name ="success" >/{1}.jsp</result>
<span style="white-space:pre">		</span></action>
<a href ="${pageContext.request.contextPath}/add_User.action"> 时
		<action name = "*_*" class= " com.lzh.web.action.{2}Action method ="{1}{2}">

		<result name ="success" >/{1}{2}.jsp</result>
<span>		</span></action>

开启动态执行动作方法(存在安全问题)

<a href ="${pageContext.request.contextPath}/user!add_User.action"> 时
	<action name = "user" class= " com.lzh.web.action.UserAction >

		<result name ="success" >/success.jsp</result>



三、result结果视图

<struts>
    <constant name ="struts.devMode" value="true"></constant>
	
<package name="p1" extends="struts-default">
    <action name="action1" class="com.lzh.web.action.TestAction1">
<!-- <div>1、result  结果视图:</div><div>
</div><div><span style="white-space: pre;">		</span>name:结果视图名称,和动作方法的返回值一致,什么结果</div><div><span style="white-space:pre">		</span>type:以什么方式转到页面?默认值是dispatcher,转发</div><div><span style="white-space:pre">			</span>dispatcher:转发</div><div><span style="white-space:pre">			</span>redirect:重定向</div><div><span style="white-space:pre">			</span>chain:转发到另一个Action</div><div><span style="white-space:pre">				<span style="font-family: monospace; white-space: pre; background-color: rgb(240, 240, 240);">转发到同一个包下的另一个Action</span></span></div><div><span style="white-space:pre"><span style="font-family: monospace; white-space: pre; background-color: rgb(240, 240, 240);"><span style="white-space:pre">				<span style="font-family: monospace; white-space: pre; background-color: rgb(240, 240, 240);">转发到不同包下的另一个Action</span></span></span></span></div><div><span style="white-space:pre">			</span>redirectAction:重定向到另一个Action<span style="white-space:pre">	</span></div><div><span style="white-space:pre">					<span style="font-family: monospace; white-space: pre; background-color: rgb(240, 240, 240);">重定向到同一个包下的另一个Action</span></span></div><div><span style="white-space:pre"><span style="font-family: monospace; white-space: pre; background-color: rgb(240, 240, 240);"><span style="white-space:pre">					<span style="font-family: monospace; white-space: pre; background-color: rgb(240, 240, 240);">重定向到不同包下的另一个Action</span></span></span></span></div>-->
    <result name="success" type="redirect">/success.jsp</result>
     </action>
</struts>


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值