初识struts2

Struts2  框架:

1、作用:封装了 jsp servlet ,按照 mvc 的开发模式 进行了封装。

2、Mvc: model one model two (mvc) model view controller 控制层

3、Struts1 struts2xwork webwork framework))

这里面这个故事的版本貌似是这样的:显示 apache 开发了 struts1 然后 渐渐地另一拨人开发了xwork ,然后 不断地升级,越来越多的人发现这个好用,于是apache就把  这个 xwork连人带东西 都并购了。然后 改了个名字 叫做 struts1.

 

4、搭建一个struts2环境:

1)导入struts2 jar

2)Web.xml  进行struts2 的核心控制 配置, 用来 告诉 tomcat 有一个mvc框架

3)下一个 普通的 aciton类,里面必须有 execute 而且这个方法必须有一个 string的返回值

4)Struts2的核心配置文件,:请求路径action之间的关系,返回字符串和jsp页面之间的关系

5)这个配置文件就由 核心控制器 读取,并且使用。

5、在struts2 请求的流程中,携带数据,在相应的过程中,也携带数据回来。

 

总结:

1、struts框架概述

2、搭建环境(工作机制)重点

3、这样的环境下 数据的传递:属性驱动 对象驱动

4、作业:1struts2登录  新增 修改 展现  删除

定义 action的方式 ,在 action中访问 servlet api ,在 action中 如果有多个方法的话,可以进行方法调用配置

1、导入jar包。

 初识struts2_第1张图片

2

 

<!-- 配置struts2 核心控制器 -->

  <filter>

   <filter-name>struts2</filter-name>

   <!-- 这个 应该 是高级版本的。 -->

   <!-- org.apache.struts2.dispatcher.FilterDispatcher    好像是说这个也行,回头试试  -->

   <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

  </filter>

  <filter-mapping>

   <filter-name>struts2</filter-name>

   <url-pattern>/*</url-pattern>

  </filter-mapping>

 

 初识struts2_第2张图片

//这控制台上的输出有毒【囧】

这个当然是行。不过人家不建议使用了

这个 约束文件是要加上的。就是 那个 dtd文件。

工作原理:

 

 

Struts 工作原理:

 

From letben 先自己写一遍再抄老师的。

 

配置流程:

1、导入对应的jar

2、到web.xml 中进行配置,配置时候,是以过滤器的形式。

3、写对应的action

4、为相应的action配置 struts.xml 文件。

 

工作原理:

1、启动tomcat服务器。加载配置文件。发现在web.xml 中配置了对应的struts的核心控制器。并且让struts的核心控制器接管每一个当前工程目录结构下的路径。【如果没有配置,则struts不可以工作。】

 

1、随着请求的到来,【通常都是jsp页面的请求,当然也有来自 action。】tomcat服务器会去对应当前这个 请求是否对应到核心控制器的范围。【显然我们配置过了,会走这个配置器的工作路径】,页面一般会直接响应。【因为本质上struts是对servlet的封装。当然也包括一部分的jsp的封装。使之应用起来更加方便。】1)当请求的路径对应到struts.xml里面对应的package 里面namespace下的 action下的name 这样一个路径的时候,action对应的class的对象将被创建。2)随后执行里面的execute方法。然后返回一个string类型的结果。如果该结果对应到了action里面resultname,那么就会跳转到对应标签体那个里面的路径。如果是一个页面,那么就反馈新的这个页面给客户端。否则的话就继续到新的action里执行对应的方法。

 

 

 

来自老师:

1、当向tomcat发送请求的时候【通常都是jsp】。Tomcat接收到这个请求,并把这个请求给核心控制器

2、核心控制器拿到这个请求路径。通过过滤器,判定一次这个上面是否以.action结尾。如果有就把.action 去掉。

3、核心控制器就用这个掐头去尾的路径到struts.xml里面的action配置中做对应,匹配到之后,创建路径对应的action的对象

4、调用action中的execute()方法

5、调用该方法前,要经过一系列的过滤器,【做很多的通用功能,比如转码,参数拦截,checkbox拦截 等等。】

6、通过方法名进行对应,进入指定的方法,并执行相应的函数。执行这个函数时,当前action里面的各个属性已经根据反射得到了从页面或者 对应action的值。

7、在execute方法中,可以使用封装的model做数据的处理

8、根据处理结果作出相应,这个响应实质上是一个string类型的标识

9、经过拦截器把action中所有的属性,都存储到Request的作用域中

10、把标识给控制器。

11、核心控制器通过这个标识到struts.xml中找到一个 跟action里面resultname对应的结果,并执行这个结果。如果是.jsp就到对应页面,如果action,就到对应的action中继续执行。继续对应,直到反馈一个界面给客户端。

 

李飞和这个描述,差一个 参数拦截器。差一个method的对应

 

定义action的方式:

1、就是一个普通类,必须要有一个String返回值类型的 execute

2、必须实现一个 action的接口。在这个接口中,有五个常量【分别是 successerrornonelogininput】,和一个 execute方法

3、必须集成一个 Actionsupport类。它实现【还是继承?】了actionvalidateI18n 等 一共5个大类。还有一个 序列化,还有一个 忘记了

【方法3最多见,毕竟是继承,方法 提供的全面】

 

在 action中访问 servlet api:也提供了3种方式

1、ActionContext 直接通过该类 进行访问  因为是 map的集合形式,所以应用也不是很多。但是这种封装的确是还不错。

2、Implements ServletRequestAware ServletResponseAware 实现这两个接口进行访问,但是弊端在于这个方法的冗余太大。本身我们这个 action就有对应的 接受信息和反馈,现在又多了这两个,的接口,所以 实现起来很是冗余。不过确实有这样的方法。

3、ServletActionContext,这就体现了这个 ActionSupport 的优势了。这个里面封装了这个ServletActionContext这个对象。

 

如果在action中有多个 方法,可以通过 方法调用配置  利用 属性:method来对应

分别采用符号 ! * {}

一共三种

 

 

你可能感兴趣的:(初识struts2)