Struts2的配置文件


1.1 struts.xml中的标签详解

1.1.1     constant标签

作用:

用于修改struts2中的常量

属性:

name:指定常量的key

value:指定常量的值

用法:

<!-- 开启开发者模式 -->

<constant name="struts.devMode" value="true"></constant>

1.1.2     package标签

作用:

在struts2的配置文件中引入了面向对象思想,使用了分包管理。易于管理动作类。便于模块化开发动作类。

属性:

name

包的名称。必须写。且必须唯一。

extends:

一般情况下需要继承struts-default包,但不是必须的。不过如果不继承的话,将无法使用struts2提供的核心功能。struts-default.xml中定义着struts-default这个包。而struts-default.xml是在我们的struts.xml加载之前加载。

abstract

把包声明为抽象包,抽象包就是用来被继承的。只要是没有<action>元素的包,就可以声明为抽象包。

namespace

名称空间。它的作用是把访问的URL按照模块化来管理。

名称空间的写法:

必须以/开头

后面可以是字母和数组的组合,也可只有字母。

如果有数字的话,数字不能作为/后面的第一个字符。

当我们指定了名称空间之后,访问的URL就变成了:

名称空间+action标签的name属性取值

例如:

/n1/hello.action

/customer/addCustomer.action

/customer/editCustomer.action

/linkman/findAllLinkMan.action

/linkman/removeLinkMan.action

名称空间的默认值是:""(struts2官方文档中提供的)

用法:

<package name="myDefault" extends="struts-default" abstract="true">

<!-- 此处就可以定义公共配置,该公共配置应该是当前应用中的公共配置 -->

</package>

<package name="p1" extends="myDefault" namespace="/n1">

<action name="hello" class="com.itheima.web.action.HelloAction" method="sayHello">

<result name="success" type="dispatcher">/success.jsp</result>

</action>

</package>

1.1.3     action标签

作用:

建立动作名称和动作类以及动作方法的对应关系。

属性:

name:指定的动作名称。和页面中url后面保持一种。注意此处不能后缀。动作名称必须唯一。

class:指定的是动作类的全限定类名。

method:指定的是动作方法名称

1.1 动作类的三种创建方式:

1.1.1     第一种:无侵入式创建(实际开发中基本不用)

/**

* 我们的第一个动作类

* 动作类的第一种创建方式:

* 无侵入式的创建。

*/

public class HelloAction {

/**

* @return

*/

public String sayHello(){

System.out.println(this);

System.out.println("HelloAction中的sayHello方法执行了。。。。");

return "success";

}

}

<action name="hello" class="com.itheima.web.action.HelloAction" method="sayHello">

<result name="success" type="dispatcher">/success.jsp</result>

</action>

1.1.2     第二种:实现Action接口的定义方式  (实际开发中用的也不多)

/**

* 动作类的第二种创建方式:

*  实现Action接口

*/

public class Hello2Action implements Action{

@Override

public String execute() throws Exception {

System.out.println("Hello2Action的execute方法执行了............");

return ERROR;

}

}

默认的动作方法是:execute(),所以可以不指定method属性

<action name="hello2" class="com.itheima.web.action.Hello2Action">

<result name="success" type="dispatcher">/success.jsp</result>

</action>

Action接口中的常量

SUCCESS:一般多用于成功

ERROR:一般多用于动作方法执行失败

LOGIN:一般多用于返回登录页面

NONE:一般用于不返回任何结果视图,和return null作用是一样的

INPUT:一般多用于数据回显,也是struts2中数据回显时的默认返回值。

1.1.3     第三种:继承ActionSupport (们实际开发中采用的方式)

/**

* 动作类的第三种创建方式:

*  继承ActionSupport

*/

public class Hello3Action extends ActionSupport{

}

<action name="hello3" class="com.itheima.web.action.Hello3Action">

<result name="success" type="dispatcher">/success.jsp</result>

</action>

1.1.4     默认动作类:ActionSupport类

通过struts-default.xml中我们知道默认的动作类是ActionSupport,所以如果实现该类的execute方法,则可以不用指定class和method属性

<action name="defaultAction">

<result name="success" type="dispatcher">/success.jsp</result>

</action>

1.2 配置action时使用通配符

1.2.1     原始全匹配配置方式:

<package name="user" extends="struts-default" namespace="/user" >

<action name="addUser" class="com.itheima.web.action.UserAction" method="addUser">

<result name="success">/success.jsp</result>

</action>

<action name="updateUser" class="com.itheima.web.action.UserAction" method="updateUser">

<result name="success">/success.jsp</result>

</action>

<action name="deleteUser" class="com.itheima.web.action.UserAction" method="deleteUser">

<result name="success">/success.jsp</result>

</action>

<action name="findUser" class="com.itheima.web.action.UserAction" method="findUser">

<result name="success">/success.jsp</result>

</action>

</package>

页面访问方式:

<a href="${pageContext.request.contextPath}/addUser.action">添加用户</a>

<a href="${pageContext.request.contextPath}/updateUser.action">修改用户</a>

<a href="${pageContext.request.contextPath}/deleteUser.action">删除用户</a>

<a href="${pageContext.request.contextPath}/findUser.action">查询用户</a>

Action类中的方法:

/**

* 用户管理的动作类

*/

public class UserAction extends ActionSupport {

public String addUser(){

System.out.println("添加了用户");

return SUCCESS;

}

public String updateUser(){

System.out.println("更新了用户");

return SUCCESS;

}

public String deleteUser(){

System.out.println("删除了用户");

return SUCCESS;

}

public String findUser(){

System.out.println("查询了用户");

return SUCCESS;

}

}

1.2.2     使用通配符访问方式

1.2.3        第一种:单一通配符

<package name="user" extends="struts-default">

<action name="*" class="com.itheima.web.action.UserAction" method="{1}">

<result name="success">/success.jsp</result>

</action>

</package>

页面访问方式和Action类中的方法不变

1.2.4        第二种:多个通配符组合使用

<package name="user" extends="struts-default">                                        <action name="*_*" class="com.itheima.web.action.{2}Action" method="{1}{2}">

<result name="success">/success.jsp</result>

</action>

</package>

页面访问方式:

<a href="${pageContext.request.contextPath}/add_User.action">添加用户</a>

<a href="${pageContext.request.contextPath}/update_User.action">修改用户</a>

<a href="${pageContext.request.contextPath}/delete_User.action">删除用户</a>

<a href="${pageContext.request.contextPath}/find_User.action">查询用户</a>

Action类中的方法不变。

1.2.5        第三种:动态方法调用

<!-- 开启动态方法调用 -->

<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>

<package name="user" extends="struts-default">

<action name="user" class="com.itheima.web.action.UserAction" >

<result name="success">/success.jsp</result>

</action>

</package>

页面访问方式:

<a href="${pageContext.request.contextPath}/user!addUser.action">添加用户</a>

<a href="${pageContext.request.contextPath}/user!updateUser.action">修改用户</a>

<a href="${pageContext.request.contextPath}/user!deleteUser.action">删除用户</a>

<a href="${pageContext.request.contextPath}/user!findUser.action">查询用户</a>

Action类中的方法不变。

04Struts2的配置文件的更多相关文章

  1. .Net Core MVC 网站开发(Ninesky) 2.3、项目架构调整(续)-使用配置文件动态注入

    上次实现了依赖注入,但是web项目必须要引用业务逻辑层和数据存储层的实现,项目解耦并不完全:另一方面,要同时注入业务逻辑层和数据访问层,注入的服务直接写在Startup中显得非常臃肿.理想的方式是,w ...

  2. ASP.NET MVC5+EF6+EasyUI 后台管理系统(64)-补充WebApi与Unity注入-配置文件

    系列目录 上一篇演示了WebApi利用Unity注入 很多人问我如何用配置文件来配置注入,本节演示如何利用配置文件来注入,道理是一样的,跳转到上一节下载源码一起来动手! 1.打开源码定位到文件Depe ...

  3. Spring配置文件标签报错:The prefix "XXX" for element "XXX:XXX" is not bound. .

    例如:The prefix "context" for element "context:annotation-config" is not bound. 这种 ...

  4. nginx服务器安装及配置文件详解

    nginx在工作中已经有好几个环境在使用了,每次都是重新去网上扒博客,各种编译配置,今天自己也整理一份安装文档和nginx.conf配置选项的说明,留作以后参考.像负载均衡配置(包括健康检查).缓存( ...

  5. C#开发中使用配置文件对象简化配置的本地保存

    C#开发中使用配置文件对象简化配置的本地保存 0x00 起因 程序的核心是数据和逻辑,开发过程中免不了要对操作的数据进行设置,而有些数据在程序执行过程中被用户或程序做出的修改是应该保存下来的,这样程序 ...

  6. 使用T4模板生成不同部署环境下的配置文件

    在开发企业级应用的时候,通常会有不同的开发环境,比如有开发环境,测试环境,正式环境,生产环境等.在一份代码部署到不同环境的时候,不同环境的配置文件可能需要根据目标环境不同而不同.比如在开发环境中,数据 ...

  7. 配置文件Java读写

    今天把配置文件的Bug修复了,总结一下Java配置文件如何读写 配置文件的格式 以.properties后缀结尾,内容不出现空格和双引号 //config.properties Driver=com. ...

  8. .NET平台开源项目速览(1)SharpConfig配置文件读写组件

    在.NET平台日常开发中,读取配置文件是一个很常见的需求.以前都是使用System.Configuration.ConfigurationSettings来操作,这个说实话,搞起来比较费劲.不知道大家 ...

  9. DotNet程序配置文件

    在实际的项目开发中,对于项目的相关信息的配置较多,在.NET项目中,我们较多的将程序的相关配置直接存储的.config文件中,例如web.config和app.config. .NET中配置文件分为两 ...

随机推荐

  1. iOS中的2x,3x问题

    iPhone的屏幕显示效果非常出色.刚进入市场时,iPhone是当时分辨率最高的手持电子设备.不过,iPhone 的显示空间并不大,比现代计算机的屏幕空间要小很多.最初几代iPhone的屏幕分辨率只有 ...

  2. Java语法基础练习2

    ---恢复内容开始--- 1.仔细阅读示例:EnumTest.java分析结果 代码: 运行结果: 分析:枚举类型就是一个类,枚举中的常量就是枚举类型中的实例,可把字符串转化为枚举:而且他本身是一个类 ...

  3. bzoj4806 炮——DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4806 看到这题首先会想到状压什么乱七八糟的,然而很难做: 其实,因为求的是方案数,所以并不需 ...

  4. OC:数组排序、时间格式化字符串

    数组排序 //不可变数组的排序 NSArray * arr = [NSArray arrayWithObjects:@"hellow", @"lanou", @ ...

  5. Rails 浅谈 ActiveRecord 的 N + 1 查询问题(copy)

    [说明:资料来自https://ruby-china.org/topics/32364] ORM框架的性能小坑 在使用ActiveRecord这样的ORM工具时,常会嵌套遍历model.例如,有两个m ...

  6. bzoj 2756 [SCOI2012]奇怪的游戏【二分+最大流】

    达成成就:为二分调参 !:多次memset的话要把数组大小开严格一点,否则会T 看到网格图,首先黑白染色. 注意到每次操作都是在一个黑格子和一个白格子上进行的,也就是说,最后黑格子数字和白格子数字和的 ...

  7. bzoj 3714: [PA2014]Kuglarz【最小生成树】

    参考:https://blog.csdn.net/aarongzk/article/details/48883741 没想到吧.jpg 来自题解: "如果用sum[i]表示前i个杯子底球的总 ...

  8. [App Store Connect帮助]七、在 App Store 上发行(2.2)设定价格与销售范围:将您的 App 以预订形式发布

    在首次将您的 App 发布至 App Store 前,您可以选择以预订形式提供该 App.在您的 App 发布以供下载之前,顾客可以查看您的产品页并订购您的 App.您的 App 一旦发布,顾客将会收 ...

  9. OKEX websocket API 连接Python范例

    因为 websocket-client 新版的各种大脑降级设计 很多功能无法使用需要安装老版本websocket-client的包才能正常使用 pip3 install websocket-clien ...

  10. 手机APP测试点总结(参考)

    参考链接:http://www.zengyuetian.com/?p=2305 手机APP测试点: 功能测试:多注意核心业务风险(如:注册.登录.付费.订单等) 兼容性测试:系统兼容性.硬件兼容性.软 ...