struts常用操作

作者: shineDeveloper | 来源:发表于2017-06-17 16:06 被阅读43次

    早期开发模型Servlet+JSP+JavaBean(Model2)显得力不从心,流程凌乱、数据传递无序、缺乏辅助功能。所以,使用structs2来解决问题。

    struts2开发步骤

    1.拷贝/apps/struts2-blank/WEB-INF/lib中的jar到项目的lib中.

    2.在web.xml中配置Struts2的前端控制器-StrutsPrepareAndExecuteFilter.

    struts配置web.xml

    3.拷贝struts.xml文件到项目的source folder中.
    -----------------------上述三步在准备开发环境---------
    4.定义一个POJO类:HelloAction,并提供一个公共无参数的sayHello方法.

    5.在struts.xml文件中,配置HelloAction.(把HelloAction交给Struts2框架管理).

    6.访问Action.
    格式:http://ip:port/contextPath/namespaceName/actionName[.action]
    http://ip:port/contextPath/crm/hello[.action]

    struts基本流程

    action获取请求参数的三种方法

    第一种:Action本身作为Model对象,通过setter方法封装(属性注入):在Action中提供setXxx方法来接受xxx参数的值(xxx表示参数名称).

    **第二种:创建独立Model对象,页面通过ognl表达式封装(属性注入)使用最多的方式;
    **

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

    访问ServletApi三种方式

    方式1:通过让Action类去实现感知接口.
    此时项目依赖:servlet-api.jar.

    ServletRequestAware:感知HttpServletRequest对象;
    ServletResponseAware:感知HttpServletResponse对象;
    ServletSessionAware:感知HttpSession对象;

    问题,和ServletAPI藕合严重;
    一般的,我们不要,留给框架自己使用的.

    方式2.使用ServletActionContext类,该类提供很多静态方法可以返回Servelet API对象.

    可以这样来理解,ServletActionContext就是Servlet API的工具类.
    使用的非常频繁,因为简单易用.

    static HttpServletRequest getRequest() :返回HttpServletRequest对象
    static HttpServletResponse getResponse() :返回HttpServletResponse对象
    static ServletContext getServletContext() :返回ServletContext对象.

    方式3.使用ActionContext类,本身是Struts2对Servlet API的封装.

    什么是ActionContext: Action的环境对象,每一次请求都是一个新的Action对象,一个ActionContext对象封装了这一次请求的相关数据.
    ActionContext使用了ThreadLocal模式,所以说是线程安全的.
    创建ActionContext对象:
    ActionContext ctx = ActionContext.getContext();


    ActionContext的常用方法:
    此时把作用域对象全部使用Map来表示.
    获取请求参数:
    以前: String request.getParameter(String name);
    String[] request.getParameterValues(String name);
    现在:
    Map<String,String[]> getParameters();

    操作request作用域对象:
    以前:
    设置共享数据:request.setAttribute(String name,Object value);
    获取共享数据:Object value = request.getAttribute(String name);
    现在: ActionContext本身就是对一次请求的封装.
    设置共享数据:ActionContext.getContext().put(String name,Object value);
    获取共享数据:Object vale = ActionContext.getContext().get(String name)

    操作session作用域对象:
    以前:
    设置共享数据:request.getSession().setAttribute(String name,Object value);
    获取共享数据:Object value = request.getSession().getAttribute(String name);
    现在: 只需要得到Session的Map对象即可.
    Map<String,Object> sessionMap = ActionContext.getContext().getSession();
    设置共享数据:sessionMap .put(String name,Object value)
    获取共享数据:Object value = sessionMap .get(String name)
    操作application作用域对象:
    以前:
    设置共享数据:request.getServletContext().setAttribute(String name,Object value);
    获取共享数据:Object value = request.getgetServletContext().getAttribute(String name);
    现在: 只需要得到application的Map对象即可.

    相关文章

      网友评论

        本文标题:struts常用操作

        本文链接:https://www.haomeiwen.com/subject/fxgvqxtx.html