【java框架】Struts2(2) -- Struts2配置
2020-04-13 08:55:06来源:博客园 阅读 ()
【java框架】Struts2(2) -- Struts2配置
1. Struts2配置项细节
1.1.导入外部xml文件
在struts.xml文件中使用<include>标签,file属性上引入外部的.xml文件。
example.xml配置中又分隔了另外一个action,package一般不同。具体如下:
这样做的目的是为了拆分struts.xml中过多的action及杂乱的package包。
1.2.package包的配置
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!--package:包,包的作用是进行模块化管理; name:代表包名(必需写,且唯一),在整个配置中(包含其它的xml)名字是唯一的; namespace:代表包层级的路径, 外部访问路径:http://ip地址<:端口>/<上下文路径>/namespace/action的名称 extends(继承):它继承自一个父包,这个父包的名字叫做struts-default abstract:代表当前包是抽象的包(就是用来让别人继承的,在struts-default.xml中就有这种包--> <package name="default" namespace="/extra" extends="struts-default"> <action name="index" class="cn.yif.action.UserAction" method="execute"> <result name="success" type="dispatcher"> /success.jsp </result> </action> </package> </struts>
具体访问请求如下:
注意:
① 同一个包下面的action名称是不能重复的,不同包下的action可以重复;
② 包的名称不能够重复;
③ 包的命名空间不能够重复。
1.3.package包的查找过程
对应到struts.xml配置中,访问路径主要是在packageNameSpace和actionName上,如下以:http://localhost/system/abc/hello的访问为例,这里会把url分为两部分,
packageNameSpace:/system/abc,actionName:/hello。
这里首先会通过packageNameSpace在配置文件中查找对应的<package>标签,如果没有找到那么就让路径退一级,即/system进行查找,如果找到,那么就在该包中查找对应的<action>,不管有没有找到对应的<action>都不会再次进行查找。
最后找到”/”,这里也是一个包,表示根包,会在根包中继续进行查找。
注意:以上流程,如果所有的包中都没有找到对应<action>,那么都会在默认的包中<package namespace="">查找;
查询过程分析,举例说明如下:
现在我在浏览器上的路径是:/path1/path2/path3/hello
我们需要把这个看做两个部分:
Package路径部分: /path1/path2/path3
Action部分:hello
查询的时候先找路径:
/path1/path2/path3 没找到会找 /path1/path2
/path1/path2 没找到会找 /path1
/path1 没找到会找到根包 /
注意:路径部分找不到时才会到上层路径中找,如果找到了就不会再向上查找了;找到路径后找Action;Action找到直接使用,找不到会尝试找默认default包中的默认Action(在default.xml文件中)。
namespace="/":代表一个根包;
namespace="":代表一个默认包;
1.4.Struts2配置文件优先级
Struts2框架按照如下顺序加载struts2配置
default.properties 该文件保存在 struts2-core-2.3.7.jar 中 org.apache.struts2包里面
我们配置中很多常量都在这里面
struts-default.xml 该文件保存在 struts2-core-2.3.7.jar
我们学习的阶段,可以来这里查看很多配置的方式
struts-plugin.xml 该文件保存在struts-Xxx-2.3.7.jar 这里面是一些插件
上面三个配置文件,是Struts2默认的配置文件,我们不能够对修改它
struts.xml 该文件是web应用默认的struts配置文件
struts.properties 该文件是Struts的默认配置文件(一般不写在这里面)
web.xml 该文件是Web应用的配置文件(一般不用)
如果多个文件配置了同一个struts2 常量,则后一个文件中配置的常量值会覆盖前面文件配置的常量值
上述内容前面三种jar包,不允许修改,后面三种可以自己进行修改。
配置文件的优先级:都是从上往下优先级依次递增,越往下优先级越高。
1.5.Struts2常量配置
在default.properties中可以找到我们的常量配置。
Struts2.xml文件中常用的常量配置:
<!--开发模式;修改配置文件不需要重启服务器--> <!--指的struts.xml,其它的配置文件修改依然还是需要重启--> <!--自动重新加载配置文件,不一定会绝对成功。--> <!--struts.devMode = true;--> <constant name="struts.devMode" value="true" /> <!--系统使用编码--> <constant name="struts.i18n.encoding" value="UTF-8" /> <!--上传文件大小(byte)--> <constant name="struts.multipart.maxSize" value="2097152" /> <!--默认的后缀名--> <constant name="struts.action.extension" value="action,do,," />
1.6.Struts2默认配置
① <action>中的class默认class是继承于struts-default包中的<default-class-ref class="com.opensymphony.xwork2.ActionSupport" />,实际中不写默认使用该配置;
② <action>中的method默认配置是execute;
③ <result>标签中的name默认配置是success;
④ <result>标签中的type默认配置是dispather;
<package name="default" namespace="/" extends="struts-default"> <!-- action中哪些配置是默认配置,可以不写? method是可以不写的,默认是execute class是可以不写的,默认的是找的是(这个我们自己是可以改的) <default-class-ref class="com.opensymphony.xwork2.ActionSupport"/>在struts-default 中可以找到 name可以不写嘛?这个是必需的 result中哪些配置是默认配置,可以不写? name:可以不写,默认的是success type:可以不写,默认的类型是dispatcher(我们也可以改的)--> <action name="const"> <result>/success.jsp</result> </action> </package>
原文链接:https://www.cnblogs.com/yif0118/p/12688905.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash