对于struts的简单学习告一段落,要开始学习Hibernate了.很久没有写总结了,在公司这段时间,觉得总结很有必要,因为总是有很多问题,你不懂,你这次不懂,好不容易解决了,下次再遇到,忘了上次怎么解决的,很麻烦.所以还是想写一下struts的总结,不一定能总结出什么东西,但是还是要总结的.
首先对于Struts的整体理解,Struts是什么东西.Struts是一个MVC框架,主要实现了C,控制层.但是不是说SSH也是一个框架,Struts对应的是表示层,Spring对应的是业务逻辑层,而Hibernate对应的是数据持久层和域模块层.所以我以为struts应该是最主要实现的是V啊.
查看资料发现我根本没懂,SSH是一个框架,但最好说是一个框架的集合,里面的Struts,Spring,Hibernate都是一个框架.其中Struts,确实是一个MVC的框架,所以M,V,C层struts都是有的,只是他的功能主要体现是在C层,至于怎么体现的,我现在还不知道.而他的优点,做为MVC框架,那么他具有解耦和的优点.
按照整个的实现思路来说就是,从JSP页面,进行跳转,需要在form标签的action上赋值,如user.do;而跳转到哪个Action,需要在struts-config.xml文件中的<action-mappings>的<action>中进行配置,<action>标签中的path对应jsp上的action的值,如/user.然后在type和name中写下Action的完整路径和配置好的ActionForm的名字.就能跳转到相应Action,然后就是利用ActionForm收集数据,进行操作,最后用ActionForward进行跳转.跳转也需要在struts-config的<action>标签中进行配置,给name和path赋上任意的值和需要跳转页面的相对路径,跳转到action上也是可以的.
或者用他提供的图来讲,就是web客户端提出请求到ActionServlet,ActionServlet根据struts-config.xml中的配置,决定调用哪个Action,Action和Model进行数据交互,完成之后,跳转到jsp页面,jsp再响应Web客户端的请求,渲染页面.
学习完之后,印象最深的就是ActionForm,Action,Struts-config.xml,ActionForward,国际化和异常.那么对于Action,ActionForm等等该如何理解.
和以前的知识联系起来,Action对应Servlet,ActionForm对应实体Entity或者Model.就像是以前做的项目,我们都是先根据数据库建立出实体,然后在D层写下一堆的对应的增删改查方法,Action也是在做一堆的增删改查方法.好像有点清晰明了了,然后jsp对应的就是U层,那么B层呢,B层本来是用来处理业务逻辑的,但是我们通常把他架空成一个传递层,而Struts的处理页面业务逻辑,ActionServlet好像是在干这个事.
还有为什么要使用struts-config.xml文件进行配置,把那些操作直接写死在代码中不好吗?答案肯定是不好,要不然为什么那么费劲的用配置文件.想想他的好处,比如从这个jsp页面进行的跳转操作有误了,是进去改写Action,这样就违背了OCP原则了.那么重新写一个Action,在xml中,将对应的Action换掉,可就没有违背开放封闭原则.还有就是对于跳转,本来是跳转到各自的页面的,后来打算统一,如果写死,一个一个去改是不现实的,在xml一次性配置不是方便多了.
而ActionForward就是一个跳转对象,可以跳转到指定的页面去.
国际化的话,主要就是Basename和Locale.建立国际化的文件,名字要么直接是basename,要么是basename+locale.然后在里面写上一堆的key和value.然后在Action中根据根据各自系统的版本控制语言.中文必须要用native2ascii来转换成unicode.然后在jsp页面要显示的话,可以用<bean:message>读取.还有可以设置参数,提示信息也都可以设置国际化.
异常是可以根据自己的需要定制异常,try-catch的时候接exception是不好的,你try-catch应该是你能预测的异常,对于你能预测到的异常进行有效的控制,这样你的系统才不至于有什么大问题.所以可以根据自己的需要,自定义异常,然后让该抛这个异常的都抛这个异常,那么出问题就是可控的.struts中的声明式异常,向上抛struts会处理;而编程式异常则快捷而又灵活.可以自定义编程式异常,继承ExceptionHandler,覆盖execute方法.而jsp的显示可以直接用<html:errors/>显示.
以上就是我的struts的一点总结,因为长期不总结,现在总结很费劲,自我感觉总结的不怎么样,都不像总结.唉,业精于勤而毁于随.