struts2的简单使用

5 篇文章 0 订阅
4 篇文章 0 订阅

第一种方式:不继承于任何类的Action 。
这种方式的好处是,我们写的Action类完全不和struts2框架发生耦合,代码不依赖struts2的类库。

/**
 * 第一种写法:普通的java对象(pojo)
 * 这是一个struts2处理类
 * @author benxi
 * 处理原则:
 * public String XX无参方法
 * get set方法
 */
public class loginAction {
    private String name; 
    private String password;
    public String login(){
        if("zhangsan".equals(name)&&"123".equals(password)){
            return "success";
        }else
            return "error";

    }
、、get/set方法省略

对应的struts.xml文件写法:

    <!--  配置Action
        先定义一个包标签(管理Action)
        package标签
            name:包名
            extends:继承其它包(struts-default系统包-必须)
        action标签
            name:访问Action路径名
            class:Action全路径名
            method:方法名
        result标签
            name:视图名
            标签内容:页面路径
     -->
    <package name="demo" extends="struts-default">
<!-- 指定方法名 -->
        <action name="loginaction" class="com.action.loginAction" method="login">
    <!--    其中success.jsp前面不加/是相对于本命名空间的路径,加上/代表项目根目录 -->
            <result name="success">success.jsp</result>
            <result name="error">error.jsp</result>
        </action>
    </package>
</struts>

元素告诉了我们调用完Action后下一步做什么。一般作为的子元素


第二种写法:实现Action接口
Struts2的Action接口中只定义了execute方法和几个预定义的常量。

/**
 * 第二种写法:实现Action接口)
 */
public class LoginAction implements Action{
    private String name; 
    private String password;
    @Override
    public String execute() throws Exception {
        if("zhangsan".equals(name)&&"123".equals(password)){
            //使用Action接口自带的常量
            return this.SUCCESS;
        }else
            return this.ERROR;
    }

下面对于name和password的get/set方法省略
对应的struts.xml文件写法:

<!-- 不需要指定方法名 -->
        <action name="loginaction" class="com.action.LoginAction">
            <result name="success">success.jsp</result>
            <result name="error">error.jsp</result>
        </action>

第三种写法:继承ActionSupport类
ActionSupport类实现了Action接口,我们自定义的Action类一般都采用继承ActionSupport类的方式。使用ActionSupport的好处是我们可以直接使用这个类中已经定义好的方法。

/**
 * 第三种写法:继承ActionSupport类
 */
public class LoginAction extends ActionSupport{
    private String name; 
    private String password;
    private String message;
    @Override
    public String execute() throws Exception {
        if("zhangsan".equals(name)&&"123".equals(password)){
            //可以在jsp页面直接使用EL表达式读取出这个数据,三种设置action方式都可以使用这个
            message = "您好! ["+name+"]";
            //在jsp页面使用特定的表达式读取
            this.addActionMessage("您好! ["+name+"]");
            return this.SUCCESS;
        }else{
            message = "用户名或者密码错误!";
            this.addActionError("用户名或者密码错误!");
            return this.ERROR;
        }
    }
    public String login(){
        if("zhangsan".equals(name)&&"123".equals(password)){
            this.addActionMessage("您好! ["+name+"]");
            return this.SUCCESS;
        }else{
            this.addActionError("用户名或者密码错误!");
            return this.ERROR;
        }
    }

struts.xml文件;

<!-- 采用通配符*来简化配置 
        *:表示任意字符
        {1}:表示使用第一个*的具体字符
        例如:user_login 则调用login方法
-->
    <action name="user_*" class="com.action.LoginAction" method="{1}">
        <result name="success">success.jsp</result>
        <result name="error">error.jsp</result>
    </action>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值