简单理解struts1和struts2

来源:互联网 发布:matlab 随机字符串数组 编辑:程序博客网 时间:2024/06/15 06:50

比较

没有系统的学习过,仅凭借一个Struts实验和一个struts2实验过程比较,阐述个人对着俩种框架的看法。
Struts2作为后来者,必然相对于struts有进一步的改进,个人感觉俩者之间的区别
1. struts严重依赖与servlet,struts中的action类依赖于servlet的API,直观的将,需要在servlet标签中设置对应的action,当action被调用时,如下,excute()方法需要使用HttpServletRequest和HttpServletResponse作为参数,而struts2不需要参数,

public class RegisterAction extends Action{    public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response)throws Exception{    return mapping.findForward("success");    }
  1. Struts1使用ActionForm对象捕获输入数据,类似Action,所有的Actionform必须扩展基类,因为javabean不能在actionform或action中使用,还需要其他的多余的类来辅助存储输入信息,进行消息传递,而struts2可以直接通过

    <struts:property value="userName"/>

    在jsp页面中获取action中的成员变量
  2. struts1模块中所有Action共享一个生命周期,而Struts2支持通过拦截器堆栈,为每一个Action创建不同的生命周期

Struts流程

  • 客户端发送.action请求
  • 过滤器筛选,路径匹配,跳转到struts.xml
  • struts.xml进行action对应的匹配,创建实例
  • 调用action的excute方法,执行用户的相关操作,业务逻辑
  • 根据action的返回结果,在struts.xml中找到相应的返回信息

问题

研究了一晚上的问题,web.xml到struts-config.xml或struts.xml的映射问题,个人理解,假设你用了struts或struts2框架,web.xml会默认去寻找struts-config.xml或struts.xml文件,可以理解为,已经存在.xml文件的属性,我们只需要设置好对应路径,甚至,在struts2中不需要设置路径,只需要把struts.xml放在src文件夹下面,struts运行时先找struts.xml读取里面的配置,目前,我认为是不能修改这个文件名,就老老实实按照框架要求实验。

实验测试

对于struts中web.xml中

<init-param>        <param-name>config</param-name>        <param-value>/WEB-INF/struts-config.xml</param-value></init-param>

任意改变<param-name>config</param-name>中config的值,对于结果无影响,但同时改变<param-value>/WEB-INF/struts-config.xml</param-value>中struts-config.xml的文件名,以及其对应在文件夹中的名字,网页无法访问,得到结论,struts-config.xml名字需固定不变
同时struts2中web.xml中压根没有struts.xml的映射,可以认为也是框架内部已经默认固定会有这个struts.xml文件,而且路径位置固定在src文件夹中,通过实验验证确实,当struts.xml改个名字或放在WEB-INF文件架下面是,网页会无法访问,猜想正确

总结

struts-config.xml是struts1的配置文件,用来配置struts1的form,action等。
struts.xml 是struts2的配置文件,用来配置struts2的action等。

原创粉丝点击