struts2入门(2)

struts线程安全问题
servlet是单例的,init方法在项目期间只会执行一次,因此在servlet中不写属性进行信息共享,因为它会产生多线程访问冲突问题。
struts1中所有的action都只有一个实例,被反复调用,在struts2中,每次请求生成一个实例,这些实例彼此独立,使用后销毁。
struts1的action线程不安全,一般不能有可写的属性(即action设计成无状态类)。struts1的action线程安全,即可以任意设置属性。
Action配置和详解
struts1中的action必须实现某个接口,struts2中的action就是一个普通的java类

  1. action类可以不继承任何类
  2. action实现Action接口
  3. action类继承ActionSupport类

在struts2中使用Model-Driver和Property-Driver对表单数据进行封装
模型驱动和属性驱动(struts2入门(1)中的例子就是属性驱动)

EL表达式可以获取action类中的属性值

在action中编写多个方法后,要想使用“!”号动态加载不同的方法以打开不同的页面,在struts.xml中配置路径和页面时必须要在外部加以下语句才行<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>否则会报错找不到方法或页面
或者可以配置action的method属性,知道执行某个函数。此时

<!--这里可以为true-->
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
<action name="test" class="com.gmx.action.TestAction" method="hh"> 

action中的type默认为dispatcher,类似于servlet中的forward方法
当type=”chain”时,

<action name="index2" class="com.gmx.action.Form2Action"> 
            <result type="chain">index</result>     
            <!-- type="chain"时,url指定的是action的name值 -->       
 </action>

配置全局的result

<global-results>
            <!-- global-results下配置的result可以共享此package下所有的action,所有action
            下的方法都可以返回"login" -->
            <result name="login">/login.jsp</result>
        </global-results>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值