struts2工作原理

Struts2中不会直接使用reqest、response等Servlet的API进行操作,看上去更像是普通的java类。但是实际上Struts2的Action都是属于被调用的,在执行Struts2的执行方法(例如默认的execute()方法)之前,Struts2会从request中获取参数,并通过setter方法设置到Action中(这一切都是通过ioc完成的)。Struts2的所有组件都是围绕这Action为核心来工作的,下面简单的说一下Struts2的工作流程。 ###一、Struts2工作流程

如上图:

  1. 请求提交后被前端控制器拦截
  2. 控制器根据struts.xml配置找对对应的Action
  3. 实例化ValueStack值栈
  4. 实例化Action,并将请求数据赋值给该Action
  5. 将该Action对象放到栈顶
  6. 调用Action的执行方法(默认为execute方法),计算输出
  7. 前端控制器根据输出找对对应的jsp页面
  8. jsp通过ognl表达式展示值栈中的内容,丢弃Action实例

注意:Action主要控制业务逻辑,根据输入计算输出

###二、Struts2的线程安全

Struts2中的每个Action都会有很多个实例,每一次请求都会生成一个新的Action实例,这些实例彼此独立,处理完后即被销毁,所以Struts2是线程安全的。由于Action中没有其它特殊的资源,处理完后即被直接抛弃,所以不会造成资源浪费。

  • qq_43638135
    妲己再美究为妃: 博主没有想过自己接一些私活干吗?我现在还没毕业,但是我也确实听说外挂市场自动化游戏脚本市场挺火热的,并且报酬也很丰厚,但是具体的我也不是很清楚,求解答。 (1个月前 #47楼) 查看回复(2) 举报 回复
    22