【SSH快速进阶】——struts2调用action的三种方式

简介: 经过前段时间对struts2的学习与实践,总结了一下在struts2中调用action的三种方式。

1、直接调用



我前面的博客【SSH快速进阶】系列第一篇《【SSH快速进阶】——struts2简单的实例》采用的就是这种方式。

有两种情景:


(1) 在form中指定访问的action


<form action="userLogin">
    username:<input type="text" name="username" /><br>
    password:<input type="password" name="password" /><br>
    <input type="submit" value="submit" /><br>
 </form>   

struts.xml中的配置为:

    <struts>
        <package name="struts2" extends="struts-default">
            <action name="userLogin" class="com.danny.user.action.UserAction">
                <result name="success">/success.jsp</result>
                <result name="error">/error.jsp</result>
            </action>
        </package>          
    </struts>


这时,页面点击提交会直接访问UserAction.java中的execute方法:


    public String execute() {
        if("admin".equals(username) && "admin".equals(password))
        {
            return "success";
        }else{
            return "error";
        }
    }


(2) 直接在浏览器通过地址访问action:

比如输入 http://localhost:8080/struts2/index.action

对应的struts.xml为:

    <struts>
        <package name="struts2" extends="struts-default">
            <action name="index" class="com.danny.user.action.IndexAction">
                <result name="index">/index.jsp</result>
            </action>
        </package>          
    </struts>


这时,也会直接访问IndexAction.java中的execute方法:


public String execute() {
        return "index";
    }


2、在配置文件中指定action的方法名称


通过第一种访问action的方式可以发现一个弊端,每个action中只有一个execute方法,如果我想在一个action中处理多个请求呢? 下面这种方法就派上用场啦!


比如注册和登陆这两个场景,想在同一个action中处理,那么struts.xml可以这样配:


    <struts>
        <package name="struts2" extends="struts-default">
            <!--处理用户注册-->
            <action name="userRegister" class="com.danny.user.action.UserAction" method="Register">
                <result name="success">/registersuccess.jsp</result>
            </action>
            <!--处理用户登录-->
            <action name="userLogin" class="com.danny.user.action.UserAction" method="Login">
                <result name="success">/loginsuccess.jsp</result>
            </action>           
        </package>          
    </struts>


这样,在同一个action—UserAction中可以写两个方法 Register和Login:


public String Register(){
    //处理注册
    return "registersuccess";
}
public String Login(){
    //处理登录
    return "loginsuccess";
}


然后我们处理注册时,调用userRegister这个action;处理登录时,调用userLogin这个action即可。


3、通配符方式的调用


看了上面第二种方法,还会有一个问题:处理一个请求除了再action中建立相应的方法外,还需要在struts.xml中配置一个对应的action标签,这样下来,一个系统中会有多少个调用啊?struts.xml的复杂程度大大提高了。这是可以用这种方法来简化struts.xml的复杂程度。


同样以上面的注册和登录两个场景来举例。


struts.xml中可以这样配置:

    <struts>
        <package name="struts2" extends="struts-default">
            <action name="user_*" class="com.danny.user.action.UserAction" method="{1}">
                <result name="registersuccess">/registersuccess.jsp</result>
                <result name="loginsuccess">/loginsuccess.jsp</result>
            </action>
        </package>          
    </struts>


UserAction不变,还是对应的Register和Login两个方法。


在action的name属性中,user_后面是 * 号,method的值是{1},代表前面第一个通配符的内容,当访问user_*时,会调用对应action(这里是UserAction)中名为 * 的方法。


比如处理用户注册时访问user_Register,那么调用的就是UserAction中的Register方法;处理用户登录时访问user_Login,那么调用的就是UserAction中的Login方法。


这种方法的好处就是,可以简化struts.xml的配置,同时还可以统一系统开发的标准,比如系统中处理用户的各种请求统一由名为“ user_* ”的action来处理,处理订单的各种请求统一由名为“ order_* “的action来处理。




【 转载请注明出处——胡玉洋《【SSH快速进阶】——struts2调用action的三种方式》】


相关文章
|
8月前
|
存储 Java 应用服务中间件
SSH开发模式——Struts2进阶
SSH开发模式——Struts2进阶
|
11月前
|
前端开发 Java 网络安全
《SSH框架》Struts2
Struts(金属支架),在程序中表示起支撑作用的通用程序代码,Struts2是在Struts1框架的基础上融合了WebWork优秀框架升级得到的。
|
网络安全 数据安全/隐私保护
SSH远程免密登录的两种方式
服务器之间经常需要有一些跨服务器的操作,此时就需要我们在一台服务器上登录到另外一台服务器,若是人为操作时我们都可以每次输入密码进行远程登录,但要是程序需要跨服务器时,每次输入密码就不现实了,所以我们需要免密登录
8823 0
SSH远程免密登录的两种方式
|
网络安全 开发工具 数据安全/隐私保护
ssh方式已经out了,AccrssToken了解下
在过往中,我们都是本地配置ssh生成key,然后在github的ssh中粘贴本地生成的key,这种方式其实挺繁琐的,如果我换一台电脑,貌似我又需要重复一遍这样的操作
125 0
ssh方式已经out了,AccrssToken了解下
|
缓存 Java 网络安全
SSH开发模式——Struts2(第三小节)
SSH开发模式——Struts2(第三小节)
74 0
|
开发框架 网络安全
SSH开发模式——Struts2(第二小节)
SSH开发模式——Struts2(第二小节)
103 0
|
前端开发 Java 数据库连接
SSH开发模式——Struts2(第一小节)
SSH开发模式——Struts2(第一小节)
142 0
SSH开发模式——Struts2(第一小节)
|
Linux 网络安全 数据安全/隐私保护
SSH登录树莓派、远程桌面登录树莓派以及VNC方式登录树莓派
SSH登录树莓派、远程桌面登录树莓派以及VNC方式登录树莓派
296 0
SSH登录树莓派、远程桌面登录树莓派以及VNC方式登录树莓派
|
网络安全 开发工具 数据安全/隐私保护
使用 SSH 方式拉取代码
使用 SSH 方式拉取代码
1509 0
使用 SSH 方式拉取代码
|
Linux 网络安全 开发工具
git Lab ssh方式拉取代码失败
gitLab在linux上已经安装好了, 在配置项目的时候报如下异常
700 0
git Lab ssh方式拉取代码失败