概述
struts.xml 文件
struts.xml 是 Struts2 最核心最常用的配置文件,下面详细介绍一下 struts.xml 中的元素和配置
package 元素
struts2 的配置文件中引入了面向对象的思想,使用了分包管理。易于管理动作类,便于模块化开发动作类
package 元素的属性
name:包的名称,必须写,并且名称唯一
extends:继承自哪个基础包,通常继承 struts-default 包
struts-default.xml 中定义着 struts-default 包
struts-default.xml 是在 struts.xml 之前加载的
abstract:把包声明为抽象包,抽象包就是用来被继承的
只要没有 元素的包,就可以声明为抽象包
namespace:命名空间。【访问路径 = 命名空间 + 动作名称】
namespace 详解
namespace 的默认取值是一个“”,不需要写 /
<package name="p2" extends="struts-default" namespace="/user">
<action name="add" class="com.web.action.UserAction" method="add">
<result name="success">/add.jsp</result>
</action>
<action name="delete" class="com.web.action.UserAction" method="delete">
<result name="success">/delete.jsp</result>
</action>
<action name="update" class="com.web.action.UserAction" method="update">
<result name="success">/update.jsp</result>
</action>
<action name="find" class="com.web.action.UserAction" method="find">
<result name="success">/find.jsp</result>
</action>
</package>
如果有两层命名空间,查找规则是从后向前查找
action 元素
配置动作,处理请求路径
action 元素的属性
name:动作名称,同一个命名空间下要求名称唯一
class:动作类全路径名
method:动作类中的方法名,默认是 public String execute()
方法的要求:
1.public 的
2.返回值必须是 String
3.没有参数
动作类 Action 的写法
####动作类的第一种写法
直接写一个 Action 类,不需要继承任何类,然后在 struts.xml 中配置
Action 类:
package com.web.action;
public class HelloAction {
public String sayHello() {
System.out.println("Success");
return "success";
}
}
struts.xml:
<package name="p1" extends="struts-default" namespace="/a">
<action name="hello" class="com.web.action.HelloAction" method="sayHello">
<result name="success">/success.jsp</result>
</action>
</package>
####动作类的第二种写法
写一个实现 Action 接口的动作类,然后实现 execute 方法
Action 类:
package com.web.action;
import com.opensymphony.xwork2.Action;
public class demoAction implements Action {
@override
public String execute() throws Exception {
return "success";
}
}
struts.xml:
<package name="p1" extends="struts-default" namespace="/a">
<action name="demo" class="com.web.action.demoAction">
<result name="success">/success.jsp</result>
</action>
</package>
Action 接口中有一些静态常量:SUCCESS,NONE,ERROR,INPUT,LOGIN,可以直接在返回值中使用
动作类的第三种写法(推荐)
写一个继承 ActionSupport 类的 Action 类
ActionSupport 是实现 Action 接口定的类
Action:
package com.web.action;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction3 extends ActionSupport {
public String login(){
return SUCCESS;
}
}
struts.xml:
<package name="p1" extends="struts-default" namespace="/a">
<action name="login3" class="com.web.action.LoginAction3" method="login">
<result name="success">/success.jsp</result>
</action>
</package>
默认动作类
struts-default.xml 中定义了默认动作类和方法
默认的动作类就是 com.opensymphony.xwork2.ActionSupport 这个类
struts.xml
<default-class-ref class="com.web.action.HelloAction"></default-class-ref>
<action name="hello" class="com.web.action.HelloAction" method="sayHello">
<result name="success">/success.jsp</result>
<!-- 没有配置 method 的 action,默认访问 execute 方法 -->
</action>
result 元素
为动作指定结果试图
result 元素的属性
name:逻辑视图的名称,对应着动作方法的返回值,默认值是 success
type:结果类型,指的就是用什么方式转到定义的页面,默认是 dispather 转发
dispatcher:使用请求转发,转向一个页面
redirect:使用重定向,转向一个页面
chain:转发到另一个相同或不同命名空间的动作
redirectAction:重定向到相同或不同命名空间的动作
result 元素中的 param 子元素
在转发或者重定向到不同包下的动作时,都要用到 result 元素的子元素 param
param 元素的作用:依赖注入
通过 struts-default.xml 中的 resultTypes 元素中配置可以看出,每个结果试图都是靠一个类来实现的
param 元素就是将配置参数注入到该类中
调用的事i对应类的 setter 方法进行注入
<package name="p5" extends="struts-default" namespace="/demo">
<action name="action1" class="com.web.action.Demo1Action">
<!-- result 的 name 可以不写 -->
<result>/success.jsp</result>
</action>
<!-- 转发到同一个包下的 action -->
<action name="action3" class="com.web.action.ChainAction1">
<result name="success" type="chain">action1</result>
</action>
<action name="action4" class="com.web.action.ChainAction1">
<result name="success" type="redirectAction">action1</result>
</action>
<action name="action5">
<result name="success" type="chain">
<!-- 依赖注入 -->
<param name="namespace">/a</param>
<param name="actionName">hello</param>
</result>
</action>
<action name="action6">
<result name="success" type="redirectAction">
<!-- 依赖注入 -->
<param name="namespace">/a</param>
<param name="actionName">hello</param>
</result>
</action>
</package>
最后
以上就是幽默枫叶为你收集整理的Struts2框架——struts-xml文件详解struts.xml 文件的全部内容,希望文章能够帮你解决Struts2框架——struts-xml文件详解struts.xml 文件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复