Struts2笔记1:--Struts2原理、优点、编程流程、6大配置文件以及核心配置文件struts.xml
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}&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的更多相关文章
- Struts2笔记02——Struts2 概述(转)
原始内容:https://www.tutorialspoint.com/struts_2/basic_mvc_architecture.htm Struts2是基于MVC设计模式的一种流行.成熟的We ...
- 【读书笔记】UEFI原理与编程(1)概述及开发环境的搭建
一.概述: 0.为什么会有这篇文章 说实在的,在2016初的时候,我就萌生了写一个操作系统的念头,但是这对于我一个菜鸟来说,犹如登天. 既然想了就去写,即使最后做不完,也不后悔. 抱着这样的念头,我开 ...
- 【学习笔记】Struts2之配置文件struts.xml
在默认情况下,Struts2只自动加载类加载路径下的struts.xml.default-struts.xml和struts-plugin.xml三类文件.但是随着应用规模的增大,系统中Action数 ...
- Struts2笔记——struts.xml配置详解
访问HelloWorld应用的路径的设置 * 在struts1中,通过<action path=“/primer/helloWorldAction.action”>节点的path属性指定访 ...
- struts2框架(1)---struts2入门
struts2框架 如果你之前在MVC模式的时候一直都是通过servlet,获取和返回数据,那么现在开始学习struts2框架, Struts是一个实现MVC设计模式的优秀的框架.它的许多优点我就不说 ...
- struts2总结三:struts2配置文件struts.xml的简单总结
一.struts中的常量constant的配置. 在struts2中同一个常量的配置有三种方式,第一种在struts.xml中,第二种在struts.properties中配置,第三种在web.xml ...
- struts2:struts.xml配置文件详解
1. 几个重要的元素 1.1 package元素 package元素用来配置包.在Struts2框架中,包是一个独立的单位,通过name属性来唯一标识包.还可以通过extends属性让一个包继承另一个 ...
- struts2.0中struts.xml配置文件详解
先来展示一个配置文件 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration ...
- Struts2初学 Struts.xml详解二
A.使用继承实现设置全局视图 package节点中还可以设置全局的视图,如: <global-results> <result name="e ...
随机推荐
- dbgrid控件如何能在左边显示行号?
procedure TMSWageEdit.aqyMSWageEditCalcFields(DataSet: TDataSet);begin inherited; with DataSet do ...
- delphi adoquery的post和UpdateBatch
delphi adoquery的post和UpdateBatch Post是确认当前的修改,而UpdateBatch是把已经确认但是没有存盘的数据写入数据库当ADOQuery的CursorType是c ...
- springmvc+mybatis 实现分页查询
为简化分页功能,设计了一个分页的JSP标签,只需要在页面使用分页标签,就可以完成所有页面的分页功能. 1. 项目结构和数据库设计 (1) 项目结构: (2) 数据库设计 2. PageModel.ja ...
- TFS(Team Foundation Server) 权限设置记录
环境: TFS2012 + win7 1.安装好TFS 2.创建系统用户组: TFSAdmins.TFSDevs.TFSUsers 分别为TFS管理人员组.TFS开发人员组.TFS普通用户组. 如下图 ...
- static变量 方法 类 和final
static变量:声明为static的变量实质上就是全局变量.当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量.静态变量与静态方法类似.所有此类实例共 ...
- 【spring学习笔记二】Bean
### bean的三种实例化方式: 1.构造 2.静态工厂 3.实例工厂 其中,工厂就是工厂的概念,工厂函数factor-method会返回她生产出来的产品类. 而构造初始化也可以选择初始化方式和销毁 ...
- win7下解决烦人的管理员权限问题
禁不住诱惑,用上win7了.可是,对system下的文件进行编辑时候,老是碰到什么必须拥有管理员权限才能进行操作,删除文件或者文件夹也遇到一样的问题.我就纳闷了,我不就是超级管理员吗?我怎么就没有权限 ...
- 51nod 1295 XOR key | 可持久化Trie树
51nod 1295 XOR key 这也是很久以前就想做的一道板子题了--学了一点可持久化之后我终于会做这道题了! 给出一个长度为N的正整数数组A,再给出Q个查询,每个查询包括3个数,L, R, X ...
- 洛谷 P1972 [SDOI2009]HH的项链 解题报告
P1972 [SDOI2009]HH的项链 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断 ...
- 【Asp.net入门03】第一个ASP.NET 应用程序-创建ASP.NET项目
本部分主要内容: 创建并运行Asp.net项目 web窗体 数据模型 调用代码隐藏方法 数据验证 1.操作步骤 第一步:启动Visual Studio 2013,然后从File(文件)菜单中选择New ...