您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 工作范文 > struts框架详细介绍
struts框架详细介绍struts框架的组成部分struts-config.xmlStruts配置文件ActionServlet控制器ActionClass包含事务逻辑ActionForm显示模块数据struts框架的组成部分ActionMapping帮助控制器将请求映射到操作(struts-config.xml配置信息被转换为一组ActionMapping)ActionForward用来指示操作转移的对象ActionError用来存储和回收错误Struts标记库struts框架的优势良好的架构和设计可重用,模块化,扩展性好OpensourceStruts概览图struts-config.xmlStruts-config.xml集中了所有页面的导航定义。对于大型的WEB项目,通过此配置文件即可迅速把握其脉络,这不管是对于前期的开发,还是后期的维护或升级都是大有裨益的。掌握Struts-config.xml是掌握Struts的关键所在。struts-config.xml(FormBean部分)struts-config!--FormBeanDefinitions--form-beansform-beanname=“testformtype=com.cjea.test.TestForm//form-beansstruts-config.xml(全局转发部分)!--GlobalForwardDefinitions--global-forwardsforwardname=failurepath=bad.jsp/forwardname=successpath=/good.jsp//global-forwardsstruts-config.xml(action部分)action-mappingsactionpath=“/test/test.jsptype=“com.cjea.test.testActionname=testformscope=requestforwardname=successpath=/test/good.jsp//actionaction-mappings/struts-configActionServletActionServlet是struts框架MVC实现的controller部分,它是这一框架的核心。ActionServlet创建并使用Action、ActionForm和ActionForward。ActionServlet的基本功能截获用户的Http请求把这个请求映射到相应的Action类。创建一个ActionFormbean实例,将form请求放入formbean的实例中ActionServlet的基本功能调用Action实例的perform()方法将ActioFormbean,ActionMapping对象,request和response对象传给Action的perform()方法perform返回一个ActionForword对象,根据方法执行情况转到相应的jsp页面.ActionClassesAction类是业务逻辑的一个包装。Action类的用途是将HttpServletRequest转换为业务逻辑。注:扩展Action类时请注意简洁。Action类应该控制应用程序的流程,而不应该控制应用程序的逻辑。通过将业务逻辑放在单独的包或EJB中,我们就可以提供更大的灵活性和可重用性。ActionFormActionForm维护Web应用程序的会话状态。ActionForm是一个抽象类,必须为每个输入表单模型创建该类的子类。ActionForm的使用假定有一个由HTML表单设置的TestActionForm。Struts框架将执行以下操作:检查TestActionForm是否存在;如果不存在,它将创建该类的一个实例。Struts将使用HttpServletRequest中相应的域设置TestActionForm的。ActionForm的使用Struts框架在将TestActionForm传递给TestAction之前将更新它的状态。struts-config.xml文件控制HTML表单请求与ActionForm之间的映射关系。可将多个请求映射到TestActionForm。ActionForm的使用在将它传递给Action类之前,Struts还会对UserActionForm调用validation()方法进行表单状态验证。注:这并不总是明智之举。别的网页或业务可能使用UserActionForm,在这些地方,验证可能有所不同。在UserAction类中进行状态验证可能更好。可在会话级维护UserActionForm。UserActionForm可跨多页进行映射,以执行诸如向导之类的操作。Struts标记库Struts框架包括自定义标签库,它可以用在很多方面。尽管这些库并不要求用框架,但使用它们会有助于程序的开发。Struts标记库struts-beantaglib:包含在访问bean和bean属性时使用的tag,也包含一些消息显示的tag。struts-htmltaglib:包含用来生成动态HTML用户界面和窗体的tag。struts-logictaglib:包含的tag用来管理根据条件生成输出文本,和其它一些用来控制的信息。struts-templatetaglib包含的tag用来定义模板机制。BeanTaglib用于定义新bean、访问bean及其属性的标记在struts-bean.tld中定义了它的标记库描述器BeanTaglib主要功能创建和复制bean的标记脚本变量定义标记bean翻译标记消息国际化标记Bean复制标记(bean:define)可定义新bean,可复制现有bean,还可从现有bean复制属性。定义新字符串常数将现有的bean复制到新定义的bean对象复制现有bean的属性来创建新的beanbean:define标记属性:Id新定义的bean脚本变量名称,必须设置Type定义引入脚本变量的类Value为id属性定义的脚本变量分配一个新的对象bean:define标记属性:Name目标bean的名称。若value属性没有设置,这个属性就必须设置propertyName属性定义的bean的属性名称,用来定义新的beanScope源bean的作用域。若没有设置,搜索范围是从页作用域到应用程序作用域toScope目标bean的作用域。若没有设置,默认值是页作用域举例定义一个bean:bean:defineid=testvalue=thisisatest/源bean在页作用域中被拷贝到请求作用域中的另一个bean:bean:defineid=targetBeanname=sourceBeanscope=pagetoScope=request/脚本变量的标记从多种资源中定义和生成脚本变量,这些资源包括cookie,请求参数,HTTP标头等等。脚本变量的标记属性:Id脚本变量和要定义的页作用域属性的名称Namecookie/标头/参数的名称Value如果没有匹配的cookie或数值,就返回这个属性指定的默认值脚本变量的标记属性:multiple如果这个属性设置了任意一个数值,所有匹配的cookie都会被积累并存储到一个Cookie[](一个数组)类型的bean里若无设置,指定cookie的第一个值将作为Cookie类型的值举例bean:cookieid=myCookiename=userName/脚本变量名称是myCookie,用来创建这个属性的cookie的名称是userName。bean:headerid=myHeadername=Accept-Language/脚本变量名称是myHeader,请求标头的名称是Accept-Language.举例bean:parameterid=myParametername=myParameter脚本变量名称是myPatameter,它保存的请求参数的名称也是myParameter逻辑标记Struts逻辑标签库包含的标记能够有条件地产生输出文本在对象集合中循环从而重复地产生输出文本,以及应用程序流程控制它也提供了一组在JSP页中处理流程控制的标记逻辑标记封装在文件名为struts-logic.tld的标记包中逻辑标记库的功能条件逻辑重复转发/重定向响应条件逻辑标记第一类可以比较下列实体与一个常数的大小第二类在计算标记体之前判断特定的项目是否存在第三类根据模板匹配的结果检查标记体的内容第一类条件逻辑标记equal如果常数与被定义的实体相等,返回truenotEqual如果常数与被定义的实体不相等,返回truegreaterEqual如果常数大于等于被定义的实体,返回true第一类条件逻辑标记lessEqual如果常数小于等于被定义的实体,返回truelessThan如果常数小于被定义的实体,返回truegreaterThan如果常数大于被定义的实体,返回true举例判断名为name的请求参数的值是否是SomeName。logic:equalparameter=namevalue=SomeNameTheenterednameisSomeName/logic:equal举例判断在页的作用域中是否有一个名为bean的bean,它有一个prop属性,这个属性的值是否大于7。如果这个属性能够转化为数值,就进行数值比较,否则就进行字符串比较。logic:greaterThanname=beanproperty=propscope=pagevalue=7Thevalueofbean.Propisgreaterthan7/logic:greaterThan第二类条件逻辑标记logic:presentlogic:notPresent第三类条件逻辑标记logic:matchlogic:notMatch重复标记logic:iterate它能够根据特定集合中元素的数目对标记体的内容进行重复的检查集合的类型java.util.Iteratorjava.util.Collectionjava.util.Mapjava.util.List数组举例Strlst是一个包含字符串的List,现在要将他内部的字符串全都显示在浏览器里logic:iterateid=elementname=strlstindexId=index%=(String)element)%/logic:iterate转发标记logic:forward标记能够将响应转发给重定向到特定的全局ActionForward上ActionForward的类型决定了是使用PageContext转发响应,还是使用sendRedirect将响应进行重定向此标记只有一个name属性,用来指定全局ActionForward的名称,例如:logic:forwardname=myGlobalForward/重定向标记logic:redirect标记是一个能够执行HTTP重定向的强大工具。根据指定的不同属性,它能够通过不同的方式实现重定向。它还允许开发人员指定重定向URL的查询参数。HTML标记StrutsHTML标记可以大致地分为以下几个功能:显示表单元素和输入控件显示错误信息显示其他HTML元素模板标记Struts模板标记可以大致地分为以下几个功能:插入标记template:insert放置标记template:put获得标记template:get
本文标题:struts框架详细介绍
链接地址:https://www.777doc.com/doc-4645359 .html