标签:pre 哪些 conf lang 流程 如何 delegate tac exec
1、加载类(FilterDispatcher)2、读取配置(struts配置文件中的Action)3、派发请求(客户端发送请求)4、调用Action(FilterDispatcher从struts配置文件中读取与之相对应的Action )5、启用拦截器(WebWork拦截器链自动对请求应用通用功能,如验证)6、处理业务(回调Action的execute()方法)7、返回响应(通过execute方法将信息返回到FilterDispatcher)8、查找响应(FilterDispatcher根据配置查找响应的是什么信息如:SUCCESS、ERROER,将跳转到哪个jsp页面)9、响应用户(jsp--->客户浏览器端显示)10、struts2标签库(相比struts1的标签库,struts2是大大加强了,对数据的操作功能很强大)
obj =Class.forName("完整类名").newInstance();
Method m =Class.forName("完整类名").getMethod("execute");
m.invoke(obj);//通过反射 执行execute()方法
Action接口中,定义默认五种逻辑视图名称
// 数据处理成功 (成功页面)
publicstatic final String SUCCESS ="success";
// 页面不跳转 return null; 效果一样
publicstatic final String NONE ="none";
// 数据处理发送错误 (错误页面)
publicstatic final String ERROR ="error";
// 用户输入数据有误,通常用于表单数据校验 (输入页面)
publicstatic final String INPUT ="input";
// 主要权限认证 (登陆页面)
publicstatic final String LOGIN ="login";
代理模式,控制目标对象访问
/hello.action 请求时StrutsPrepareAndExecuteFilter的 doFilter一定执行
//判断配置文件中有没有对应Action
ActionMapping mapping = prepare.findActionMapping(request, response,true);
//根据配置创建代理对象
ActionProxy proxy = config.getContainer().getInstance(ActionProxyFactory.class).createActionProxy(namespace, name, method, extraContext,true,false);
执行时:先执行interceptor的intercept拦截方法,最后指向action的execute
配置package 三个常用属性
<packagename="default"namespace="/"extends="struts-default">
②namespace和 <action>的name属性,决定 Action的访问路径 (以/开始 )
③extends继承哪个包,通常开发中继承struts-default包 (struts-default包在 struts-default.xml中定义 )【可以使用包中默认的拦截器和结果集】
2)Action是通过<action>元素配置
<action name="hello"class="cn.itcast.struts2.demo1.HelloAction" method="execute">
例如:
<package name="default"namespace="/user" extends="struts-default">
<action name="hello"class="cn.itcast.struts2.demo1.HelloAction">
<result name="success">/demo1/success.jsp</result>
</action>
</package>
标签:pre 哪些 conf lang 流程 如何 delegate tac exec
原文地址:http://www.cnblogs.com/applemy/p/6993305.html