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;
發佈了63 篇原創文章 · 獲贊 2 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章