杰神之struts框架

struts2框架

  • 什么是struts2框架,它有什么用?

    • Struts 2是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。
    • 其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心
    • struts2=struts1+webwork;
    • struts2框架是apache产品。
    • struts2是一个标准的mvc框架。* javaweb中的model2模式就是一个mvc模式。 model2=servlet+jsp+javaBean
    • struts2框架只能在javaweb开发中使用的。
    • 使用struts2框架,可以简化我们的web开发,并且降低程序的耦合度。
  • XWork—它是webwork核心,提供了很多核心功能:

    • 前端拦截机(interceptor)
    • 运行时表单属性验证
    • 类型转换
    • 强大的表达式语言(OGNL – the Object Graph Navigation Language)
    • IoC(Inversion of Control反转控制)容器等
  • Strust2 核心功能

    • 允许POJO(Plain Old Java Objects)对象 作为Action
    • Action的execute 方法不再与Servlet API耦合,更易测试
    • 支持更多视图技术(JSP、FreeMarker、Velocity)
    • 基于Spring AOP思想的拦截器机制,更易扩展
    • 更强大、更易用输入校验功能
    • 整合Ajax支持

struts2快速入门

  • struts2的目录结构:

    • apps: 该文件夹包含了基于struts2 的示例应用,这些示例应用对于学习者是非常有用的;例子程序war后缀表示web压缩文件
    • docs : 该文件夹下包含了struts2 相关文档,包括struts2 快速入门、struts2的文档以及API文档等
    • lib : 该文件夹下包含了Struts2框架和核心类库,以及struts2第三方插件类库

    • 开发时没必要将lib目录下jar文件全部复制到项目中

    • src : 该文件夹下包含了Struts2框架的全部源代码

    • core 它是struts2的源代码

    • xwork-core struts2底层使用了xwork,xwork的源代码
  • 1.导入jar包

    • 下载struts2的jar包 struts-2.3.15.1-all 版本.
  • Struts运行必要jar包

    • struts2-core-2.3.1.1.jar:Struts 2框架的核心类库
    • xwork-core-2.3.1.1.jar:Command模式框架,WebWork和Struts2都基于xwork* ognl-3.0.3.jar:对象图导航语言(Object Graph Navigation Language),struts2框架通过其读写对象的属性
    • freemarker-2.3.18.jar:Struts 2的UI标签的模板使用FreeMarker编写
    • commons-logging-1.1.x.jar:ASF出品的日志包,Struts 2框架使用这个日志,包来支持Log4J和JDK 1.4+的日志记录。
    • commons-fileupload-1.2.2.jar: 文件上传组件,2.1.6版本后需要加入此文件
    • commons-io-2.0.1.jar:传文件依赖的jar包
    • commons-lang-2.5.jar:对java.lang包的增强
    • 开发中为了方便导入,可以使用app/struts2-blank.war 携带jar包
  • 注意:在struts2开发,一般情况下最少导入的jar包,去apps下的struts2-blank示例程序中copy。

  • 2.创建index.jsp,hello.jsp页面

    • 在index.jsp (发起请求页面)

          *   <a href="${pageContext.request.contextPath}/hello">第一次使用struts2</a>;`
      
    • hello.jsp (结果页面)

          *   <h1>你好,Struts2<h1>;
      
    • 结果页面显示 struts2框架访问成功
  • 3.对struts2框架进行配置

    • 1.web.xml文件中配置前端控制器(核心控制器)—–就是一个Filter

      • 目的:是为了让struts2框架可以运行。
      • 过滤器配置

        <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>

        <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
        </filter-mapping>`

    • 2.创建一个struts.xml配置文件 ,这个是struts2框架配置文件。

      • 目的:是为了struts2框架流程可以执行。
      • 名称:struts.xml
      • 位置:src下(classes下)
  • 4.创建一个HelloAction类
    * 要求,在HelloAction类中创建一个返回值是String类型的方法,注意,无参数。

    `public class HelloAction {
        public String say(){
            System.out.println("hello world");
            return "success"; // 结果页面命名
        }
    }`
  • struts2 的Action类似以前编写的Servlet程序,可以处理用户提交请求,但是Struts2的Action可以POJO对象

  • 5.在struts.xml文件中配置HelloAction

    `    <package name="default" namespace="/" extends="struts-default">
            <action name="hello" class="cn.itcast.action.HelloAction"
                method="say">
                <result name="success">/hello.jsp</result>
            </action>
        </package>`
  • 6.在index.jsp中添加连接,测试

    模仿struts2流程完成入门程序

  • index.jsp

  • hello.jsp
  • HelloAction
  • struts.xml
  • 1.创建一个Filter—-StrutsFilter
  • 2.在web.xml文件中配置StrutsFilter

    `    <filter>
            <filter-name>struts</filter-name>
            <filter-class>cn.itcast.filter.StrutsFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>struts</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>`
  • 3.在StrutsFilter中完成拦截操作,并访问Action中的方法,跳转到hello.jsp页面操作.

struts2的流程以及配置

  • 1.流程分析

    • 请求 –> StrutsPrepareAndExecuteFilter 核心控制器 –> Interceptors 拦截器(实现代码功能 ) –> Action 的execute –> 结果页面 Result
    • 拦截器 在 struts-default.xml定义
    • 执行拦截器 是 defaultStack 中引用拦截器
  • 2.关于手动配置struts.xml文件中提示操作

    struts.xml提示来自于 DTD约束,

    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
    • 如果可以上网,自动缓存dtd,提供提示功能
    • 如果不能上网,也可以配置本地DTD提示
  • 提示配置说明

  • 3.关联struts2源文件

    • 如果是com.opensymphony.xxx : 在xwork-core下
    • 如果是org.apache.struts2 : 在core下

struts2配置(重点)

1.关于Action的配置

  • 1. 作用:是用于声明一个包。用于管理action。

    • 1.name它用于声明一个包名,包名不能重复,也就是它是唯一的。
    • 2.namespace 它与action标签的name属性合并确定了一个唯一访问action的路径。
    • 3.extends 它代表继承的包名。
    • 4.abstrace 它可以取值为true/false,如果为true,代表这个包是用于被继承的。
  • 2 用于声明一个action

    • 1.name 就是action的一个名称,它是唯一的(在同包内) 它与package中的namespace确定了访问action的路径。
    • 2.class Action类的全名
    • 3.method 要访问的Action类中的方法的名称,方法无参数 ,返回值为String.如果不写,默认跳转到execute函数。
  • 3. 用于确定返回结果类型

    • 1.name 它与action中的method方法返回值做对比,确定跳转路径。
  • 关于action配置其它细节

    • 1.关于访问action的路径问题

    • 当action的配置是:

        <package name="default" namespace="/" extends="struts-default">
            <action name="hello" class="cn.itcast.action.DefaultAction">
                <result>/hello.jsp</result>
            </action>
        </package>
    • 此时输入: localhost:8080/struts2_day01_2/a/b/c/hello 也访问到了action。

    • 原因:struts2中的action被访问时,它会首先查找

      • 1.namespace=”/a/b/c” action的name=hello 没有.
      • 2.namespace=”/a/b action的name=hello 没有
      • 3.namespace=”/a” action的name=hello 没有
      • 4.namespace=”/” action的name=hello 查找到了.
      • 如果最后也查找不到,会报404错误.

Action

关于Action类的创建方式介绍

  • 有三种方式
  • 1.创建一个POJO类.

    • 简单的Java对象(Plain Old Java Objects):指的是没有实现任何接口,没有继承任何父类(除了Object)
    • 优点:无耦合。
    • 缺点:所以工作都要自己实现。
  • 在struts2框架底层是通过反射来操作

    • struts2框架 读取struts.xml 获得 完整Action类名* obj = Class.forName(“完整类名”).newInstance();
    • Method m = Class.forName(“完整类名”).getMethod(“execute”);* m.invoke(obj); 通过反射 执行 execute方法
  • 2.创建一个类,实现Action接口 com.opensymphony.xwork2.Action

    • 优点:耦合低。提供了五种结果视图,定义了一个行为方法。
    • 缺点:所有工作都要自己实现。
  • 3.创建一个类,继承自ActionSupport类。com.opensymphony.xwork2.ActionSupport

    • ActionSupport类实现了Action接口。
    • 优点 : 表单校验错误信息设置读取国际化信息 三个功能都支持.
    • 缺点 : 耦合度高。
    • 在开发中,第三种会使用的比较多.

关于action的访问方式

  • 1.通过设置method的值,来确定访问action类中的哪一个方法.

  • 2.使用通配符来简化配置

    • method=”{2}”>
    • 每一个星号对应一个大括号中的数字
  • 3.动态方法调用

    • 通过url动态指定调用Action哪个方法而无需配置

Result结果类型

  • Action处理请求后, 返回字符串(逻辑视图名), Struts2 根据逻辑视图名,决定响应哪个结果,需要在struts.xml 提供元素定义结果页面
  • 标签属性

    • 1.name 与action中的method的返回值匹配,进行跳转.
    • 2.type 作用:是用于定义跳转方式
    • 对于type属性它的值有以下几种:
      chain dispatcher redirect redirectAction stream
  • dispatcher:它代表的是请求转发,也是默认值。它一般用于从action跳转到页面。该结果类型有一个 location 参数, 它是一个默认参数

  • chain:它也相当于请求转发。它一般情况下用于从一个action跳转到另一个action
  • redirect:它代表的是重定向 它一般用于从action跳转到页面
  • redirect 结果类型接受下面这些参数:

    • location: 用来给出重定向的目的地
    • param: 用来表明是否把 location 参数的值视为一个 OGNL 表达式来解释. 默认值为 true
    • redirect 结果类型可以把响应重定向到一个外部资源
  • redirectAction: 它代表的是重定向 它一般用于从action跳转另一个action

    • actionName: 指定 “目的地” 动作的名字. 它是默认属性
    • namespace: 用来指定 “目的地” 动作的命名空间. 如果没有配置该参数, Struts 会把当前 Action 所在的命名空间作为 “目的地” 的命名空间
  • stream:代表的是服务器端返回的是一个流,一般用于下载
阅读更多
文章标签: struts
想对作者说点什么? 我来说一句

杰神之Java第一课

Java初识

lyj243719866 lyj243719866

2017-12-27 19:50:43

阅读数:185

struts框架PPT

2011年10月18日 511KB 下载

没有更多推荐了,返回首页

不良信息举报

杰神之struts框架

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭