欢迎来到天天文库
浏览记录
ID:38224973
大小:35.50 KB
页数:5页
时间:2019-05-28
《struts源码讲解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、struts1是基于当前的一些相关标准的开发技术(servlet,xml…)基础之上,提供了一个开发框架的开放源码项目。使用struts1的好处:1.良好的架构和设计2.可重用,模块化,扩展性好3.Opensource开源的4.它提供了丰富的标签库,使页面能更加灵活的使用。struts1的缺点:1.它太过于依赖web容器,当配置文件改动一次就要重新启动。2.它的配置文件太过于复杂。3.ActionForm无法进行测试.4.Action测试太过于依赖servletapi,所以在测试的时候要用到模拟对象.sturst1初始化Struts1=jsp+servlet+tag(MVCMode
2、l2)Struts主要有三个核心的类,分别是ActionServlet,ModuleConfig,RequestProcessor。ActionServlet就是控制器,ModuleConfig封装着Struts应用程序的配置信息,RequestProcessor负责处理每一个HTTP请求。Struts的核心类就是org.apache.struts.action.ActionServlet,它继承于javax.servlet.http.HttpServlet,当我们配置Struts时就要在web.xml文件中配置这个Servlet类。当ActionServlet初始化时,就调用in
3、it()方法。1.启动加载多个配置文件ctrl+shift+T(jar)ctrl+shift+R(源文件resource)ctrl+O(快速查询方法)*init()initInternal()读取资源文件(国际化)初始化Struts框架内在的消息资源,如与系统日志相关的日志、警告和错误消息。MessageResources类的getMessageResources()方法在getMessageResources()方法中,通过工厂类调配资源文件initOther()由于从form传输过来的都是String类型的值,所以我们要把它们转换成相应的类型。在这里我们可以学到几个技巧:技巧一
4、:判断是否是一个Array类的方法isArray()技巧二:判断type是否是List的一个父类或者父接口,或者与List为同一个类要注意如果List是另一个primitive的TYPE类,那么type必须也是这个类才会返回true,否则都是false。注意long.TYPE与Long.class是不同的查找在web.xml中config参数和convertnull参数的配置config默认配置路径为WEB-INF/struts-config.xml(struts1配置文件)initServlet()这个方法主要是通过digester类解析web.xml,对Stringservle
5、tMapping属性进行初始化。对于digester说明如下:这是一个基于DOM的SAX实现的类,它是事件触发的,根据xml文件的结构,每次读到一个节点元素就会触发一个事件。它可以直接把xml文件解析为一个java对象。这是一个比较少见的方法。首先通过this.servletName=getServletConfig().getServletName()获取servlet的名称,然后根据if(servletName.equals(this.servletName)){this.servletMapping=urlPattern;}来判断当前读到的servlet名称是否是我们运行的s
6、ervlet的名称,如果是,就把url-pattern作为我们的servletMapping。从web.xml中加载ActionServlet的初始化参数如servlet-name,加载DTD文件并把其放入HashMap缓存,读取并解析web.xml的内容,另外会将当前的ActionServlet放入到创建的Digester对象的栈中。initChain()读取web.xml中命令链文件初始值chainConfig如果没有,则用默认的"org/apache/struts/chain/chain-config.xml"将当前ActionServlet加入到上下文ServletCont
7、ext()中获取ModuleConfig实例,这个方法使用由initOther()方法获取的config值为要解析的xml路径,用来初始化ModuleConfig。Struts中的MessageResource、PlugIn、数据源等,都是通过ModuleConfig来实现的;调用initModuleMessageResources(moduleConfig),用户资源文件的初始化;调用initModulePlugIns(moduleConfig),用户插件的初始化;
此文档下载收益归作者所有