美文网首页struts2
struts2 action的使用

struts2 action的使用

作者: DouDouZH | 来源:发表于2018-05-06 16:35 被阅读0次

    一、action的三种编写方式

    1、普通类,不继承任何类,不实现任何接口
    package cn.doudou.action;
    
    public class HelloAction {
        public String show(){
            return "success";
        }
    }
    
    2、实现action接口
    package cn.doudou.action;
    
    import com.opensymphony.xwork2.Action;
    
    public class HelloAction1 implements Action {
    
        @Override
        public String execute() throws Exception {
            
            return SUCCESS;
        }
    }
    
    3、继承ActionSupport(一般使用)
    package cn.doudou.action;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class HelloAction2 extends ActionSupport{
        @Override
        public String execute() throws Exception {
            // TODO Auto-generated method stub
            return SUCCESS;
        }
    }
    

    二、访问action的方法(重点)

    1、有三种方法实现
    第一种:使用action标签的method属性,这个属性里面写执行action的方法名

    HelloAction.java

    package cn.doudou.action;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class HelloAction2 extends ActionSupport{
        @Override
        public String execute() throws Exception {
            // TODO Auto-generated method stub
            System.out.println("success");
            return NONE;
        }
        public String add(){
            System.out.println("add----------");
            return NONE;
        }
        public String update(){
            System.out.println("update--------");
            return NONE;
        }
    }
    

    配置文件

    <?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="false" value="struts.enable.DynamicMethodInvocation"/>
        <constant value="true" name="struts.devMode"/>
            <package name="methoddemo" extends="struts-default" namespace="/">
                <!-- 在method里头写方法名称 -->
                <action name="addAction" class="cn.doudou.action.HelloAction2" method="add"></action>
                <!-- 执行update方法 -->
                <action name="updateAction" class="cn.doudou.action.HelloAction2" method="update"></action>
            </package>
    </struts>
    
    image.png
    缺陷:action每个方法都要配置,放太多麻烦
    第二种:使用通配符方式实现

    (1)在action标签里面name属性,name属性里面写符号 * 星号
    (2)* 表示匹配任意内容

    • 比如访问add,*可以匹配到
    • 比如访问update,*也可以匹配到

    (3)通配符的匹配过程


    image.png

    (4)通匹配符案例实现
    action编写

    package cn.doudou.action;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class HelloAction2 extends ActionSupport{
        @Override
        public String execute() throws Exception {
            // TODO Auto-generated method stub
            System.out.println("success");
            return NONE;
        }
        public String add(){
            System.out.println("add----------");
            return NONE;
        }
        public String update(){
            System.out.println("update--------");
            return NONE;
        }
    }
    

    主页


    image.png

    配置代码

    <?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="false" value="struts.enable.DynamicMethodInvocation"/>
        <constant value="true" name="struts.devMode"/>
                <!-- 通配符方式实现 -->
                <package name="methoddemo" extends="struts-default" namespace="/">
                    <!-- name属性里面写*
                         (1)执行action里面的add方法,访问hello_add    
                         (2)执行action里面的update方法,访问hello_update
                         上面的两个路径用hello_*都可以匹配到
                         metho写*的值 固定格式{1} 1代表第1个*
                     -->
                    <action name="hello_*" method="{1}" class="cn.doudou.action.HelloAction2"></action>
                </package>
    </struts>
    

    访问结果


    image.png
    第三种:动态访问实现(一般不用)
    2、错误演示

    (1)如果action有返回值,在配置文件中没有配置或者配置错误


    image.png image.png image.png

    (2)action里面有返回值返,返回值必须为String
    (3)action里头的方法可以没有返回值,在result不需要配置

    • 把方法写成void(不推荐)
    • 把返回值写成none
    package cn.doudou.action;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class HelloAction2 extends ActionSupport{
        @Override
        public String execute() throws Exception {
            // TODO Auto-generated method stub
            System.out.println("success");
            return NONE;
        }
    }
    
    image.png

    页面不报错控制台有输出


    image.png
    image.png

    相关文章

      网友评论

        本文标题:struts2 action的使用

        本文链接:https://www.haomeiwen.com/subject/ewlurftx.html