struts1与struts2 运行原理

来源:互联网 发布:条形码扫描录入软件 编辑:程序博客网 时间:2024/06/06 18:36

struts1的工作原理:

客户端发送请求(Http Request),被struts1的核心控件器ActionServlet接收,它是在tomcat启动的时候就开始加载,同时加载struts的配置文件,在加载配置文件的同时,它会创建actionfrom,action映射的关系放在内存中。如果要访问action,首先在配置文件中根据虚拟路径找到对应的类,如果action是默认继承Action,不需要配置,直接执行里边的excute方法,如果继承的是dispatchAction,需要配置,类似于parameter=“method,访问格式是:action里的path路径.do?method=方法名。客户端提交的参数被封装到actionform中,我们自己写的form要继承actionform,通过actionform转换,获取相关的值。调用业务层的方法,获取相关的数据,前台页面要用到这些数据,把这些数据存到request里或session里或者放到actionform的一个属性中,通过actionMapping.findForward(),根据配置文件里的forward名字,返回到jsp页面,在页面获取存到request里或session里或者放到actionform里的值。



struts2的运行原理

首先,需要在web.xml里配置一个FileterDispatcher,这就是struts2的前端核心总控制器类,然后在里边引入struts相关的配置文件,如struts.xml,配置完成后,tomcat在启动的时候,就会根据web.xml里边的配置去加载struts.xml里边的配置信息,struts.xml里边有action,有跳转,有拦截器,tomcat启动完成后。在struts2里建立action是需要继承ActionSupport这个类,此外,在struts2里边就可以定义多个方法,像add,delete这类方法。客户访问URL请求,这个URL是由两部分构成的,是由struts里边的配置文件的namespace加上action name配成的。

在提交表单的时候,根据表单里的name和action里边变量的名字对应,然后往它里边注入属性。在action中建立一个model类,给它get和set方法,然后它就可以根据name的级联属性进行相关属性的注入。在根据URL的请求地址连接,就可以再struts.xml配置文件中找到它是调用哪个类的哪个方法,这样就可以进入方法,进入方法后调用业务逻辑,返回结果。方法返回的是一个String类型,可以根据struts.xml找到对应的name,找到对应的JSP。在struts2中,如果result的name不写的话,那么它默认的是SUCCESS,如果type不写的话,默认的是dispatcher,类似于forward跳转,如果是方法和方法直接的跳转,type写redirect。