第一个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. 利用python 与 wmi 获取WINDOWS基本信息

    #!/usr/bin/env python3.5 # -*- coding:utf8 -*- import platform import subprocess import wmi def serv ...

  2. 实现table中checkbox复选框、以及判断checked是否被选中、js操作checkedbox选中

    上图是实现效果. 下面贴代码 表的第一行也就是<th>中的代码,onclick事件是实现全选或者全不选效果. <th> <input id="allboxs&q ...

  3. mysql5.5修改字符编码

    因为mysql版本问题,网上各种修改编码的方法都不行,最后找到下面这条,终于解决! [mysqld]下添加: character-set-server=utf8 collation-server=ut ...

  4. ASUS S46CB 刷BIOS

    1. 从ASUS官网下载要新的BIOS文件: 地址:https://www.asus.com.cn/Notebooks_Ultrabooks/S46CB/HelpDesk_Download/ 2. 开 ...

  5. centos6 + tomcat+ jdk配置步骤

    1. 获取tomcat, jdk安装文件 mkdir /media/smbdirmount -o username=pas,password=111111 //109.110.100.50/pas / ...

  6. docker openvswitch网络方案

    1. 测试环境 75机(10.11.150.75):Red Hat Enterprise Linux Server 7.0,无外网访问权限,已安装Docker Server 74机(10.11.150 ...

  7. 第八十三节,CSS3动画效果

    CSS3动画效果 学习要点: 1.动画简介 2.属性详解 3.简写和版本 本章主要探讨HTML5中CSS3的动画效果,可以通过类 Flash那样的关键帧模式控制运行. 一.动画简介     CSS3提 ...

  8. Java 反射 调用私有域和方法(setAccessible)

    Java 反射 调用私有域和方法(setAccessible) @author ixenos AccessibleObject类 Method.Field和Constructor类共同继承了Acces ...

  9. hdu_4742_Pinball Game 3D(cdq分治+树状数组)

    题目链接:hdu_4742_Pinball Game 3D 题意: 给你n个点,让你求三维的LIS,并且求出有多少种组合能达到LIS. 题解: 求三维的LIS,典型的三维偏序问题,x排序,解决一维,c ...

  10. php和js的转成整数的方法

    1.将变量转成整数类型php: intval(7/2)js:parseInt(7/2)2.向上取整,有小数就整数部分加1php: ceil(7/2)js: Math.ceil(7/2)3,四舍五入.p ...