1.结果视图配置
在struts.xml文件中,Result配置非常简单.使用元素类配置Result逻辑视图与物理视图之间的映射,元素可以有name和type属性,不是必选的.
name 属性默认值 success
type属性
1. disptcher 使用请求转发,转向一个页面
2. redirect 使用重定向,转向一个页面
3. redirectAction 使用重定向,前往指定的动作
局部结果视图和全局结果视图
配置在action标签内的result,称为局部结果视图,只能由当前action使用
配置全局的结果视图:当前包下的所有的Action都可以使用
注意:视图的优先级 先在局部视图中寻找对应的视图,局部视图不存在查找全局视图.
2. 在Action获得Servlet的API的相关方式
- 通过ServletActionContext获取
- 通过接口注入方式获取(思想)
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>
- 封装普通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>