• Struts2 学习(三)


    一、访问Servlet API 的三种方式

    1、什么是 Action 访问 Servlet 的 API

    1、访问 Servlet 的API:

    1、获取 request 对象。

    2、接受请求参数。

    3、获取 session,appliction。

    4、获取 response对象。

    5、使用 Cookie。

    6、获取作用域对象,设置共享数据(setAttribute)。

    2、Action访问Servlet  API,有三种方式:

    1、通过感知接口。

      若 Action 想获取哪一个ServletAPI对象,则实现该对象对应的感知接口。

    如:

      想获取 request 对象,则 Action 应该实现 ServletRequestAware。

      想获取 response 对象,则Action应该实现 ServletResponsetAware。

      并且要覆盖对应 setter 方法。

    2、通过ServletActionContext工具类。

      在该类中提供了很多静态方法,可以直接获取Servlet的API对象。

      HttpServletRequest request = ServletActionContext.getRequest();

      HttpServletResponse response = ServletActionContext.getResponse();

      在开发中使用非常频繁,简单,直接。

      但是依然和Servlet的API有耦合。

    3、通过使用 ActionContext 工具类。

      表示 Action 的上下文对象,也就是Action存在的环境。ActionContext 是 ServletActionContext 的父类。

    1、创建 ActionContext 对象:

    ActionContext ctx = ActionContext.getContext();

    Map<String,Object> getParameters():获取参数的Map集合。

    2、操作 request 作用域:

    void put(String key,Object value):类似于request.setAttribute(String key,Object value);

    Object get(String key): 类似于request.getAttribute(String key);

    3、操作session作用域:

    Map<String,Object> sessionMap  = ctx.getSession();

    在session中存放数据:void put(String key,Object value)

    取出session中的数据:Object get(String key)

    4、操作application作用域:

    Map<String,Object> applicationMap = ctx.getApplication();

    注:官方建议使用第三种方式,可以和 Servlet 的 API 完成解除耦合,在实际开发中第二种运用非常广泛。

    二、Action 获取请求参数的三种方式

    1、J2EE的最佳实践:

      按照功能职责,分层开发(表现层,业务层,持久层):

    表现层:职责是和用户做交互

    1、接受请求数据。

    2、把数据封装Model对象。

    3、调用业务逻辑方法处理请求。

    4、控制界面跳转。

    2、MVC思想:

    M:数据模型对象(封装数据,封装操作,可重复使用)

    V:JSP

    C:StrutsPrepareAndExecuteFilter(前端控制器)

    问题:Action 到底充当什么角色?

    Action的职责,处理请求。

    3、Action获取请求参数三种方式:

    第一种:Action本身作为Model对象,通过setter方法封装(属性注入)

      前端页面提交登录信息。

    第二种:创建独立Model对象,页面通过ognl表达式封装(属性注入)

    第三种:使用ModelDriven接口,对请求数据进行封装(模型驱动)

  • 相关阅读:
    2020/10/25周总结
    软件需求---河北省重大需求进度报告05
    软件需求---河北省重大需求进度报告04
    软件需求---河北省重大需求进度报告03
    软件需求---河北省重大需求进度报告02
    解决js字符串传参未定义的问题
    软件需求---河北省重大需求进度报告
    2020/10/18周总结
    环信EaseUI集成IM即时通信
    第十二周学习进度总结
  • 原文地址:https://www.cnblogs.com/zt19994/p/8603546.html
Copyright © 2020-2023  润新知