struts2框架学习笔记2:配置详解

核心配置文件:

<?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:将Action配置封装.就是可以在Package中配置很多action.
            name属性: 给包起个名字,起到标识作用.随便起.不能其他包名重复.
            namespace属性:给action的访问路径中定义一个命名空间
            extends属性(必填): 继承一个 指定包(这里使用的是默认)
            abstract属性(补充):包是否为抽象的; 标识性属性.标识该包不能独立运行.专门被继承
      -->
    <package name="hello" namespace="/hello" extends="struts-default" >
        <!-- action元素:配置action类
                name属性: 决定了Action访问资源名,注意不是标识作用
                class属性: action类的完整类名
                method属性: 指定调用Action类中的哪个方法来处理请求
         -->
        <action name="HelloAction" class="hello.HelloAction" method="hello" >
            <!-- result元素:结果配置
                    name属性: 标识结果处理的名称.与action方法的返回值对应.
                    type属性: 指定调用哪一个result类来处理结果,默认使用转发dispatcher.
                    标签体:填写页面的相对路径
            -->
            <result name="success" type="dispatcher" >/hello.jsp</result>
        </action>
    </package>
</struts>

引入其他配置文件:

    <include file="dynamic/struts.xml"></include>

src下的相对路径

常量配置:

在struts2核心包下有默认的properties配置文件,当我们需要修改的时候,

第一种方式示例:

自己新建一个配置文件即可

struts.properties:

struts.i18n.encoding=UTF-8

第二种方式示例:

在核心配置文件中写:

    <constant name="struts.i18n.encoding" value="UTF-8"></constant>

第三种方式示例:

在web.xml种:

  <context-param>
      <param-name>struts.i18n.encoding</param-name>
      <param-value>UTF-8</param-value>
  </context-param>

实际开发中,只使用第二种,其他两种了解即可

其他常量配置(在核心配置文件中):

    <!-- i18n:国际化. 解决post提交乱码(不解决get乱码,自行解决) -->
    <constant name="struts.i18n.encoding" value="UTF-8"></constant>
    <!-- 指定访问action时的后缀名,必须访问Action.do
        http://localhost:8080/struts2/hello/HelloAction.do
    -->
    <constant name="struts.action.extension" value="do"></constant>
    <!-- 指定struts2是否以开发模式运行
            1.热加载主配置.(不需要重启即可生效)
            2.提供更多错误信息输出,方便开发时的调试
     -->
    <constant name="struts.devMode" value="true"></constant>

还有几个常量配置在Spring中使用,这里暂不介绍

动态方法调用:

这里一个Action中有多个方法:

package dynamic;

//动态方法调用
public class Demo1Action {
    public String add() {
        System.out.println("添加用户!");
        return "success";
    }

    public String delete() {
        System.out.println("删除用户!");
        return "success";
    }

    public String update() {
        System.out.println("修改用户!");
        return "success";
    }

    public String find() {
        System.out.println("查找用户!");
        return "success";
    }

}

当前包下新建XML文件,并在主配置文件中引入

(第一种方式不符合开发规范)

<?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>
        <!--动态方法调用方式1(不建议)
         配置动态方法调用是否开启常量
                默认是关闭的(false),需要开启
        配置完成后访问....../dynamic/Demo1Action!add即可(!格式固定)
         -->
    <constant name="struts.enable.DynamicMethodInvocation" value="false"></constant>

        <package name="dynamic" namespace="/dynamic" extends="struts-default" >
            <!-- 动态方法调用方式2:通配符方式(推荐)
                 使用{1} 取出第一个星号通配的内容
                 访问:/dynamic/Demo1Action_add
              -->
            <!--第一种方式
            <action name="Demo1Action" class="dynamic.Demo1Action">
            -->
            <action name="Demo1Action_*" class="dynamic.Demo1Action" method="{1}" >
                <result name="success" >/hello.jsp</result>
            </action>
        </package>
</struts>

Struts2的默认配置:

package default;

//测试默认配置
public class Demo2Action {

    public String execute(){

        System.out.println("default");

        return "success";
    }

}
<?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="default" namespace="/default" extends="struts-default" >
            <!-- 找不到包下的action,会使用Demo2Action作为默认action处理请求 -->
            <default-action-ref name="Demo2Action"></default-action-ref>
            <!-- method的默认属性:execute  -->
            <!-- result的name默认属性:success  -->
            <!-- result的type默认属性:dispatcher 转发  -->
            <!-- class默认属性:com.opensymphony.xwork2.ActionSupport -->
            <action name="Demo2Action">
                <result>/hello.jsp</result>
            </action>
        </package>
</struts>

这里没有配置method,但是默认寻找execute方法

class默认值:找到这个类并调用它的execute方法,这个方法直接返回"success"

原文地址:https://www.cnblogs.com/xuyiqing/p/8455971.html

时间: 2024-10-09 11:15:18

struts2框架学习笔记2:配置详解的相关文章

Struts2学习笔记二 配置详解

Struts2执行流程 1.简单执行流程,如下所示: 在浏览器输入请求地址,首先会被过滤器处理,然后查找主配置文件,然后根据地址栏中输入的/hello去每个package中查找为/hello的namespace,然后在包下寻找名为HelloAction的action,反射创建控制器HelloAction对象,调用method指定的方法hello,拿到返回值“success”,去result的配置节找success对应的页面(hello.js),呈现给用户. 2.Struts的架构,具体参考这里

Struts2学习笔记(二)——配置详解

1.Struts2配置文件加载顺序: default.properties(默认常量配置) struts-default.xml(默认配置文件,主要配置bean和拦截器) struts-plugin.xml(配置插件) struts.xml(配置action或者常量等) struts.properties(常量配置) web.xml(配置JavaEE,如:监听器和过滤器) 2.Struts2配置文件详解 1)default.properties default.properties是Struts

Redis学习笔记4-Redis配置详解

原文:  http://blog.csdn.net/mashangyou/article/details/24555191 在Redis中直接启动redis-server服务时, 采用的是默认的配置文件.采用redis-server   xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务.按照本Redis学习笔记中Redis的按照方式按照后,Redis的配置文件是/etc/redis/6379.conf.下面是Redis2.8.9的配置文件各项的中文解释. 1 #daemon

IOS开发学习笔记(2)-----UIButton 详解

1. [代码][C/C++]代码     //这里创建一个圆角矩形的按钮    UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];    //    能够定义的button类型有以下6种,//    typedef enum {//        UIButtonTypeCustom = 0,          自定义风格//        UIButtonTypeRoundedRect,        

(转)struts2.0配置文件、常量配置详解

一.配置: 在struts2中配置常量的方式有三种: 在struts.xml文件中配置 在web.xml文件中配置 在sturts.propreties文件中配置 1.之所以使用struts.propreties文件配置,是因为为了保持与WebWork的向后兼容 2.在实际开发中,在web.xml中配置常量相比其他两种,需要更多的代码量,会降低了web.xml的可读性 3.通常推荐在struts.xml文件中配置struts2的常量,而且便于集中管理 sturt2中搜索加载常量的顺序是: str

IOS开发学习笔记(1)-----UILabel 详解

1. [代码][C/C++]代码     //创建uilabelUILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(20, 40, 280, 80)];//设置背景色label1.backgroundColor = [UIColor grayColor];//设置taglabel1.tag = 91;//设置标签文本label1.text = @"Hello world!";//设置标签文本字体和字体大小label1.

struts2的执行流程与配置详解

本章主要讲解Struts的执行流程以及Struts的配置以及访问servletApi 全部代码下载: github链接:链接 写文章不易,欢迎大家采我的文章,以及给出有用的评论,当然大家也可以关注一下我的github:多谢: 1.Struts的执行流程: 1.服务器启动时: 加载项目web.xml 创建Struts核心过滤器对象, 执行StrutsPrepareAndExecuteFilter的doFilter 的 init()方法: 在StrutsPrepareAndExecuteFilter

Struts2学习笔记(三)——Action详解

Action是用于处理请求操作的,它是由StrutsPrepareAndExceuteFilter分发过来的. 1.Action的创建方式 1) POJO类(PlainOldJavaObjects简单的Java对象),不需要继承任何父类,实现任何接口 1 public class TestAction { 2 public String execute() { 3 return "success"; 4 } 5 } 这种方式是Struts2框架通过反射来实现的,步骤: struts2框

j2ee开发之struts2框架学习笔记

Struts2框架技术重点笔记 1.Struts2 是在webwork基础上发展而来. 2.Struts2 不依赖struts API和 servlet API 3.Struts2提供了拦截器,表现层技术:jsp +freeMarket+ velocity 4.Struts2可以对指定的方法进行校验,提供了全局范围,包范围和action范围的国际化资源文件的管理实现. 环境搭建:找到对应的jar包 编写struts的配置文件 <?xml version="1.0" encodin

CoAP学习笔记——CoAP格式详解

0 前言 CoAP是受限制的应用协议(Constrained Application Protocol)的代名词.在当前由PC机组成的世界,信息交换是通过TCP和应用层协议HTTP实现的.但是对于小型设备而言,实现TCP和HTTP协议显然是一个过分的要求.为了让小设备可以接入互联网,CoAP协议被设计出来.CoAP是一种应用层协议,它运行于UDP协议之上而不是像HTTP那样运行于TCP之上.CoAP协议非常小巧,最小的数据包仅为4字节. 更多博文请参考--[物联网学习笔记--索引博文] 1 Co