Struts2之访问路径

  上一篇已经和大家分享了关于Struts2命名空间和Action的三种创建方式,本篇我们接着命名空间的内容,来一起探讨一下关于Struts2的访问路径问题,何为访问路径,就是指当我们在浏览器输入地址,点击回车,向服务器发送请求,这个访问路径就是今天我们要讨论的知识点,我们以上一篇的访问路径为例,为大家分析一下Struts2访问路径的本质。对于这个url路径http://localhost:8080/Struts/hello/login,我来分析一下他的组成,http://这是http请求协议;localhost这是本地访问地址,等同于127.0.0.1,;8080:是我们本地服务器的访问端口;Struts:使我们的工程名称;hello:使我们的命名空间;login:是我们的命名空间下的Action名称。把这些组合在一起就是我们的Struts2 Action的请求方式,当然这里如果我们的命名空间下设置了默认Action,最后的Action名称可以没有。对于Struts2的访问路径就为大家介绍这么多,下面我们一起来学习一下DMI动态方法绑定和通配符的使用。

  首先我们先来探讨一下DMI动态方法绑定,在上一篇的内容里面我们访问Action中的方法的方式,均是通过在struts.xml文件里面默认设置好的,这样很不方便我们的接口调用人员使用,那如何进行动态方法绑定呢?其实很简单,就以上面的url路径为例,我们看一下如何在url端进行访问路径的动态绑定。上面的接口访问的是login Action下的login方法,我们就可以这样来写:http://localhost:8080/Struts/hello/login!login,这样我们的程序就可以动态进行Action访问方法绑定了,大家看出来吗?Struts2里面用!将Action和Action中的待访问方法进行区分。

  动态绑定是不是很简单,当然一些小伙伴可能感觉url地址里面加个“!”怪怪的,还有没有其他方法来进行动态方法绑定呢?答案是必须滴,我们还可以通过通配符配置,来完成上面的动态方法绑定。下面我们就用一个例子,来把今天学习的知识串联起来:

  

  首先看一下我们的struts.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>

    <constant name="struts.enable.DynamicMethodInvocation" value="true" /><!--在使用DMI动态方法调用时,设置为true,否则会出现调用异常问题-->
    <constant name="struts.devMode" value="true" />
    
    <!-- 常规Action配置 -->
    <package name="hell" namespace="/hell" extends="struts-default">
        <!-- 访问控制 -->
        <action name="index" class="com.edu.action.Hell">
            <result>
                /hello.jsp
            </result>
            <result name="error">
                /error.jsp
            </result>
        </action>
    </package>
    
    <!-- 使用通配符进行动态方法绑定的Action配置 -->
    <package name="user" namespace="/user" extends="struts-default">
        <!-- 访问控制 -->
        <action name="index" class="com.edu.action.UserAction">
            <result>
                /index.jsp
            </result>
        </action>
        <action name="*_*" class="com.edu.action.{1}Action" method="{2}">
            <result>
                /{2}.jsp
            </result>
        </action>
    </package>

    <!-- Add packages here -->

</struts>

  UserAction.class代码:

public class UserAction extends ActionSupport implements UserManage{

    public String add() {
        // TODO Auto-generated method stub
        return SUCCESS;
    }

    public String del() {
        // TODO Auto-generated method stub
        return SUCCESS;
    }

    public String getUser() {
        // TODO Auto-generated method stub
        return SUCCESS;
    }

    public String getUserList() {
        // TODO Auto-generated method stub
        return SUCCESS;
    }

    public String update() {
        // TODO Auto-generated method stub
        return SUCCESS;
    }
    
    @Override
    public String execute() throws Exception {
        // TODO Auto-generated method stub
        return SUCCESS;
    }
    
}

  Hell.class

public class Hell extends ActionSupport{

    public String execute() throws Exception {
        return SUCCESS;
    }
    
    public String addLogin(){
        return ERROR;
    }
}

  下面我们就可以进行测试了,http://localhost:8080/Struts2/user/User_add

  

  下面我们来一起分析一下上面的请求地址:http://localhost:8080/Struts2/user/User_add,命名空间之前的部分我就不再赘述,如果你有不明白的地方,可以异步顶部,看一上面的解释,下面我们重点来看一下User_add,这是什么意思呢?我们向上看一下我们的struts.xml的配置,我们在Action name配置的是*_*,然后在Action绑定Action类是用的是第一个*识别到的参数,动态绑定方法时使用的是第二个*绑定的参数,这里的“_”就是Struts2进行参数绑定的分割符。有过sql操作的朋友一定对于*不陌生,我们现在就暂定它为占位。

  对于DMI动态方法绑定,这里我就以常规配置的Action为大家进行一下演示,访问路径为:http://localhost:8080/Struts2/hell/index!addLogin

  好了,到这里关于Struts2路径访问和DMI动态方法绑定以及通配符的知识就为大家介绍完了。后续内容持续更新中。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值