• struts2学习


    <s:properyt value="#session['user'].username">
    <s:property value="#session['user'].age">
    <s:property value="#session['user'].address">
    <s:property value="#session['user'].number">

    session的user对象的多个字段

    bean标签可以创建简单的javabean,以便他在action
    concet中能够访问。

    列子;
    <s:bean name="com.opensymphony.webwork.util.Counter"id="counter">
    <s:param name="last" value="100">
    </s:bean>

    Action只是Struts2控制器的部分,所以它不能够生成对浏览者的响应。
    Action只负责处理请求,负责生成响应的视图组件,通常就是jsp页面。

    Struts1的Action是单实例的,一个Action的实例处理所有的请求。Struts2的Action是一个请求对应一个实例(每次请求时都新new出一个对象),没有线程安全方面的问题。

    Struts 2已经为您提供丰富多样的,功能齐全的拦截器实现。大家可以至struts2的jar包内的struts-default.xml查看关于默认的拦截器与拦截器链的配置。

    在struts.xml文件中定义拦截器,拦截器栈:

    <package name="my" extends="struts-default" namespace="/manage">

    <interceptors>

    <!-- 定义拦截器 -->

    <interceptor name="拦截器名" class="拦截器实现类"/>

    <!-- 定义拦截器栈 -->

    <interceptor-stack name="拦截器栈名">

    <interceptor-ref name="拦截器一"/>

    <interceptor-ref name="拦截器二"/>

    </interceptor-stack>

    </interceptors>

    ......

    </package>

    *********************************************************

    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException ...{
    HttpServletRequest request = (HttpServletRequest) req;
    HttpServletResponse response = (HttpServletResponse) res;
    ServletContext servletContext = filterConfig.getServletContext();
    // 在这里处理了HttpServletRequest和HttpServletResponse。
    DispatcherUtils du = DispatcherUtils.getInstance();
    du.prepare(request, response);//正如这个方法名字一样进行locale、encoding以及特殊request parameters设置
    try ...{
    request = du.wrapRequest(request, servletContext);//对request进行包装
    } catch (IOException e) ...{
    String message = "Could not wrap servlet request with MultipartRequestWrapper!";
    LOG.error(message, e);
    throw new ServletException(message, e);
    }

     一个请求在Struts2框架中的处理大概分为以下几个步骤 

        1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求

        2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin) 

        3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action 

           FilterDispatcher是控制器的核心,就是mvc中c控制层的核心。下面粗略的分析下我理解的FilterDispatcher工作流程和原理:FilterDispatcher进行初始化并启用核心doFilter

        4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy 

        5、ActionProxy通过ConfigurationManager询问框架的配置文件,找到需要调用的Action类 ,这里,我们一般是从struts.xml配置中读取。

        6、ActionProxy创建一个ActionInvocation的实例。

        7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。

        8、

  • 相关阅读:
    sql 批量更新
    利用反射获取静态类的静态属性值(已知属性名称的字符串表示)
    远程桌面无法复制粘贴
    jquery分页滑动插件(鼠标可控制上下滑动)
    linux 基本操作
    dotnet core+nginx+supervisor
    dotnet core 托管
    net core 依赖注入
    绑定资源
    拉条改变字体大小
  • 原文地址:https://www.cnblogs.com/Qnana/p/5335884.html
Copyright © 2020-2023  润新知