• Struts 2线程安全以及配置文件


    1、线程安全:

      在一个进程中有多个线程并发执行,每个线程执行的过程中变量值是相同的,执行结果也是相同的。

    2.struts 2 每次请求都会创建新的action对象,所以线程安全。

      由于action对象是struts2反射生成的,所以要求action类要有一个公共的无参构造方法。

    3. 乱码配置:

      

     4、团队协作开发配置:

      

    5.配置文件加载顺序:

    struts-default.xml——struts-plugin.xml——>struts.xml

    6.package的配置:

      name 是url请求名,不需要加后缀(.action)

     class是处理url请求对应的java类,class要求包名+类名,并且该类是有公共的无参构造方法的,

       method配置处理请求类的处理方法,默认是execute()方法,方法要满足是公共的,返回值类型是string ,无参                                method 和name无关

    7.result的配置:

      name :匹配请求处理方法的返回值;默认是success

      type :结果处理类型,默认是dispather (转发)

      

     8.全局配置:

      

      在Action的配置中,如果不去配置class属性,将会由默认的action来执行,默认的action是ActionSupport类

      

    9.通配符的配置 * 表示匹配所有,占位符用{1}表示

      

    10.减少Action的配置,还可以使用DMI 即动态方法调用,不推荐存在安全隐患。

    11.Action的实现方式:

      

     12.获取ServletAPI:

      struts2获取ServletApi的两种方式:一种解耦;一种耦合;

    解耦使得struts2来进行测试的时候不需要启动服务器,在一定程度上提高开发效率。

    Action->Service->Dao

      使用解耦的方式获取servlet  Api  通过ActionContext对象获取。Map 容器

      通过获取ServletActionContext获取HttpServletRequest对象

     什么是ActionContext?

       ActionContext是Map结构的容器,ActionContext是Action的上下文,存放Action执行过程中数据信息。ActionContext存放Action数据,ActionInvocation request的数据,session的数据,application的数据,local的数据等。每次请求时会为当前线程创建一个新的ActionContext。而ActionContext采用了ThreadLocal(容器)的方式来存放ActionContext所以ActionContext是线程安全的。

         ActionContext.getContext()获取,由于ActionContext是线程安全的,并且通过静态方法获取的,所以在本线程中的非Action类中也可以直接访问。

      注意:ActionContext是基于请求创建的。所以在非请求的线程中是不能使用ActionContext对象的。如:filter的init()方法。

    ActionContext的简图:

  • 相关阅读:
    javascript之面向对象学习笔记03
    javascript之面向对象学习笔记02
    javascript之面向对象学习笔记01
    记第一次用Linux搭建LAMP环境
    C#随机数
    Android简单的TXT文件存储
    关于Android的ListView一点使用方法
    Android与C#的socket通讯
    Android调用WebService
    并发编程之进程、线程、同步锁 -1
  • 原文地址:https://www.cnblogs.com/auldlangsynezh/p/8493830.html
Copyright © 2020-2023  润新知