struts1

1.详细介绍Struts1.的流程?
答案:(1)Web Server启动装载Web应用时,容器先将ActionServlet装载进虚拟机并实例化,接着调用init()方法在init()中 ActionServlet去解析struts-config.xml文件,将其中的元素信息封装到相应的对象中,对象被存放到Struts 框架维护的集合中.
(2)当客户端发出请求的URL以指定后缀结尾,那么这些请求将被ActionServlet拦截.
(3)ActionServlet接拦截请求后,首先构造一个RequestProcessor对象(单例),然后调用其
       process(request,response)方法,将请求委托给RequestProcessor来处理.
(4)RequestProcessor将请求URL中的servletPath截取后缀后,然后根据这个path到HashMap中查找对应 ActionMapping对象,若没有找到,返回错误信息到客户端,若找到也就能获得属性type指定的Action.
(5)根据<action>元素中属性scope指定的范围去查找是否存在配置的ActionForm对象,若找到该对象,就不会去构造一个新的ActionForm对象,若没有找到,先构造一个新的ActionForm对象,然后将该对象放置到scope指定的范围中.
       注意:如果Action没有配置ActionForm就不会执行5,8(5,8指的是这里写的).
(6)调用ActionForm的reset()方法,调用此方法进行属性的初始化(基本数据类型设置为0,布尔型设置为 false,String设置为null).
        注意: 此方法要用户自己去实现,但是若ActionForm对象存放在request中可以不实现该方法,若存放在session中最好实现该方法,对所有的属性进行初始化.
(7)调用ActionForm的setXXX()方法,调用此方法就将提交表单中的字段信息封装到ActionForm的属性中.
(8)如果<action>元素中的属性validate为true,那么就调用validate()方法进行表单字段的验证,该方法由用户提 供实现.若设置false就不调用该方法.
     注意:该方法并返回一个ActionErrors对象(内置一个集合),若集合中含有ActionMessage对象(封装错误消息)验证就不通过,接着跳转到属性input指定的jsp.若返回null或者ActionErrors对象内置的集合中不含ActionMessage对象, 验证就通过.
(9)RequestProcessor首先判断在放置Action缓存(HashMap)中是否已经存在一个Action对象,若没有就构造一个新的Action对象,并放置到Action缓存中.
       注意: Action缓存是一个HashMap,存放形式className,Action对象引用),className就是<action>元素中属 性type指定的值.
(10)调用Action的execute()方法,此方法类似Servlet中的service方法,返回结果为一个ActionForward对象,根据返回的ActionForward对象,而回答用户的请求.

 

 

 

 

 

 

 

 

 

 

 

 

继续.....

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值