第一个Struts程序:

  在开发Struts程序之前,首先要导入额外的jar包,基本需求的是14个jar包,关于14个ja包是什么,有什么作用,此处不讲述。

  还要配置web.xml文件,注册Struts启动项,如下:

   <!--注册Struts启动项 -->
    <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>

  第一步创建界面,属于前端知识,不详述。

  第二步创建XXXAction类,注意创建的类所属的包,命名时末尾必须是XXX.....actions/action/struts/strut。在XXXAction类中,默认创建的一个执行方法是execute,方法名可以改,而且可以有不止一个执行方法,后面介绍,如果是方法名是execute,则该方法默认执行,不需要在struts.xml中注册。

   第二步注册XXXAction类,即创建struts.xml文件(名字不能改)并注册,在这个xml文件头中要加入

  <!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

  这个文件约束,它规定了struts.xml文件中能用的标签,它同时也是xml文件的根。这个约束文件的说明在struts2-core-XXX.jar中的struts-XX.dtd文件中。

  第四步,在struts.xml文件定义要求结果跳转的视图(页面),和创建对应的视图。

  struts.xml文件基本配置如下:

<struts>
      <package name="demo" namespace="/test" extends="struts-default">
          <action name="login" class="com.tongji.actions.LoginAction">
                <result name="success">/welcome.jsp</result>
          </action>
      </package>
  </struts>

  依次为包命名空间(包含继承关系)、action注册、结果跳转视图

  第一步创建页面的时候,要注意表单的action要写成:action="test/login.action",注意后缀名。

  第二步XXXAction中方法中要返回结果,例如return "success";如果是success,它是系统默认的返回值,注册时可以不写。

Struts相关的6个配置文件:

  1. struts-default.xml(重要):

    Struts2默认发的核心配置文件,其中定义了11种返回类型、35中拦截器、及拦截器栈,定了默认应用的拦截器栈,及默认注册的XXXAction类(ActionSupport),如果

    <action name="login" class="com.tongji.actions.LoginAction">

    中不定义class,则默认运行的XXXAction类就是这个ActionSupport类。

    这个配置文件不能修改,只能做参考查询用,在struts2-core-XXX.jar中。

  2. default.properties(重要):

    定义了Struts2中常用的默认值,比如

      struts.action.extension=action,,

    定义了页面请求时的action="test/login.action",这个action后缀。

    其他常量用到时再讲述,注意修改常量也不是在这里修改,这里也只是作参考,修改默认值时参考。在struts2-core-XXX.jar中/org/apache/struts2的包下。

  3. struts-plugin.xml:

    Struts2与第三方插件的整合配置文件,在Struts框架lib目录中所有以-plugin-结束的jar包中。

  4. struts.properties:

    用于修改常量的值,因为常量在struts.xml文件中也可以进行修改,所以一般不使用该文件。该文件手工创建,在src目录下。

  5. web.xml:

    用于用于设置常量、拓展Struts2等,但一般不这样使用,因为常量在struts.xml文件中也可以进行修改,但常量修改优先级web.xml最高。

  6. struts.xml(最重要):

    具体后面讲述,讲一点:常量修改有效性优先级为struts.xml<struts.properties<web.xml,但一般都在struts.xml中修改。

    <constant name="struts.action.extension" value="asp"></constant>

核心配置文件(struts.xml):

不要忘了文件约束:

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

配置一(基本配置):

<struts>
    <constant name="struts.action.extension" value="do"></constant>
    <package name="demo" namespace="/test" extends="struts-default">
        <action name="login" class="com.tongji.actions.LoginAction" method="doSome">
            <result>/welcome.jsp</result>
            <result name="tooSmall">/tooSmall.jsp</result>
            <result name="tooOld">/tooOld.jsp</result>
        </action>
        <action name="goRegister">
            <result name="success">/register.jsp</result>
        </action>
    </package>
</struts>

  constant修改default.properties中的常量;

  package包名(包含定位名称和继承关系);

  action定义响应的名称、对应的XXXAction类和响应方法(如果响应方法名称为execute,则为默认,可以不写method;

    如果响应方法只是为了返回success,例如页面跳转的情况,则可以不写对应类class,此时默认的XXXAction类为默认的ActionSupport类,

    这个类实现了返回success的execute响应方法,这个是在struts-default.xml中配置的)

  result定义结果跳转页面(如果响应方法返回的是success,则为默认,可以不写name)

配置二(转发和重定向):

  1. 页面之间的转发(type为返回类型,struts-default.xml配置的,dispatcher是默认的):

<struts>
    <package name="demo" namespace="/test" extends="struts-default">
        <action name="login" class="com.tongji.actions.LoginAction">
            <result type="dispatcher">/welcome.jsp</result>
        </action>
    </package>
</struts>

  2. 页面之间的重定向:

<struts>
    <package name="demo" namespace="/test" extends="struts-default">
        <action name="login" class="com.tongji.actions.LoginAction">
            <result type="redirect">
                <param name="location">/welcome.jsp</param>
                <param name="uname">${name}</param>
                <param name="uage">${age}</param>
            </result>
        </action>
    </package>
</struts>

  3. XXXAction之间的重定向:

<struts>
    <package name="demo" namespace="/test" extends="struts-default">
        <action name="login" class="com.tongji.actions.LoginAction">
            <result type="redirectAction">
                <param name="actionName">other</param>
                <param name="uname">${name}</param>
                <param name="uage">${age}</param>
            </result>
        </action>
        <action name="other" class="com.tongji.actions.OtherAction">
            <result>/welcome.jsp</result>
        </action>
    </package>
</struts>

  4. XXXAction之间的转发:
<struts>
    <package name="demo" namespace="/test" extends="struts-default">
        <action name="login" class="com.tongji.actions.LoginAction">
            <result type="chain">other</result>
        </action>
        <action name="other" class="com.tongji.actions.OtherAction">
            <result>/welcome.jsp</result>
        </action>
    </package>
</struts>

  共同要注意的点:

  当前端需要引用这些XXXAction中的属性时,页面之间的重定向这种情况下是:${param.name};其他情况下都可以是:${name}或${requestScope.name}

配置三(全局视图):

  1. 定义包全局视图:

<struts>
    <package name="demo" namespace="/test" extends="struts-default">
        <global-results>
            <result>/welcome.jsp</result>
            <result name="fail">/fail.jsp</result>
        </global-results>
        
        <action name="some" class="com.tongji.actions.LoginAction" method="doSome" />
        <action name="second" class="com.tongji.actions.LoginAction" method="doSecond">
            <result name="old">/old.jsp</result>
        </action>
    </package>
</struts>

  2 定义应用全局视图(使用包继承实现,被继承的包可以定义为抽象包):

<struts>
    <package name="myBase" extends="struts-default" abstract="true">
        <global-results>
            <result>/welcome.jsp</result>
            <result name="fail">/fail.jsp</result>
        </global-results>
    </package>
    
    <package name="demo" namespace="/test" extends="myBase">
        <action name="some" class="com.tongji.actions.LoginAction" method="doSome" />
        <action name="second" class="com.tongji.actions.LoginAction" method="doSecond">
            <result name="old">/old.jsp</result>
        </action>
    </package>
</struts>

配置四(多配置文件):

<struts>
    <!--<include file="struts-base.xml"></include>
    <include file="struts-actions.xml"></include>  -->
    
    <include file="struts-*.xml"></include>
</struts>

  file不要定义成"*.xml",不合理。

Struts2--课程笔记1的更多相关文章

  1. SpringMVC框架 课程笔记

    SpringMVC框架 课程笔记 第0章 SpringMVC框架的核心内容 1.SpringMVC 概述 2.SpringMVC 的 HelloWorld 3.使用 @RequestMapping 映 ...

  2. Linux内核分析课程笔记(一)

    linux内核分析课程笔记(一) 冯诺依曼体系结构 冯诺依曼体系结构实际上就是存储程序计算机. 从两个层面来讲: 从硬件的角度来看,冯诺依曼体系结构逻辑上可以抽象成CPU和内存,通过总线相连.CPU上 ...

  3. (1/18)重学Standford_iOS7开发_iOS概述_课程笔记

    写在前面:上次学习课程对iOS还是一知半解,由于缺乏实践,看公开课的视频有时不能很好地领会知识.带着问题去学习永远是最好的方法,接触一段时间iOS开发以后再来看斯坦福iOS公开课,又会有许多新的发现, ...

  4. Struts2学习笔记⑧

    今天是Struts2学习笔记的最后一篇文章了.用什么做结尾呢,这两天其实还学了很多东西,没有记录下,今天就查漏补缺一下. 文件上传与下载.FreeMarker以及昨天没做完的例子 文件上传与下载 文件 ...

  5. Struts2学习笔记①

    Struts2 学习笔记① 所有的程序学习都从Hello World开始,今天先跟着书做一个HW的示例. Struts2是一套MVC框架,使用起来非常方便,接触到现在觉得最麻烦的地方是配置文件.我的一 ...

  6. Andrew Ng机器学习课程笔记(五)之应用机器学习的建议

    Andrew Ng机器学习课程笔记(五)之 应用机器学习的建议 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7368472.h ...

  7. Andrew Ng机器学习课程笔记--week1(机器学习介绍及线性回归)

    title: Andrew Ng机器学习课程笔记--week1(机器学习介绍及线性回归) tags: 机器学习, 学习笔记 grammar_cjkRuby: true --- 之前看过一遍,但是总是模 ...

  8. Andrew Ng机器学习课程笔记--汇总

    笔记总结,各章节主要内容已总结在标题之中 Andrew Ng机器学习课程笔记–week1(机器学习简介&线性回归模型) Andrew Ng机器学习课程笔记--week2(多元线性回归& ...

  9. Andrew 机器学习课程笔记

    Andrew 机器学习课程笔记 完成 Andrew 的课程结束至今已有一段时间,课程介绍深入浅出,很好的解释了模型的基本原理以及应用.在我看来这是个很好的入门视频,他老人家现在又出了一门 deep l ...

  10. 操作系统学习笔记----进程/线程模型----Coursera课程笔记

    操作系统学习笔记----进程/线程模型----Coursera课程笔记 进程/线程模型 0. 概述 0.1 进程模型 多道程序设计 进程的概念.进程控制块 进程状态及转换.进程队列 进程控制----进 ...

随机推荐

  1. 前端环境安装(node.js+npm+grunt+bower)

    前端开发环境安装(本教程不带开发工具的安装教程,只是环境安装) 本人机器环境win7 64位. 一.node.js安装 进入官网下载node.js文件,http://www.nodejs.org/ 2 ...

  2. wpf为ListBox添加渐变

    <Style.Triggers> <Trigger Property="ListBox.AlternationIndex" Value="1" ...

  3. sublime插件(配合nodejs环境)

    一.首先先安装nodejs,从nodejs官网下载 www.nodejs.cn 下载完成后直接安装,选择npm package版本的进行安装,安装完成后无需配置环境变量,nodejs会自动进行配置. ...

  4. 用SqlBulkCopy批量插入数据到SqlServer数据库表中

    首先创建一个数据库连接类:SQLHelper using System; using System.Collections.Generic; using System.Linq; using Syst ...

  5. SQLServer中的变量:局部变量,全局变量

    SQLServer中的全局变量   变量 Transact-SQL语言中有两种形式的变量,一种是用户自己定义的局部变量,另外一种是系统提供的全局变量.局部变量 局部变量是一个能够拥有特定数据类型的对象 ...

  6. Activiti(工作流)学习资源总结

    刚进公司第一个项目就是oa项目,不会activiti,只得自学,途中搜集到的activiti学习资源总结 1.activiti初体验 http://blog.csdn.net/bluejoe2000/ ...

  7. 闭包&装饰器详解

    闭包 先不着急看闭包的定义,让我们从一段示例代码开始.如果将上一个示例稍微修改下: >>> def outer(): ... x = 1 ... def inner(): ... p ...

  8. eclipse怎么连接到MySQL中的表!!!!!

    简介: 用eclipse编写的好的代码,我们怎么才能连接到数据库呢?对于初学者,特别是在连接数据库这块经常会发生一些莫名的错误,一般来说,归根是我们连接数据库这一过程发生错误.那么我们如何来解决呢?那 ...

  9. day01(RESTful Web Service、SVN)

    今日大纲 搭建SSM环境 基于SSM环境实现用户管理系统 学习RESTful Web Service 学习SVN 统一开发环境 JDK1.7 32? 64? -- 64 Eclipse 使用4.4.1 ...

  10. Windows中 RabbitMQ安装与环境变量配置

    RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议.1:安装RabbitMQ需要先安装Erlang语言开发包.下载地址 ht ...