struts2学习笔记2 -struts2的开发步骤和工作原理
struts2的开发步骤:
1.先定义一个能发送请求的页面,可以是链接,也可以是表单(form)
2.开发action类,struts2对action并没有过多的要求,只要求:
a 推荐实现action接口,或继承actionsupport类
b 为每个请求参数都提供feild,并为之提供相应的setter和getter方法
c 该action类应该有无参数构造器
3.配置action类
所有action都需要放在package里配置。
<action>元素有如下属性:
name 指定该action处理那个请求
class 指定该action对应的处理类 即java文件
method:指定使用action的那个方法来处理用户请求。默认是execute()方法
struts2工作原理和流程:
1.浏览器发送请求,abc.action,.action看web.xml中配置的filter
2.浏览器发送的请求被StrutsPrepareAndExecuteFilter来过滤所有的请求(在web.xml)指定该类
3.StrutsPrepareAndExecuteFilter会根据class路径找到该action类,会去创建action实例,加入请求为abc,StrutsPrepareAndExecuteFilter会搜索struts.xml中name为abc的action配置,根据class属性使用反射来创建action实例
4.4.调用
Map<String,String>
paramMap=request.getParamterMap();
----返回所有请求 参数名使用循环(String
paramName:paramMap.keyset()){
//得到请求参数名对应的setter方法。
action类.getMethod("set"+paramName的首字母大写)
;
//得到请求参数对应的值
String paramValue=paramMap.get(paramName);
//已action实例为调用者,调用setter方法,把请求参
数值作为参数值传入。
setter.invoke(actionInst,paramValue);
5.再通过反射调用method属性所指定的方法,返回一个
字符串
6.根据struts.xml文件中的<result.../>元素的name以
及物理视图资源,跳转到实际的视图资源
action类.getMethod("set"+paramName的首字母大
写)//请求参数对应的setter方法
-------------------------------------如何在
action中访问servlet api--------------------
有些时候需要访问servlet api 比如我们要把数据存入
session、application。以及添加cookie
(response.addCookie())
struts2提供了两种方式访问servlet api :
a.伪访问。借助于ActionContext。
ActionContext提供了getSession -模拟访问http
session
getApplicatin -模拟访问
Application
b 真访问 添加cookie 直接访问servlet api 借助月
ServletActionContext
ServletActionContext提供了如下静态方法;
static PageContext getPageContext();
static HttpServletRequest getRequest();
static HttpServletResponse getResponse();
static ServletContext getServletContext();