当前位置:文档之家› SSH框架教程

SSH框架教程

SSH框架的学习一,Struts 21 为什么要学习Struts框架?1>Struts框架的好处:简化开发工作量,提高开发效率;采用了优秀的MVC思想2>如何学习:先掌握框架的使用,在了解内涵2 MVC模式在javaWeb中的应用1>MVC思想是根据组件职责不同,将系统分为三部分组成--M(Model) 负责业务处理--V(View) 负责与用户交互--C(Controller) 负责协调试图部分和模型部分协同工作2> 为什么使用MVC:易于扩展和升级3 Struts框架的处理流程浏览器发出struts请求—>请求进入struts控制器—>struts控制器解析XML配置文件—>控制器根据不同请求,调用不同的Action—>Action 调用DAO处理请求返回结果—>控制器根据结果调用试图组件,响应给用户4 Struts 历史Struts框架分为Struts1和Struts2 两者没有必然联系,Struts2 是以WebWork 框架核心(Xwork)为基础构建起来的5 Struts 基本使用1>引入核心开发包五个:commons-logging-1.0.4.jar ( 主要用于日志处理)struts2-spring-plugin-2.0.14.jar ( struts2整合spring需要的包)2>在web.xml 中配置struts控制器org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExcuteFilter3>根据要求编写Action 和JSP Action要继承ActionSupport4>在struts.xml定义Action和请求对应关系6 struts.xml 基本配置可以放在src下面1><struts> 根元素里面包含多个<package>元素2><package> 主要是为了将Action分组定义name用于指定包名;extends一般指定struts-default(在struts-default.xml中定义),里面包括struts2运行所需的必要组件3><action name=”” class=”” method=””>4><result> 一个<action>可以包括多个<result> 主要用于试图响应5>下面一个例子:7 为列表添加分页功能例如每页2个page =1;pageSize=2;int begin=(page-1)*pageSize+1;int end=page*pageSize;eg: select * from ( select rownum rn , c.* form COST c ) where rn between 1 and 6;8 利用Struts2标签+OGNL技术1>OGNL: (Object-Graph Navigation Language)对象图导航语言,主要用于访问对象的数据和方法。

2>OGNL主要由三部分组成--OGNL引擎:负责解析OGNL表达式,定位数据;--Root根存储区:负责存储要访问的目标对象;--Context变量存储区(Map 类型) 负责存放多个要访问的目标对象;3> OGNL 基本语法:A,访问Root区域对象基本语法:--访问简单数据:属性—> “name”;--访问数组和List集合:属性[index] —> “list[2]”;--访问Map集合:属性.Key —> “map.sex”;--访问方法:属性.方法( ) —> “list.size( )”;--创建List对象:”{ element1, element2}”;--创建Map对象:”#{key1 : value1 , key2 : value2}”;--创建对象: “ new 包名.构造方法” —> “ new int( totalPages )”B,访问Context区域对象基本语法:采用”#key”即可4> OGNL技术在Struts上面的应用在Struts中有一个ValueStack( )值栈数据对象,该对象存储了请求相关的所有的数据信息。

例如request session application action等,struts采用OGNL 工具对ValueStack进行操作。

--- xwork对OGNL进行了部分改造:答:将Root存储区改造成一个栈结构(CompoundRoot),当利用”属性”表达式访问时。

优先对栈顶对象查找,没有再去次栈顶查找,以此类推5>Struts标签的使用利用Struts2标签显示数据,需要为标签指定OGNL表达式,标签利用表达式定位ValueStack中的数据,进行相应的操作--- <debug> : 显示valueStack状态Eg:<s:debug></s:debug>--- <iterator> : 循环集合元素Eg:<s:iterator value=”new int(totalPages)” status=”i”/> 分页中用到了;<s:iterator value=”pageRows” var=”cost”/>注:value :指定循环集合或数组var:指定循环变量,会被存放到ValueStack的Context中。

status:指定循环状态变量,会被存放到ValueStack的Context中,该变量有count属性表示循环了多少个元素(1开始),index表示当前循环元素的索引(0开始)。

--- if…else…标签判断分支:<s:if test=””></s:if> test指定ognl判断表达式Eg:<s:if test=”#cost.status==0”>暂停</s:if><s:else>开通</s:else>--- <s:property value=””/> 显示数据标签value指定ognl表达式Eg:<s:property value=”#cost.id”/>--- <s:date name=”” format=””/> 将数据date格式化输出Eg:<s:date name=”#cost.startTime” format=”yyyy/MM/dd HH:mm:ss” /> 9 Action组件的相关使用1> Action 组件的原理客户发出action请求给struts控制器—> struts控制器会创建ValueStack对象—>struts控制器根据请求创建Action对象,并将Action压入ValueStack 的root栈顶(线程安全,不用考虑并发问题)—>struts控制器将请求相关的Request,Session对象放入到ValueStack的Context区域—>struts控制器执行Action对象的execute方法处理请求—>struts控制器根据execute结果生成响应信息输出—>请求处理完毕,销毁ValueStack和Action对象。

2>Action属性注入在<action>配置中,为Action对象的属性指定初始值,使用格式如下<action name=”” class=”” method=””><param name=”属性名”>属性值</param><result></result></action>注意:type类型如果你想再见跳转的页面需要Action的数据的话要用dispatcher,如果用redirect时候,将所有的数据删除了,jsp页面中也不能获取到应有的值了。

10 Result组件的相关使用1> 作用:负责生成响应试图内容。

Struts2框架提供了多种不同的Result组件类型,用于做不同形式响应,例如json数据响应,流数据响应,jsp页面响应等。

2> Result组件相关配置---声明定义<package><result-types><result-type name=”result类型” class=”result组件实现类”/> </result-types></package>3> Result组件相关配置---使用定义<action><result name=”action返回的标识符” type = “result类型”></result> </action>4> 掌握经常使用的Result组件--Jsp试图--dispatcher:以转发方式调用Jsp页面--redirect:以重定向方式调用Jsp页面<result name=”” type=”dispatcher/redirect”>Jsp页面</result>--Action试图--chain:以转发方式调用下一个Action--redirectAction:以重定向方式调用下一个Action相同命名空间的调用:<result type=”chain/redirectAction”>请求名</result>跨命名空间的调用:<result type=”chain/redirectAction”><param name=”actionName”>请求名</param><param name=”namespace”>/命名空间名</param></result>5> JSON Result组件主要负责Action的属性以JSON字符串格式输出,JSON Result的使用步骤:---引入struts2-json-plugin.jar。

---将<package>元素的extends继承”json-default”;---<result>使用配置---只返回Action中一个属性:<result type=”json”><param name=”root”>属性名</param></result>---返回Action中多个属性:<result type=”json”><param name=”includeProperties”>属性名1,属性名2,属性名3</param></result>---返回Action中的所以属性值<result type=” json” ></result>11 拦截器组件Struts2组件提供了大量的拦截器组件,如果不能满足开发者需求,可以自行定义,一般利用拦截器封装一些通用性的功能,例如请求参数给action赋值,文件上传,权限检查等;1> 拦截器的作用:拦截器可以在Action 和Result组件调用之前执行,也可以在其之后执行。

相关主题