Action笔记

一、首先先问一下Action是什么?

  Action是HTTP请求与业务逻辑之间的适配器

二、Action什么时候被初始化?

  是发出Action请求时初始化,不是在读取配置时初始化。

三、其次看一下开发Action的步骤:

1、创建一个类,继承Action

2、注册struts-config.xml(配置文件如下)

 

ExpandedBlockStart.gif 代码
<!--  这里的name的值要和form-bean name的值保持一致才能够获取到那个类的东西  -->
    
< action
      
input ="/form/login.jsp"
      name
="loginForm"             
      path
="/login"
      scope
="request"
      type
="com.yourcompany.struts.action.LoginAction" >
    
</ action >

 

path:指明调用jsp能通过中心控制器ActionServlet找到该Action

type:指该Action类全名

name:该action引用Form的名称(form是为action服务的,所以要先创建form类)

input:如果表单验证不通过,则跳转指定的目标模块

四、Acton是安全的吗?为什么?

  Action本身是不安全的,所以要注意线程安全,因为一个Action类只创建一个Action实例,控制器会共享同一实例。

Action实例存放的地方:它的实例是放在RequestProcessor类的processAtionCreate()方法中的HashMap中。

如:protected HashMap actions = new HashMap();

五、如何创建安全的多线程Action类?

  保证线程安全的重要原则是在Action类中仅仅使用局部变量,谨慎地使用实例变量,所以每个线程有独立的局部变量,不会被其他线程共享 ,当线程执行完execute()方法时,它的局部变量会被销毁。

六、不安全的Action类可以用于什么地方?

  可以用于计数。

 

ExpandedBlockStart.gif 代码
private   int  count  =   0  ;
    
public  ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            
throws  Exception {
        
        
synchronized ( new  Integer(count)){         // synchronized锁的是一个对象,不能是值,所以要new
            count ++ ;                             // 为的是线程安全
        }
        PrintWriter out 
=  response.getWriter();
        out.print(
" count= " + count);
         
return   null ;
    }

 

 

 

转载于:https://www.cnblogs.com/azai/archive/2010/03/15/1685976.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值