一、结果视图的配置
    <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. asp.net FileUpload上传文件夹并检测所有子文件

    1.在FileUpload控件添加一个属性 webkitdirectory=""就可以上传文件夹了 <asp:FileUpload ID="FileUpload1& ...

  2. WPF MVVM 如何在ViewModel中操作View中的控件事件

    (在学习Wpf的时候,做一个小例子,想在TextBox改变后,检验合法性,并弹出提示.在找了很多贴后,发现这个小例子,抄袭过来,仅供参考. 最后也找到了适合自己例子的办法:在出发TextChanged ...

  3. OC与JS交互之WebViewJavascriptBridge

    上一篇文章介绍了通过UIWebView实现了OC与JS交互的可能性及实现的原理,并且简单的实现了一个小的示例DEMO,当然也有一部分遗留问题,使用原生实现过程比较繁琐,代码难以维护.这篇文章主要介绍下 ...

  4. netty笔记(一)--Demo

    Netty是一个Java开源框架,用于传输数据.由server和client组成,封装了Java nio,支持TCP, UDP等协议.这里写了一Demo EchoClientHandler.java ...

  5. linux服务器上创建svn版本库

    1. 创建存放各个svn版本库的目录svnrepos(自己定义路径) -bash: cd /usr/local/apache/htdocs/ -bash: mkdir svnrepos 2. 假设我要 ...

  6. 如何angular过滤器进行排序???

    首先定义一个json文件: 然后写HTML文件: <div id="box"> <!--第一个下拉框--> <select ng-model=&quo ...

  7. C#工具类之数据库连接

    一.SQL Server /// <summary> /// 数据库的通用访问代码 /// 此类为抽象类, /// 不允许实例化,在应用时直接调用即可 /// </summary&g ...

  8. Popularize what is heart of mobile phone?

    From: http://tech.sina.com.cn/mobile/n/2014-09-29/08399657494.shtml 只谈核数没意义 带你重新认识手机SoC 2014年09月29日  ...

  9. Informatica 9.1.0 Domain地址变化修改

    由于公司机房的变动,infa所连数据库的IP地址变化,致使INFA不能启动.经过查找资料终于解决,现分享给大家,解决方法如下: 1.查看日志路径: Informatica/9.1.0/tomcat/l ...

  10. tensorflow读取jpg格式图片报错 ValueError: Only know how to handle extensions: ['png']; with Pillow installed matplotlib can handle more images

    当运行mpimg.imread("img.jpg")时,spyder 出现如下错误: ValueError: Only know how to handle extensions: ...