首先总的来说struts有两条线
一.数据的迁移
ActionContext:在整个过程中是一个最大的容器,存放一切对象与数值
首先将利用request.getParameterMap()方法将前台的参数名和属性值获取到,然后依次从Map里面取出来放入ActionContext中,再将不同的作用域对象放入ActionContext.getContext()中,由于ActionContext贯穿于整个web程序的 上下文,所以在任何地方都可以使用,然后在请求到达最后一个处理请求action的时候,actionProxy会生成相应具体action对象名,再将前面获取的的参数值从ActionContext.getContext中拿出来给生成具体action的的对象的相应属性给set进去,开发人员在action中就可以直接拿到属性值了(所以在action的属性名一定要与表单的属性名相对应,否则将获取不到数据),这样就完成了数据的获取与迁移,
二.功能的实现(拦截器)
在这里必须事先知道拦截器是什么?其实拦截器就是一个不依赖于web容器的一个普通的Java类,在拦截器中,struts2帮助所有的开发者完成了开发过程中都必须共同执行的操作,减少了开发者不必要的代码但是可以处理从web发过来的请求,一切的一切都依赖于struts中的一个核心过滤器,他将请求进行了托管,然后根据action名进行相应的匹配,匹配到哪一个action,哪一个action将处理请求