无论是已经熟知SSH开发的老手,还是想要快速上手SSH的程序员,或者是对SSH还一无所知的学生,搞清楚SSH这个框架的逻辑流程都是相当关键的。现在让我一起学习,或者回顾一下SSH的逻辑执行流程。
先简单叙述一下流程:
1 ) 客户端初始化一个指向servlet容器的请求 2 ) 请求经过一系列的过滤器(ActionContextCleanUp用来清除ac) 3)FilterDispatch被调用,去查询ActionMapper来确定是否去调用某个action 4)如果要调用某个action, filterdispatch将该请求交给Action Proxy 5)Action Proxy通过 Configuration Manager 找到需要调用的Action 6)Action Proxy创建ActionInvocation对象副本
7)ActionInvocation回调action的execute方法
8)ActionInvocation根据返回的字符串找到result。然后将result通过HttpServletResponse返回给服务器
其中,
struts用于接受请求,
而spring则负责控制对象的创建,
在ssh框架中都所以的对象创建都由spring负责,
最后hibernate负责持久层 也就是与数据库的交互。
最后我们有必要从具体代码上再给与分析:
1,服务器启动时,加载Web.xml
读到struts-config.xml里,加载strutx-config.xml文件:
又读到插件,所以还需要加载Spring配置文件ApplicationContext.xml:
此时遇到了Hibernate.cfg.xml:
到此,各个配置文件加载完毕。
先说web.xml,接着通过welcom-file中的login.jsp跳转到欢迎登陆界面,就会出现开头的那张图了。
接着,最有意思的是Spring的配置文件了,我好几次问题都出现在那里:
请注意,它是顺序执行的,每次进行的加载,都是把整个页面的配置信息都执行完了,才叫加载完成。所以服务器启动时,会等待很长一段时间,我的是17s。
跟iadmin对应的是接口类IAdmin:
跟UserDAO对应的是DAO实现类:
关键在这个类,Action处理类LoginAction:
我这里用的是分发Action(DispatchAction)。这里最需要注意的是名字命名时的大小写问题。
注意跟Spring配置文件要对应。(我就是在这里犯的错误!汗)
另外对其实文件的一些说明:
用分发Action时,在Struts-config.xml里要注意:
需要有个,然后View层通过传具体的method值到Action中进行处理;我这里用通过与Spring进行集成,使得比较直观。还有一个在Struts的配置文件中这点细节注意,它跟页面的是对应的。同时页面是通过把值传给服务器的。
希望对大家有帮助(*^__^*)