昨天接触到了struts2,有些细节没有写下来,补充一下。
1.关于Action类
昨天定义的LoginAction类里面有两个私有字段username和password,以及其get和set方法,这个名字有什么要求吗?
首先要搞清楚,struts2接受到客户端请求时会怎么做!当struts2接受客户端请求时,会调用Action类的setXXX()方法。也就是说struts2会自动调用setXXX()方法,而不是寻找Action的XXX属性。
所以,Action的属性名可以和表单提交的数据字段不一样,但是方法中setXXX(),getXXX()必须和表单字段一样。但是一般取名都是和表单字段一样。
2.struts2是基于请求转发的
在昨天的result.jsp页面中用到了EL表达式,username : ${requestScope.username} password : ${requestScope.password} ,由于struts2是基于请求转发的,数据由login.jsp输入,struts2框架拦截请求,分析后转发至LoginAction,处理后,再由struts2转发至result.jsp,得到显示,整个过程是一个请求,所以这个EL表达式中的requestScope可以获得输入的数据。
3.程序流程分析
见上一个问题。
记住一点,struts2是请求转发(requestDispatch)而不是重定向(rewrite)