Java Struts2框架

来源:互联网 发布:淘宝查号怎么查 编辑:程序博客网 时间:2024/05/29 16:35

Struts2:

Package(struts.xml配置文件中)

1、 用来管理action的

1、 name属性

为包的名称,是唯一的

2、 namespace

为命名空间,是针对url的

1、 extends

1、 在tomcat启动的时候,不仅加载了struts.xml文件,而且还加载了struts-default.xml文件,而这个文件在classpath下。针对该文件的路径在

Action

       action元素代表一个类

   class为action的类的全名,可以写,也可以不写

                         如果不写class属性,则默认执行ActionSupport中的execute方法

                            该方法什么都没有做,仅仅返回了一个success字

Result

(struts.xml配置文件中)

       代表一种结果集

Type 为结果集的类型

Name 属性的值和action中某一个方法的返回值一致

type属性不写,则默认和struts-default中的结果集中的default="true"的结果集保持一致

                                为dispatcher,转发

                            result标签中的内容就是要转发到的页面

在struts-default.xml文件中

Include

(struts.xml配置文件中)

       在struts.xml文件中

值栈(重要)和ognl表达式

1、 只要是一个mvc框架,必须解决数据的存和取的问题

2、 Struts2利用值栈来存数据,所以值栈是一个存储数据的内存结构

3、 把数据存在值栈中,在页面上利用ognl表达式显示出来

值栈的生命周期

       一次请求

值栈的内存结构


     从上图中可以看出valueStack总共分为两个部分:

         对象栈:root

         Map栈:_values

对象栈的存放

1、 Push方法

ActionContext.getContext.getValueStack().push("aaa");

1、 add方法

ActionContext.getContext.getValueStack().getRoot.add(0,"aaa");

对象栈的提取

ActionContext.getContext.getValueStack().peek();

从上图中可以看出,peek方法为获取对象栈的栈顶的元素

ActionContext.getContext.getValueStack().getRoot.get(0);

对象栈的元素的弹出

ActionContext.getContext.getValueStack().pop();


Map栈的存放

ServletActionContext.getRequest().setAttribute("aaa","aaa");

通过该方法可以把一个字符串放入到map栈中的request域中

ActionContext.getContext().put("aaa","aaa");

Threadlocal

1、 本地线程类

2、 可以存放一个对象

3、 Threadlocal对象只能当前线程访问,其他的线程是不能访问的

4、 传递参数

Ognl表达式

Debug标签(重要)

       在页面上引入标签库

Property标签(重要)

  介绍

              输出标签

                    value  指定要输出的内容

                            如果在对象栈中,直接指定属性

                                 也可以直接调用方法

                            如果在map栈中,用#指定

                       如果value属性不写,则默认输出栈顶的元素

Iterator标签(重要)

1、 用途:主要用于迭代,可以迭代List,Set,Map,Array

2、 案例

1、 把集合放入到对象栈中


拦截器

      当提交一个url请求时,先执行所有的拦截器(按照声明的从上到下的顺序),再执行action。


1、 把项目中一些经常用到的业务逻辑从action中分离出来,写到拦截器中

这样可以做到这些常用的逻辑和真正的逻辑的松耦合

2、 拦截器和action是真正的松耦合了

3、 Struts2把开发过程中的一些常用的业务已经封装到各个拦截器中了

模型驱动(获取页面数据)

ModelDriverInterceptor有两个作用:

1、  当前请求的action必须实现ModelDriver接口

2、  把model对象放入到了栈顶
































































0 0