Struts2的整体流程
来源:互联网 发布:淘宝网购物女裤 编辑:程序博客网 时间:2024/04/30 16:48
struts2的前身是WebWork,后改名为struts2,其与struts1没任何关系。
请求先经controller层,本质是一个过滤器Filter,其对请求的url进行判断。若为页面,进行请求的转发,保证请求数据不会丢失;若为action,从配置文件找到对应action类的完全限定名,并通过反射加载此类,同时生成其实例。
Filter将生成的实例注入接口Action的实例,并调用配置中给出的方法,默认执行execute方法。进入action的方法实际是从controller层转移到了model层,本质是通过函数调用实现的,方法执行结束后,从model层返回到controller层。
controller层根据action返回的结果字符串,从配置文件找到下一步的跳转路径。若为页面,可进行请求的转发,也可进行响应的重定向;若为action,则必须进行响应的重定向,保证重新经过controller层。
// struts-x_y.xml// 项目根据业务划分多个package,每个package对应一个配置文件<struts> // name,主要用作继承使用 // namespace,决定了包中action的访问路径,要根据业务给出自己的namespace,不建议使用默认namespace // extends,给出当前包继承的包 <package name="xY" namespace="/xY" extends="login"> // name,action的名字,不同包中action可同名,请求action使用name,建议name为要请求的方法名 // method,请求action时要调用的方法名字 <action name="cD" method="cD" class="....XxAction"> // name,对应action返回的结果字符串 // type,结果的处理类型 // 默认dispatcher,以jsp/html显示;velocity,以vm显示;redirectAction,重定向action <result name="success" type="velocity"> // 跳转路径,建议使用绝对路径,以/开头,从项目根目录开始 // 相对路径,相对namespace /WEB-INF/.. </result> </action> .. </package></struts>// struts.xml// 所有的struts配置文件在此整合<struts> <package name="x-base" extends="struts-default"> <interceptors>..</interceptors> .. </package> <package name="login" extends="x-base"> <interceptors>..</interceptors> .. </package> // 合并其它的配置文件,相对路径,相对当前xml文件的路径 <include file="struts/struts-x_y.xml" /> ..</struts>public class XxAction { // 接收前端参数 public String userName; // 前端显示信息 public String message; // 接收后端服务实例 @Resource(name = "xxService") public XxService xxService; // action通过set方法,将前端请求中的参数值注入到其对应的属性,请求参数的key或前端表单控件的name必须与属性名相同 public void setUserName(String userName) { this.userName = userName; } // 若前端使用jsp,其可通过get方法,显示来自action的数据 pulbic String getMessage() { return message; } public void cD() { // 若前端使用vm,必须将前端显示数据放入ValueStack ValueStack context = ActionContext.getContext().getValueStack(); context.set("message", message); } // 返回框架控制器,再决定进一步走向 return "success";}
0 0
- Struts2的整体流程
- Struts2的整体流程
- 俯瞰Struts2的整体流程
- 俯瞰Struts2的整体流程
- 俯瞰Struts2的整体流程
- 俯瞰Struts2的整体流程
- 俯瞰Struts2的整体流程
- 俯瞰Struts2的整体流程
- 俯瞰Struts2的整体流程
- 俯瞰Struts2的整体流程(1)
- 俯瞰Struts2的整体流程(2)
- Struts2的整体流程(上)
- Struts2的整体流程(下)
- Spark 的整体流程
- 从整体到局部-----俯瞰Struts2整体流程(6)
- 俯瞰Struts2整体流程(6)
- 网络游戏运营的整体流程
- 关于AssetBundle的整体流程
- python矩阵转换为一维数组
- Linux 命令操作开启、停止、重启Mysql数据库的方法
- Tcp服务端判断客户端是否断开连接
- SQL Server JDBC连接中的问题
- 直接将ppt转换成word格式的方法
- Struts2的整体流程
- MATLAB绘图与图形处理
- 表单提交文件无法获取的解决办法
- C++多线程框架-----Mutex互斥和Sem信号量
- iOS 10 创建iMessage App
- c++11信号量实现
- 大小最接近的那两个数(位操作)
- MS CRM心得 - 从Hosk's blog开始谈plugin
- h5特殊字符