struts2笔记2

1.结果视图配置

在struts.xml文件中,Result配置非常简单.使用元素类配置Result逻辑视图与物理视图之间的映射,元素可以有name和type属性,不是必选的.
name 属性默认值 success
type属性
1. disptcher 使用请求转发,转向一个页面
2. redirect 使用重定向,转向一个页面
3. redirectAction 使用重定向,前往指定的动作

局部结果视图和全局结果视图

配置在action标签内的result,称为局部结果视图,只能由当前action使用
这里写图片描述
配置全局的结果视图:当前包下的所有的Action都可以使用
注意:视图的优先级 先在局部视图中寻找对应的视图,局部视图不存在查找全局视图.

2. 在Action获得Servlet的API的相关方式

  1. 通过ServletActionContext获取
    这里写图片描述
  2. 通过接口注入方式获取(思想)
    这里写图片描述

3.实体封装

属性驱动

通过在Action中的属性进行参数的封装 称之为属性驱动
1. 普通属性
做为成员变量,提供set方法

    private String username;
    private int age;
    public void setUsername(String username) {
        this.username = username;
    }
    public void setAge(int age) {
        this.age = age;
    }

2.封装实体
需要提供set/get方法,不提供get方法,第二个参数开始获取不到

    private User user;
    public void setUser(User user) {
        this.user = user;
    }

    public User getUser() {
        return user;
    //表单name需要设置为如下形式
    <form action="${pageContext.request.contextPath}/param1Action"                
    method="post">
        姓名:<input type="text" name="user.name">
        年龄:<input type="text" name="user.age">
        城市:<input type="text" name="user.address.city">
        区域:<input type="text" name="user.address.area">
        <input type="submit" value="提交">
    </form>
  1. 封装普通list
    List<String> strList=new ArrayList<>();
    public List<String> getStrList() {
        return strList;
    }
    public void setStrList(List<String> strList) {
        this.strList = strList;
    }
    <form action="${pageContext.request.contextPath}/param1Action"    
    method="post">
        <input type="text" name="strList[0]"><br>
        <input type="text" name="strList[1]"><br>
        <input type="text" name="strList[2]"><br>
        <input type="text" name="strList[3]"><br>
        <input type="submit" value="提交">
    </form>

4.封装实体list

    List<User> userList=new ArrayList<>();
    public List<User> getUserList() {
        return userList;
    }
    public void setUserList(List<User> userList) {
        this.userList = userList;
    }
    <form action="${pageContext.request.contextPath}/param1Action"   
     method="post">
        姓名:<input type="text" name="userList[0].name"><br>
        年龄:<input type="text" name="userList[0].age"><br>
        城市:<input type="text" name="userList[0].address.city"><br>
        区域:<input type="text" name="userList[0].address.area"><br>
        姓名:<input type="text" name="userList[1].name"><br>
        年龄:<input type="text" name="userList[1].age"><br>
        城市:<input type="text" name="userList[1].address.city"><br>
        区域:<input type="text" name="userList[1].address.area"><br>
        <input type="submit" value="提交">
    </form>

5.封装实体map集合

    Map<String,User> userMap=new HashMap<>();
    public Map<String, User> getUserMap() {
        return userMap;
    }
    public void setUserMap(Map<String, User> userMap) {
        this.userMap = userMap;
    }
    <h1>提交数据封装userMap集合1</h1>
    <form action="${pageContext.request.contextPath}/param1Action"   
      method="post">
        姓名:<input type="text" name="userMap['key1'].name"><br>
        年龄:<input type="text" name="userMap['key1'].age"><br>
        城市:<input type="text" name="userMap['key1'].address.city"><br>
        区域:<input type="text" name="userMap['key1'].address.area"><br>
        姓名:<input type="text" name="userMap['key2'].name"><br>
        年龄:<input type="text" name="userMap['key2'].age"><br>
        城市:<input type="text" name="userMap['key2'].address.city"><br>
        区域:<input type="text" name="userMap['key2'].address.area"><br>
        <input type="submit" value="提交">
    </form>
    <h1>提交数据封装userMap集合2</h1>
    <form action="${pageContext.request.contextPath}/param1Action" 
     method="post">
        姓名:<input type="text" name="userMap.key1.name"><br>
        年龄:<input type="text" name="userMap.key1.age"><br>
        城市:<input type="text" name="userMap.key1.address.city"><br>
        区域:<input type="text" name="userMap.key1.address.area"><br>
        姓名:<input type="text" name="userMap.key2.name"><br>
        年龄:<input type="text" name="userMap.key2.age"><br>
        城市:<input type="text" name="userMap.key2.address.city"><br>
        区域:<input type="text" name="userMap.key2.address.area"><br>
        <input type="submit" value="提交">
    </form>

模型驱动

就是显式的制定该Action的模型对象是谁
开发步骤:
1. 让Action实现ModelDriven接口,在实现该接口时要指定模型对象类型
2. 实现ModelDriven的接口方法 getModel方法 该方法返回的就是当前模型对象

public class Param2Action extends ActionSupport implements ModelDriven<User> {
    //手动创建User
    private User user=new User();
    public String getParam(){
        System.out.println(user);
        return NONE;
    }
    @Override
    public User getModel() {
        return user;
    }
}
----------------------------------------------
<h1>封装user实体(模型驱动)</h1>
    <form action="${pageContext.request.contextPath}/param2Action" 
    method="post">
        姓名:<input type="text" name="name">
        年龄:<input type="text" name="age">
        城市:<input type="text" name="address.city">
        区域:<input type="text" name="address.area">
        <input type="submit" value="提交">
    </form>

猜你喜欢

转载自blog.csdn.net/sinat_29211659/article/details/81173877
今日推荐