Struts2原理(底层使用的是Servlet的doFilter方法):

Struts2优点:

第一个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">/welcome.jsp?uname=${name}&amp;uage=${age}</result> -->
<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>

配置三(全局视图):

  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:--Struts2原理、优点、编程流程、6大配置文件以及核心配置文件struts.xml的更多相关文章

  1. Struts2笔记02——Struts2 概述(转)

    原始内容:https://www.tutorialspoint.com/struts_2/basic_mvc_architecture.htm Struts2是基于MVC设计模式的一种流行.成熟的We ...

  2. 【读书笔记】UEFI原理与编程(1)概述及开发环境的搭建

    一.概述: 0.为什么会有这篇文章 说实在的,在2016初的时候,我就萌生了写一个操作系统的念头,但是这对于我一个菜鸟来说,犹如登天. 既然想了就去写,即使最后做不完,也不后悔. 抱着这样的念头,我开 ...

  3. 【学习笔记】Struts2之配置文件struts.xml

    在默认情况下,Struts2只自动加载类加载路径下的struts.xml.default-struts.xml和struts-plugin.xml三类文件.但是随着应用规模的增大,系统中Action数 ...

  4. Struts2笔记——struts.xml配置详解

    访问HelloWorld应用的路径的设置 * 在struts1中,通过<action path=“/primer/helloWorldAction.action”>节点的path属性指定访 ...

  5. struts2框架(1)---struts2入门

    struts2框架 如果你之前在MVC模式的时候一直都是通过servlet,获取和返回数据,那么现在开始学习struts2框架, Struts是一个实现MVC设计模式的优秀的框架.它的许多优点我就不说 ...

  6. struts2总结三:struts2配置文件struts.xml的简单总结

    一.struts中的常量constant的配置. 在struts2中同一个常量的配置有三种方式,第一种在struts.xml中,第二种在struts.properties中配置,第三种在web.xml ...

  7. struts2:struts.xml配置文件详解

    1. 几个重要的元素 1.1 package元素 package元素用来配置包.在Struts2框架中,包是一个独立的单位,通过name属性来唯一标识包.还可以通过extends属性让一个包继承另一个 ...

  8. struts2.0中struts.xml配置文件详解

    先来展示一个配置文件 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration ...

  9. Struts2初学 Struts.xml详解二

    A.使用继承实现设置全局视图    package节点中还可以设置全局的视图,如:     <global-results>         <result name="e ...

随机推荐

  1. [C/C++] C++ Primer学习笔记

    记录下自己掌握不清楚的概念和用法... Day 1 endl:具有输出换行的效果,并刷新与设备相关联的缓冲区. 注:在调试程序过程中插入的输出语句都应刷新输出流,否则可能会造成程序崩溃,将会导致程序出 ...

  2. 数据库优化之SQL语句优化-记录

    1. 操作符优化 (a) IN 操作符 从Oracle执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别: ORACLE试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查 ...

  3. sqlserver创建同义词

    https://blog.csdn.net/anderslu/article/details/53433841?utm_source=itdadao&utm_medium=referral 例 ...

  4. Ifter Party LightOJ - 1014(水题)

    题意:有C个人,给P个食物,每人吃Q个,剩L个.然后给你P和L(Q>L),让你求Q的可能情况,如果有多种可能,从小到大输出:如果不存在,输出impossible 就是求写出公式 遍历c求P-L的 ...

  5. Beta 完结撒花 —— 事后诸葛亮

    写在前面 林燊大哥 团队成员 短学号 名 2325 燊(队长) 1232 志豪 1131 喜源 2523 宏岩 2230 恺翔 2509 钧昊 2507 俞辛 2501 宇航 2502 柏涛 项目宣传 ...

  6. BZOJ4868 [Shoi2017]期末考试 【三分 + 贪心】

    题目链接 BZOJ4868 题解 最后的答案决定于最后一个公布的成绩 显然这个是答案关于这个时间点是呈凸单调的 三分一下这个时间点 时间点固定,在这个时间前的人都会产生不愉快度,在这个时间前的科目可以 ...

  7. BZOJ3688 折线统计 【dp + BIT】

    题目链接 BZOJ3688 题解 将点排序 设\(f[i][j][0|1]\)表示以第\(i\)点结尾,有\(j\)段,最后一段上升或者下降的方案数 以上升为例 \[f[i][j][0] = \sum ...

  8. Java之NIO,BIO,AIO

    Hollis知识星球的一些学习笔记,有兴趣的朋友可以微信搜一下 什么是NIO 什么是IO? 它是指计算机与外部世界或者一个程序与计算机的其余部分的之间的接口.它对于任何计算机系统都非常关键,因而所有 ...

  9. 【DP/数学】【CF1061C】 Multiplicity

    Description 给定一个序列 \(a\),求有多少非空序列 \(b\) 满足 \(b\) 是 \(a\) 的子序列并且 \(\forall~k~\in~[1,len_b],~~k \mid b ...

  10. BZOJ 3771 母函数裸题

    题目描述 我们讲一个悲伤的故事. 从前有一个贫穷的樵夫在河边砍柴. 这时候河里出现了一个水神,夺过了他的斧头,说: “这把斧头,是不是你的?” 樵夫一看:“是啊是啊!” 水神把斧头扔在一边,又拿起一个 ...