struts入门2

不同开发人员有不同的习惯, pojo,bean,entity,model 等等,都是指的它~--------实体包名字

开始

1175089-20180418132833894-62719273.png

1175089-20180418132401055-989545481.png

1175089-20180418132423964-677018549.png

重点:

为了有一个String类型的返回值,这个返回值可以自己定义,这个返回值要和struts里对应Action里的一个result的name属性值相同。
这里是返回值是"diyshow";在执行完ShowTimeAction里的showtime方法后,最后产生的这个返回值"diyshow"会自动跑到struts.xml里面的"showTime"这个Action下面寻找一个name值为"diyshow"的result,找到它,跳转到相应showTime.jsp。

1175089-20180418124947578-298532075.png

1175089-20180418124810711-941822267.png

果然都是:${XXX}会访问对应的Action的 geXXX()方法 ,然后再把这个XX对象通过request.setAttribute("XX", XX 放在"product" 这个key上,这样就方便EL表达式去取出来了
1175089-20180418125047626-203913354.png

================
因为我测试过 ,假如在对应的Action 做一下手脚的话,请看下图

1175089-20180418125137449-256650346.png

1175089-20180418125157421-2095664951.png

而现在假如我在上面基础上 继续把,private Date date ; 改为公有成员
1175089-20180418125254177-2043255269.png

又成功出现了
1175089-20180418125304479-1897990537.png

所以这证明了一个流程

  1. 访问路径 /showTime
  2. 所有访问都被struts的filter所拦截,并进入struts的工作流程
  3. 根据配置文件struts.xml, 会执行ShowTimeAction的showtime方法
    4.1. ShowTimeAction通过request.setAttribute("currenTime", currenTime) 放在"currenTime" 这个key上,这样就方便EL表达式去取出来了。似乎只要是这个Action里的属性,他都会放到作用域里
    4.2 在showtime方法中会返回一个String , 在上面例子返回的是 "diyshow"
    5 自动跑到struts.xml里面的"showTime"这个Action下面寻找一个name值为"diyshow"的result,找到它,跳转到相应showTime.jsp。
  4. 在showTime.jsp中,${currenTime}就直接取值了

我的推测1:只要那个Action里面有什么属性,struts都会帮我们将它放入requsest域里。
**我的推测2:struts当看到jsp里有${currenTime},然后再访问对应的Action的 getCurrenTime()方法拿到返回的对象,然后再把currenTime对象通过request.setAttribute("currenTime", currenTime)

严格的说是Action把数据放在了request的setAttribute("product") 上, JSP的EL表达式${product.name} 是从request里取的数据。

问题:${date}是什么时候创建出来的
答:通过struts的getData()方法取出来的,或假如是data成员是公有的话,可以直接就拿出
因为Struts就是这么设计的(无力的回答~)

问题:为什么${date}会访问对应的Action的 getData()方法
答:(首先要注意EL表达式从哪些对象中获取数据,有Page、Request、Session……等)在这里EL表达式访问的是当前 request,而不是Action。ShowTimeAction中有一个date属性,Struts2会自动调用 request.setAttribute("date",date)将date对象保存到request中,所以 EL表达式才能取到date对象。我是这么理解的,请大家指教
因为Struts就是这么设计的(无力的回答~)

转载于:https://www.cnblogs.com/czy16/p/8874195.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值