struts2的简单介绍以及运用


1 struts2是应用在javaee三层中web层的轻量级框架

2 struts2框架在struts1webwork基础之上发展全新框架

3 struts2框架是开源框架

4 struts2框架版本

2struts2.3.24

 常见web层框架

1 struts1

2 webwork

3 springMVC(常用)

web层框架特

1 只要框架应用在web层,这类框架有共同的特点,有前端控制器(过滤器)

 

2 画图分析struts2解决问题:

1BaseServlet:如果没有BaseServlet,缺陷是每个功能都需要创建servlet实现

Struts2框架入门案例


1)在web.xml中进行 过滤器配置

  <!-- 过滤器配置 -->

  <filter>

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

  <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开发流程分析

struts2执行过程

 


1)有加载顺序

Struts2自带配置文件

* default.properties : 常量配置

* struts-default.xml : 拦截器

* struts-plugin.xml : 插件

* struts.xml : 配置action,常量配置

* struts.properties: 常量配置

* web.xml :常量配置

Struts2的核心配置文件

1 struts2核心配置文件名称和位置固定的

1)位置src下面

2)名称 struts.xml

 

2 有三个标签

1package标签

2action标签

3result标签

 标签package

1 struts.xml配置action时候,必须首先package标签

 

2 package里面有属性name属性

1)在struts.xml文件中写多个package标签,但是name属性值不能相同的

 

3 package里面有extends属性

1)值固定的值 struts-default,表示拦截器部分

 

4 package里面有namespace属性

1namespace属性值和action标签name属性值构成访问路径

 

/user.action

标签action

1 action标签写在package标签里面

 

2 在一个package标签里面写多个action标签,但是name属性值不能相同

 

3 action标签name属性

1namespace属性值和action标签name属性值构成访问路径

2name属性值里面不能添加特殊符号

 

4 action标签class属性

1action类全路径

 

5 action标签method属性

1action默认执行名称是execute的方法,在action可能有其他名称的方法,让其他名称的方法执行,使用method属性实现

 标签result

1 根据action里面的方法返回值,配置到不同的路径里面

 

2 result标签里面name属性

1name属性值和action方法返回值对应上

 

3 result标签里面type属性

1)表示如何到路径中(转发或者重定向)

2type属性默认值做转发操作 dispatcher

 

 Struts2常量配置

1 struts2是框架,框架特点帮封装很多功能,struts2常量封装了框架中一部分功能

 

2 因为默认常量是源代码文件,不能直接修改,使用配置方式修改常量值

1)在struts2里面常量修改有三种方式

第一种(常用):在struts.xml进行配置

第二种:在src下面创建名称struts.properties文件,进行配置

第三种:在web.xml中进行配置



struts2里面这个常量封装这个功能:

提交表单之后到action里面,在action获取post提交中文数据,乱码不需要自己解决

 

配置通过浏览器输入扩展名称

 

* 建议添加.action

 

1)如果设置值true之后,修改struts.xml配置文件不需要重启动服务器

 

Action编写三种方式

第一种方式:创建类,不继承任何类,不实现任何接口  (pojo类)

 

第二种方式:创建类,实现接口 Action

 

* 如果action方法是String返回类型,不想要在action标签里面配置result标签,需要让方法方法值 NONE(不跳转)

 

第三种方式(常用):创建类,继承 ActionSupport

1ActionSupport类是Action接口实现类

 

 

 访问action的三种方法

在一个action里面,默认执行方法是名称是execute方法,但是action可以写其他名称的方法,执行不是execute方法配置


1 有三种方式实现

第一种 在action标签里面使用method属性实现

第二种 使用通配符方式实现(重点)

第三种 动态访问实现(不用)

 1 使用method属性

1 配置实现

<!-- 使用method属性让action里面的方法执行 -->

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

<!-- 1 action里面的add方法执行

method: 执行的方法名称

-->

<action name="bookadd" class="cn.itcast.action.BookAction" method="add"></action>

<!-- action里面的update方法执行 -->

<action name="bookupdate" class="cn.itcast.action.BookAction" method="update"></action>

</package> 

 

缺陷:action中的每个方法都需要配置action,如果action里面有很多的方法,配置很多action实现功能

2 使用通配符实现(重点)

1 使用通配符方式配置action里面的方法

<!-- 使用通配符让action里面的方法执行 -->

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

<!--

1)在action标签里面使用符号 * 星号,理解为匹配任意内容

2)把action标签name属性值写实际意义,book_*

(3book_addbook_update,使用book_*都可以匹配到

** 两个路径里面 addupdate方法名称

  ** book_add,使用book_*可以匹配到,*相当于变成 add

  ** book_update,使用book_*可以匹配到,*相当于变成 update

4method里面写*

*_* :获取第一个*值 表达式  {1},第二个* {2}

 -->

<action name="book_*" class="cn.itcast.action.BookAction" method="{1}"></action>

</package>

 

2 访问action的方法还有一种方式是:

动态访问,实际开发一般不用,作为了解

 

1)开启常量

 

2)配置action,不需要method属性

 

3)访问时候,写actionname属性值后面添加感叹号 ! ,后面添加执行方法名称

 

猜你喜欢

转载自blog.csdn.net/qq_29495223/article/details/79558587