A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Ljp 初级黑马   /  2018-2-1 14:32  /  846 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小石姐姐 于 2018-2-1 15:34 编辑

        >概述:
                ○ Struts2是一个MVC设计模式的web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(controller)来建立模型与视图的数据交互.
        >核心点:
                ○ 1.拦截器  interceptor
                ○ 2.Action
                ○ Ognl 与valuestack
        >现在开发中与Struts2比较类似的框架
                ○ Struts1  webwork  springMVC  jsf
        >使用Struts2框架
                ○ 1,导入jar包
                ○ 2,需要再web.xml文件中配置一个filter
                ○ 3,Struts.xml配置
                ○ 4,创建action来完成逻辑操作
        >对于Struts2框架的源代码主要使用三个部分:
                ○ Struts2核心部分源代码 org.apache.struts2xx
                        § Src\core\src\main\java
                a. struts2的xwork核心部分源代码
                src\xwork-core\src\main\java\com\opensymphony\xwork2
                b. struts2的插件的源代码
                src\plugins
                        
        >Struts2的执行流程:
                ○ 当通过浏览器发送一个请求
                ○ 会被StrutsprepareandExecuteFilter拦截
                ○ 会调用Struts2框架默认的拦截器(interceptor)完成部分功能
                ○ 在执行Action中操作
                ○ 根据Action中方法的执行结果来选择来跳转页面Resutl视图
                        一般管StrutsPrepareAndExecuteFilter 叫做前端控制器(核心控制器),只有配置了这个filter我们的strtus2框架才能使用。
                        Strtus2的默认拦截器(interceptor)它们是在struts-default.xml文件中配置
                        注意:这上xml文件是在strtus-core.jar包中。
                        默认的拦截器是在defaultStack中定义的。
        >Struts2的加载顺序:
                1. Struts2配置文件加载顺序
        
        第一个加载的是default.properties文件
                位置:strtus2-core.jar包   org.apache.struts2包下
                作用:主要是声明了struts2框架的常量
        第二个加载的是一批配置文件
                Strtus-default.xml
                位置:struts2-corl.jar
                作用:声明了interceptor  result  bean
                Strtus-plugin.xml
                位置:在strtus2的插件包中
                作用:主要用于插件的配置声明
                Strtus.xml
                位置:在我们自己的工程中
                作用:用于我们自己工程使用strtus2框架的配置
        第三个加载的是自定义的strtus.properties
                位置:都是在自己工程的src下
                作用:定制常量
        第四自定义配置提供
        第五加载的是web.xml配置文件
                主要是加载strtus2框架在web.xml文件中的相关配置.
        第六 bean相关配置
        ?
        重点掌握:
        1. Default.properties
        2. Struts-default.xml
        3. Struts-plugin.xml
        4. Strtus.xml
        5. web.xml
        >Struts2.xml文件配置的介绍:
                ○ Package配置
                        § 1.name属性:           作用:定义一个包的名称,必须唯一
                        § 2.namespace属性   作用:主要是与action标签的name属性联合使用来确定一个action的访问路径
                        § 3.extends属性         作用:指定继承自哪个包.一般值是Struts-default
                                □ Struts-default包是在Struts-default.xml文件中声明的
                        § 4.abstruct属性   它代表当前包是一个抽象的主要是用于被继承的.
                ○ Action 配置
                        § 1.name属性   作用:主要是与package的namespace联合使用来确定一个action的访问路径
                        § 2.class属性     作用:用于指示当前的action类
                        § 3.method属性 作用:用于指示当前的action类中哪个方法执行
                ○ Result 配置
                        § 主要是用于指示结果视图的
                        § 1.name属性     作用:  是与action类的method方法的返回值进行匹配,来确定跳转路径
                        § 2.type属性       作用:  是用于指定跳转方式

        >关于action配置中的class与method的默认值的问题:
                ○
                ○ 原因:Struts-default.xml文件中配置
                                □
                ○ 它的作用就是当一个请求来时,如果查找不到指定的class及对应的method就会执行actionsupport类中的execute方法.
                ○ 在这个类中execute默认值是success也就是说,result的name属性默认值是success默认的跳转方式是请求转发 dispatcher
        >常量配置:
                ○ Default.properties文件中定义了Struts2框架常用常量
                        § 定义常量的方式:
                                □ 可以在src下创建一个Struts.properties文件
                                □ 在web.xml中配置
                                □ 可以直接在Struts.xml文件中定义常量(推荐的)
                        § 注意:   后加重的配置文件中的常量会将先加载的常量覆盖
        >Struts2的action
                ○ action主要是完成业务逻辑操作,action替代servlet
                        § action学习主要有两点:
                                □ 创建一个action
                                □ 如何访问一个action
                                        >创建action类的方式(三种)
                                                >创建一个pojo类:
                                                        } Pojo(plani ordinary java object)简单的java对象
                                                        } pojo类就是没有实现任何接口没有继承任何类
                                                                – 优点:无耦合
                                                                – 缺点:所有的功能需要自己完成
                                                >创建一个类实现一个action接口:
                                                        } com.opensymphony.xwork2.action中的action类
                                                                – 在action接口中定义了五个常量,一个execute方法
                                                                        w
                                                                        w 五个常量(它们是默认的五种结果视图):
                                                                                w Error:错误的视图
                                                                                w Input:是Struts2框架中interceptor发现问题访问的视图
                                                                                w Login:是一个登陆视图,可以在权限操作中使用
                                                                                w None是代表null,什么都不做(也不会做跳转操作)
                                                                                w Success:这个一个成功视图
                                                                                
                                                                – 优点:耦合度低
                                                                – 缺点:还是需要自己来完成功能
                                                >创建一个类继承actionsupport类
                                                        } Com.oprnsymphony.xwork2.action support
                                                        } Actionsupport 类也实现了action接口
                                                                – 我们在开发中一般会使用这种方案
                                                                        w 优点:具有吩咐的功能,例如表单校验,错误信息设置等
                                                                        w 缺点:耦合度高
                                        >action的访问方式:
                                                >直接通过<action>标签配置,通过method来指定访问的方法,如果method没有,默认访问execute方法
                                                >使用通配符访问
                                                >
                                                >缺点:不建议使用过多的*号,会带来阅读障碍,不便于理解
                                                >使用*来简化操作方法,他对名称规范要求命名规范
                                        >动态方法调用(有bug不建议使用)
                                                >浏览器访问localhost:8080/…项目名!show
                                                        } 这个是strut2提供的动态方法调用
                                                                – 注意:对于Struts2的动态方法滴啊用,想要使用我们必须配置一个常量来开启动态方法调用
                                                                –
                                □ Strust2框架封装数据:
                                        >主要解决的问题:是在action中如何获取请求参数
                                                >两种方式
                                                        } 属性驱动
                                                                – 直接在action类中提供与请求参数匹配属性,提供get/set方法
                                                                – 在action类中创建一个javabean对其提供get/set,在请求是页面上要进行修改
                                                                – 例如user.username user.password  ognl表达式
                                                                        w 以上两种方法的优缺点:
                                                                                w 第一种比较简单,在实际操作我们需要将action的属性在复制给模型Javabean去操作
                                                                                w 第二种不需要再直接将值给javabean过程,因为直接将数据封装到了javabean中,它要求在页面上必须使用ognl表达式,就存在页面通用问题.
                                                        } 模型驱动
                                                                – 步骤:
                                                                        w 让action实现指定接口modeldrver
                                                                        w 实例化模型对象(就是要new出javabean)
                                                                        w 重写getmodel方法将实例化的模型返回
                                                                        w
                                                                                w 对于模型驱动与属性驱动对比,在实际开发中使用较多,
                                                                                        w 模型驱动缺点:
                                                                                                w 只能针对一个模型数据进行封装
        >总结:
                ○ 关于Struts2框架的环境搭建
                ○ 关于Struts2框架的配置
                ○ 关于Struts2框架请求参数的封装
                ○ 关于Struts2的路径跳转
                        § 关于action访问的配置
                                □ <package name="" namespace="">
                                        ><action name="" class="" method="">
                                                ><result name="" type="">路径</result>
                                        ></action>
                                □ </package>
关于路径跳转问题:
        是通过<result>来配置跳转的路径
        它的name属性是与action中的方法的返回值进行比较的.
        他的type属性可以取哪些值
        
        默认值是dispatcher它代表的是请求转发
        redirect代表的是重定向 针对于jsp页面
        Chain 类似于请求转发,只不过是针对于action跳转
        redirectaction类似于重定向, 针对于action
路径跳转的配置:
        可以直接在<package>下创建全局的result
                <global-results>
                        <result name="" type=""></result>
                </global-results>



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马