struts2动作类及xml配置

一、编写动作类的三种方式

1、第一种方式:
创建一个普通的Java类。它就是一个POJO(Plain Old Java Object),原始老的Java对象

public class DemoAction{
    public String hello(){
        return "success"
    }
}

2、第二种方式:
创建一个普通类,实现Action接口,实现接口中的方法

/**
*Action接口中的常量
*SUCCESS  "success"  当执行成功后,前往指定的位置
*NONE     "none"     不返回任何结果视图,相当于return null
*ERROR    "error"    出现异常时,前往指定页面
*INPUT    "input"    用于数据回显
*LOGIN    "login"    一般用于返回登录页面
*/
public class DemoAction implements Action{
    public String execute() throws Exception{
        return null;
    }
}

3、第三种方式(开发中常用)
创建一个普通类,继承ActionSupport

public class DemoAction extends ActionSupport{
    //当我们不写动作方法时,有一个默认的动作方法:execute()
}

二、动作方法

    写动作方法要求:方法必须是public类型;必须没有参数;返回值是String类型

public class DemoAction extends ActionSupport{
    public String actionMethod(){
        return "success"
    }
}

三、获取servletAPI

1、获取servletAPI的第一种方式

//动作方法
public String actionMethod(){
    HttpServletRequest request=ServletActionContext.getRequest();
    HttpServletResponse response=ServletActionContext.getResponse();
    HttpSession session=request.getSession();
    ServletContext application=ServletActionContext.getServletContext();
}

2、获取servletAPI的第二种方式(依赖注入)

private HttpServletRequest request;
private HttpServletResponse response;
private ServletContext application;
public void setServletContext(ServletContext    context){
    application=context;
}
public void setServletRequest(HttpServletRequest request){
    this.request=request;
}
public void setServletResponse(HttpServletResponse response){
    this.response=response;
}

四、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.devMode" value="true"/>
    <!--package:是指包,内可以写多个动作;name:包名称(唯一) extends:继承struts默认的配置-->
    <package name="p1" extends="struts-default">
        <!--action中 name:动作名称(相当于标识) class:动作类的全名 method:方法名称(执行相应方法的名称)-->
        <action name="action1" class="com.san.action.Action1" method="actionMethod">
            <!--result结果视图(相当于当该方法执行成功,返回success时,跳转到success.jsp页面)-->
            <result name="success">/success.jsp</result>
        </action>
    </package>
</struts>

五、关于struts.xml没有提示的问题

    原因:没有找到对应的dtd文件(或者是电脑没有联网或者没有加配置的约束)。
电脑没有联网时:
    解决方法:
找到struts-2.3.dtd解压出来(按图中步骤来)
这里写图片描述

六、struts.xml中结果视图转发和重定向

    注意:namespace的默认值是:”“(空字符串),而不是”/”。

<!--转发到同包-->
<action name="动作名" class="动作类全名" method="动作方法名">
    <result name="返回名" type="chain"></result>
</action>

<!--重定向到同包-->
<action name="动作名" class="动作类全名" method="动作方法名">
    <result name="返回名" type="redirectAction"></result>
</action>

<!--转发到不同的包-->
<action name="" class="" method="">
    <result name="" type="chain">
        <!--使用注入思想-->
        <param name="namespace">另一个包的namespace的值</param>
        <param name="actionName">需要转发到的action或者页面</param>
    </result>
</action>

<!--重定向到不同的包-->
<action name="" class="" method="">
    <result name="" type="redirectAction">
        <!--使用注入思想-->
        <param name="namespace">另一个包的namespace的值</param>
        <param name="actionName">需要转发到的action或者页面</param>
    </result>
</action>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值