struts2框架学习笔记02

1.结果跳转方式

(1)转发
<!-- 转发 -->
<action name="Demo1Action" class="cn.itheima.a_result.Demo1Action" method="execute">
    <result name="success" type="dispatcher">/hello.jsp</result>
</action>
(2)重定向
<!-- 重定向 -->
<action name="Demo2Action" class="cn.itheima.a_result.Demo2Action" method="execute">
    <result name="success" type="redirect">/hello.jsp</result>
</action>
(3)转发到Action
<!-- 转发到Action -->
<action name="Demo3Action" class="cn.itheima.a_result.Demo3Action" method="execute">
    <result name="success" type="chain">
        <param name="actionName">Demo2Action</param>
        <param name="namespace">/</param>
    </result>
</action>
(4)重定向到Action
<!-- 重定向到Action -->
<action name="Demo4Action" class="cn.itheima.a_result.Demo4Action" method="execute">
    <result name="success" type="redirectAction">
        <param name="actionName">Demo1Action</param>
        <param name="namespace">/</param>
    </result>
</action>

2.访问ServletAPI方式

(1)原理

这里写图片描述

(2)通过ActionContext
//如何在action中获得原生servletAPI
public class Demo5Action extends ActionSupport{

    public String execute() throws Exception {
        //request域==》map
        //不推荐
        //Map<String,Object> requestScope = (Map<String, Object>) ActionContext.getContext().get("request");
        ActionContext.getContext().put("name", "requestTom");

        //session域==》map 
        Map<String, Object> sessionScope = ActionContext.getContext().getSession();
        sessionScope.put("name","sessionTom");
        //application域==》map
        Map<String, Object> applicationScope = ActionContext.getContext().getApplication();
        applicationScope.put("name", "applicationTom");
        return "success";
    }
}
(3)通过ServletActionContext
//如何在action中获得原生servletAPI
public class Demo6Action extends ActionSupport{
    //不推荐
    public String execute() throws Exception {
        //原生request
        HttpServletRequest request = ServletActionContext.getRequest();
        //原生response
        HttpServletResponse response = ServletActionContext.getResponse();
        //原生session
        HttpSession session = request.getSession();
        //原生servletContext
        ServletContext servletContext = ServletActionContext.getServletContext();
        return "success";
    }
}
(4)通过实现接口方式
//如何在action中获得原生servletAPI
public class Demo7Action extends ActionSupport implements ServletRequestAware{

    private HttpServletRequest request;

    public String execute() throws Exception {
        System.out.println("原生Request:"+request);
        return "success";
    }

    public void setServletRequest(HttpServletRequest request ) {
        this.request = request;
    }
}

3.如何获得参数

(1)扩展
1.strutsMVC

这里写图片描述

2.Action生命周期
    每次请求到来时,都会创建一个新的Action实例
    Action是线程安全的.可以使用成员变量接收参数
(2)属性驱动获得参数
<form action="${pageContext.request.contextPath }/Demo8Action">
    姓名:<input type="text" name="name"/><br>
    年龄:<input type="text" name="age"/><br>
    生日:<input type="text" name="birthday"/><br>
    <input type="submit" value="提交">
</form>
//strtus2如何在获得参数
public class Demo8Action extends ActionSupport{
    //准备与参数键名称相同的属性
    private String name;
    //自动类型转换,只能转换8大基本类型和包装类
    private Integer age;
    //支持特定类型字符串转换为Date:yyyy-MM-dd
    private Date birthday;

    public Demo8Action() {
        System.out.println("Demo8Action被创建");
    }

    public String execute() throws Exception {
        System.out.println("name的属性值:"+name+",age的参数值"+age+",生日"+birthday);
        return "success";
    }
    //get,set方法
(3)对象驱动
<form action="${pageContext.request.contextPath }/Demo8Action">
    姓名:<input type="text" name="name"/><br>
    年龄:<input type="text" name="age"/><br>
    生日:<input type="text" name="birthday"/><br>
    <input type="submit" value="提交">
</form>
package cn.itheima.c_param;

import com.opensymphony.xwork2.ActionSupport;

//strtus2如何在获得参数-方式2:通过对象来封装
public class Demo9Action extends ActionSupport{

    private User user;

    public String execute() throws Exception {
        System.out.println(user);
        return "success";
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }
}
(4)模型驱动
<form action="${pageContext.request.contextPath }/Demo8Action">
    姓名:<input type="text" name="name"/><br>
    年龄:<input type="text" name="age"/><br>
    生日:<input type="text" name="birthday"/><br>
    <input type="submit" value="提交">
</form>
package cn.itheima.c_param;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

//strtus2如何在获得参数-方式3:模型驱动(只能返回一个对象)
public class Demo10Action extends ActionSupport implements ModelDriven<User>{
    //准备user成员变量,没有get,set方法,不是属性
    private User user = new User();

    public String execute() throws Exception {
        System.out.println(user);
        return "success";
    }

    public User getModel() {
        return user;
    }

}

4.集合类型参数封装

(1)list
<form action="${pageContext.request.contextPath }/Demo11Action">
    list:<input type="text" name="list"/><br>
    list:<input type="text" name="list[3]"/><br>
    <input type="submit" value="提交">
</form>
private List<String> list;
(2)map
map:<input type="text" name="map['lijisheng']"/><br>
private Map<String,String> map;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值