Struts2自学入门(三)

17 篇文章 0 订阅
11 篇文章 0 订阅


注:黄色字体为网络引用内容


一、include标签

include标签通常用于Struts的模块化配置,可以使Struts2配置更加清晰明了,不杂乱。

首先需要在Struts.xml配置一个入口

<struts>
<include file="cheliang.xml"></include>
<include file="zichang.xml"></include>

</struts>
其中 “cheliang.xml”等表示各个模块的Struts.xml cheliang.xml里面的配置和普通的相同 如:

   <package name="cheliang" namespace="/cheliang" extends="struts-default">
  	<action name="cheliang" class="com.java1234.action.CheLiangAction"  >
  		<result name="success">${pageContext.request.contextPath}/success.jsp</result>
  	</action>
  </package>
二、通配符 *

Struts.xml里可以用*号来代替字符 如:

  		<action name="Grade_*" class="com.java1234.action.GradeAction"  method="{1}">
  		<result name="success">success.jsp</result>
  	   	</action> 

其中 method="{1}" 表示 执行的方法名为 name中第一个*号 又:method="{2}" 即表示第二个 所以:

  	   	<action name="*_*" class="com.java1234.action.{1}Action"  method="{2}">
  		<result name="success">success.jsp</result>
  		</action>-->
这样写也成立, 第一个*号来匹配Action名称 第二个*号来匹配方法名 以此类推。前端页面如:

<h1>通配符</h1>
<a href="Student_list" target="_blank">学生信息查询</a> 
<a href="Student_add" target="_blank">学生信息添加</a> 
<a href="Student_update" target="_blank">学生信息修改</a> 
<a href="Student_delete" target="_blank">学生信息删除</a> 
<br/><br/>
<a href="Grade_list" target="_blank">班级信息查询</a> 
<a href="Grade_add" target="_blank">班级信息添加</a> 
<a href="Grade_update" target="_blank">班级信息修改</a> 
<a href="Grade_delete" target="_blank">班级信息删除</a> <br/>


三、动态调用(官方不推荐使用):

此方法可以在Action标签里指定Action路径名称不用指定方法名,方法名写在请求的URL里。

需要在Struts.xml的 <Struts>标签下 添加:

  <constant name="struts.enable.DynamicMethodInvocation" value="true" />
表示本xml可以动态配置Action

前台页面如下:

<h1>动态方法调用</h1>
<a href="student!list" target="_blank">学生信息查询</a> 
<a href="student!add" target="_blank">学生信息添加</a> 
<a href="student!update" target="_blank">学生信息修改</a> 
<a href="student!delete" target="_blank">学生信息删除</a> 
<br/><br/>
<a href="grade!list" target="_blank">班级信息查询</a> 
<a href="grade!add" target="_blank">班级信息添加</a> 
<a href="grade!update" target="_blank">班级信息修改</a> 
<a href="grade!delete" target="_blank">班级信息删除</a> <br/>
    用感叹号来区分Action类名和其中的方法 参数可以这样写:student!add?name=xxxx

四、Action生命周期:

前台页面每次请求一次Action都会创建一个Action实例,返回后杀死,因此在多并发的情况下会比较耗资源


五、result配置:

type属性:type属性定义了该result的类型,有很多种,最经常用的有以下四种:

1、默认是dispatcher     内部转发

     上面提到的例子即此类型

2、redirect 重定向

    此类型会进行页面跳转,但不会传递参数。其他与 1 相同

3、chain 链条

    此类型可以将此请求转发到另一个Action,两个Action都会相继执行:

  		<action name="hello" class="com.java1234.action.HelloWorldAction" >

  			<result name="c"  type="chain">hello2</result>

  		</action>
  		
  		<action name="hello2" class="com.java1234.action.HelloWorldAction2" >
  			<result name="success">success.jsp</result>
  		</action>	

前台页面:

<a href="hello!c?name=Struts2" target="_blank">链条_chain</a>


    HelloWorldAction

	public String c() throws Exception {
		
		return "c";
	}
HelloWorldAction2

	@Override
	public String execute() throws Exception {
		this.name2="你好啊";
		return SUCCESS;
	}
得到结果:

Name:Struts2
Name2:你好啊

4、redirectAction 重定向Action 

此类型也可以进行Action的转发,与chain唯一的不同点是 第一个Action的参数不可传递到第二个Action 

同代码得到结果如下:

Name:
Name2:你好啊


五、全局的result:

可以直接写在pacakage标签下:

		<global-results>
			<result name="error">error.jsp</result>
		</global-results>
  		
当在Action里找不到error的时候 会在全局results里找。执行效果与普通result相同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值