下午学习struts2好几个小时,总结经验教训如下:
1,Action的一部分成员变量是与请求对象request携带的请求参数相关联的,struts2在创建Action的时候,会把提前解析到的参数都赋值给Action的成员变量。这一部分成员变量是不允许在程序中调用它们的set方法的,如此,请求参数只可以读取,但不可以赋值。
2,Action的另一部分成员变量用来封装处理结果,可以在程序中调用它们的set方法,从而给它们赋值。当Action处理结束以后,struts2的内置拦截器会把这部分成员变量所引用的对象添加给request。
3,实际上,可以在Action的方法中直接往request等对象中添加对象,不必须非要给Action配置封装处理结果的成员变量。我觉得这样比较好。
以上所言,乃我一时之感觉猜测,也许不对,留待以后研究核实。
struts2 在action中获得request、response参数的方法:
HttpServletResponse response = (HttpServletResponse) ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_RESPONSE);
HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);