我是靠谱客的博主 幽默枫叶,最近开发中收集的这篇文章主要介绍Struts2框架——struts-xml文件详解struts.xml 文件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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 文件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部