一、结果视图的配置
    <result name="success">/success.jsp</result>
    
    1、局部结果视图
        在action标签内部配置  局部结果视图只能当前Action使用
        
        <action name="quick_*" class="com.itheima.action.QuickAction" method="{1}">
            <!-- 结果视图的属性:
                    name: 逻辑试图名  与Action的方法分返回值进行匹配
                    type: 视图的跳转类型
                        dispatcher(默认值):Action转发视图(jsp)
                        redirect:Action重定向视图(jsp)
                        redirectAction:Action重定向Action
             -->
            <result name="success" type="dispatcher">/success.jsp</result>
            <result name="error">/error.jsp</result>
        </action>
    
    2、全局结果视图
    
        <!-- 全局结果视图:
                当前包下的所有的action都可以共享的视图资源 称之为全局结果视图
         -->
        <global-results>
            <result name="success" type="dispatcher">/success.jsp</result>
            <result name="login">/login.jsp</result>
            <result name="error">/error.jsp</result>
            <result name="index">/index.jsp</result>
        </global-results>

二、在struts2中获得Servlet相关API的方式
    获得在javaweb阶段常用的对象 request、response、session、servletContext...
    
    1、通过ServletActionContext获取
        ServletActionContext:与Servlet相关的Action的上下文对象,该对象相当于一个工具类,维护Servlet相关对象的引用
        
        //获得Servlet相关API对象
        HttpServletRequest request = ServletActionContext.getRequest();
        HttpServletResponse response = ServletActionContext.getResponse();
        HttpSession session = request.getSession();
        ServletContext servletContext = ServletActionContext.getServletContext();
        
    2、使用接口注入方式
        public class ServletAPIAction2 extends ActionSupport
                implements ServletRequestAware,ServletResponseAware,ServletContextAware{
            
            public String show(){
                //获得request
                System.out.println(request);
                return NONE;
            }
                
            private HttpServletRequest request;
            @Override
            public void setServletRequest(HttpServletRequest request) {
                this.request = request;
            }
        }
    
    
三、参数封装
    1、属性驱动
        通过Action属性进行参数封装的方式 称其为属性驱动

 public class Param1Action extends ActionSupport {
//封装单个属性只需要一共set方法即可
private String username;
public void setUsername(String username) {
this.username = username;
} //封装实体 需要同时提供get/set方法
private Person person;
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
} private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
} private List<String> strList;
private List<User> userList;
private Map<String,User> userMap; public Map<String, User> getUserMap() {
return userMap;
}
public void setUserMap(Map<String, User> userMap) {
this.userMap = userMap;
}
public List<User> getUserList() {
return userList;
}
public void setUserList(List<User> userList) {
this.userList = userList;
}
public List<String> getStrList() {
return strList;
}
public void setStrList(List<String> strList) {
this.strList = strList;
}
public String show(){
//方式一
//String username = (String)ServletActionContext.getRequest().getParameter("username");
//方式二 单个属性的封装,不用手动创建对象
//System.out.println(username);
//实体封装
/*System.out.println(user);
System.out.println(person);*/ System.out.println(strList);
System.out.println(userList); System.out.println(userMap);
return NONE;
}
}

2、模型驱动
        在Action中显示的指定模型对象是谁,那么在封装数据时直接写模型对象的属性名就可以
        步骤:
            1、Action实现ModelDriven<指定实体类型>
            2、实现接口的getModel方法(model对象需要手动实例化)

public class Param2Action extends ActionSupport implements ModelDriven<User> {
//模型驱动
//封装实体
public String show() {
System.out.println(user);
return NONE;
}
User user = new User();
public User getModel() {
// TODO Auto-generated method stub
return user;
}
}

比较模型驱动与属性驱动区别?
        属性驱动:提供set/get方法,实体对象不需要手动创建,同时封装多个实体
        模型驱动:实现ModelDriven接口,模型对象必须要手动创建,不能同时封装多个实体

Struts2知识点小结(二)的更多相关文章

  1. Struts2知识点小结(一)

    一.struts2简介 1.Struts2是一个基于MVC设计模式的Web应用框架        只要是web层框架 一般就会遵守MVC设计模式     2.struts2与struts1的关系?  ...

  2. Struts2知识点小结汇总

    Struts2部分 1. JavaEE软件三层结构和MVC的区别? JavaEE软件三层机构是由sun公司提供JavaEE开发规范的:Web层(表现层).业务逻辑层.数据持久层.[其中WEB层会使用前 ...

  3. Struts2知识点小结(四)--拦截器与注解开发

    一.Struts2的拦截器(interceptor) 作用:当请求进入struts2框架后(进入之前可以用filter进行拦截),想对请求进行拦截操作(功能增强.权限控制),需要拦截器组件 1.str ...

  4. Struts2知识点小结(三)--值栈与ognl表达式

    1.问题一 : 什么是值栈 ValueStack        回顾web阶段 数据交互问题?        客户端提交数据  到  服务器端    request接受数据+BeanUtils实体封装 ...

  5. Spring知识点小结(二)

    一.配置非自定义的Bean(数据源DataSource模型) DBCP数据源:        导入dbcp的jar包:dbcp+pool+connector                代码实现:  ...

  6. Hibernate知识点小结(二)

    一.持久化对象和标识符    1.持久化类        配置完关系后,操作的实体对应的类,成为持久化类 (Customer) 2.持久化类标识符(oid:object id)        3.持久 ...

  7. C++重要知识点小结---3

    C++重要知识点小结---1:http://www.cnblogs.com/heyonggang/p/3246631.html C++重要知识点小结---2:http://www.cnblogs.co ...

  8. SpringBoot 系列教程之事务隔离级别知识点小结

    SpringBoot 系列教程之事务隔离级别知识点小结 上一篇博文介绍了声明式事务@Transactional的简单使用姿势,最文章的最后给出了这个注解的多个属性,本文将着重放在事务隔离级别的知识点上 ...

  9. disruptor笔记之四:事件消费知识点小结

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

随机推荐

  1. Log4j和Slf4j的比较

    简单日记门面(simple logging Facade for java)SLF4J是为各种loging APIs提供一个简单统一的接口,从而使得最终用户能够在部署的时候配置自己希 望的loging ...

  2. javascript学习:闭包和prototype原型使用基础

    闭包 function Person(name) { this.Username = name; var Userage = 18; //通过这种方法可以模拟私有成员 //类似于private成员 t ...

  3. Java常用Json库性能对比

    Java对于处理JSON数据的序列化与反序列化目前常用的类库有Gson.FastJSON.Jackson.jettison以及json-lib.在这里我们将对这些类库在json序列化与反序列化方面的性 ...

  4. SVNKit学习——svn二次开发背景和闲谈(一)

    开发背景: 简述现有流程:代码的合并.提交是以任务为最小单元的.例如A和B两个同学开发不同的任务,那就是两个任务号.合并的时候可能会先合并A的代码,在合并B的代码. 需求:SVN合并程序开发——一款能 ...

  5. Android学习——SharedPreferences

    接下来的几个博文,来介绍安卓中的数据存储方式,安卓中的数据存储主要有四种方式: 1.SharedPreferences 2.SQLite 3.Content Provider 4.File 这篇博文主 ...

  6. 林锐:5 C++/C程序的基本概念

    5.1.1 main 不能重载 不能内联 不能定义为static 不能取其地址 不能由用户直接调用 5.1.3内部名称 struct Sample_1 { int count; }; struct S ...

  7. ZT 头文件包含其实是一想很烦琐的工作 第一个原则应该是,如果可以不包含头文件

    当出现访问类的函数或者需要确定类大小的时候,才需要用头文件(使用其类定义)    http://blog.csdn.net/clever101/article/details/4751717 看到这个 ...

  8. 卡方分布、卡方独立性检验和拟合性检验理论及其python实现

    如果你在寻找卡方分布是什么?如何实现卡方检验?那么请看这篇博客,将以通俗易懂的语言,全面的阐述卡方.卡方检验及其python实现. 1. 卡方分布 1.1 简介 抽样分布有三大应用:T分布.卡方分布和 ...

  9. 数据结构学习-数组A[m+n]中依次存放两个线性表(a1,a2···am),(b1,b2···bn),将两个顺序表位置互换

    将数组中的两个顺序表位置互换,即将(b1,b2···bn)放到(a1,a2···am)前边. 解法一: 将数组中的全部元素(a1,a2,···am,b1,b2,···bn)原地逆置为(bn,bn-1, ...

  10. 小故事学设计模式之Observer : (三) 老婆帮忙订机票

    (IT的事就是过场多,过场多了就容易忘,所以我们不妨看一个记一个,这也是一个办法,顺便还能跟同行们交流一下)  要和老婆一起回老家了, 成都离我们安徽太远, 两个人飞一下过去就要花掉近三千块, 于是我 ...