配置XML提示
Action的配置
package标签配置
package标签是包,他的作用是为了更好的管理Action.
package标签的常用属性
- name:包的名称,在一个Struts2项目中可以随便定义,只要不重名即可
- extends:继承的包,一般继承struts-default
- namespace:名称空间,与action标签中的name属性共同决定了访问路径
- 名称空间的三种不同的写法
- 带名称的名称空间:namespace="/test"
- 根名称空间:namespace="/"
- 默认名称空间:namespace=""
- 名称空间的三种不同的写法
- abstract:声明包是抽象包
Action标签的配置
Action标签将标识符映射到处理程序类。当请求与操作名称匹配时,框架使用映射来确定如何处理请求。
action标签的常用属性
- name:与namespace共同决定浏览器访问路径
- 假如请求http://www.planetstruts.org/struts2-mailreader/Welcome.action将映射到Welcome类去操作
- class:Action类的全路径
- method:用于确定执行Action类中的某个方法,默认执行的是Action类中的execute方法
- converter:Struts2框架中的类型转换
常量配置
Struts常量配置
查看Struts常量
/org/apache/struts2/default.properties
- struts.i18n.encoding=UTF-8:Struts2框架默认编码格式是UTF-8
- struts.action.extension=action:Struts2请求的默认扩展名
修改常量的值的方法
- 在struts.xml中修改常量**(常用方法)**
- 直接修改default.properties
- 通过web.xml修改常量
多个Struts.xml配置文件的配置
当我们有多个包的时候,不能将所有的struts配置都写在一个struts.xml文件中,这样的做法会给我们后期维护带来阻碍.对于大型应用程序,最好使用多个配置文件,以便管理应用程序
可以创建许多配置文件,但需要在struts.xml文件中定义它。struts的include子元素用于定义支持的配置文件。
Action的写法
Action类是一个POJO
维基百科对POJO的描述:
在软件工程中,普通旧Java对象(POJO)是一个普通的Java 对象,不受任何特殊限制的约束,也不需要任何类路径。该术语由Martin Fowler,Rebecca Parsons和Josh MacKenzie于2000年9月创造:[1]
“我们想知道为什么人们如此反对在他们的系统中使用常规物体,并得出结论认为这是因为简单的物体缺乏一个奇特的名字。所以我们给了他们一个,它很好地被捕获了。” [1]
术语“POJO”最初表示Java对象,它不遵循任何主要的Java对象模型,约定或框架; 现在,“POJO”也可以用作“Plain Old JavaScript Object” 的首字母缩写词,在这种情况下,该术语表示类似谱系的JavaScript对象。[2]
术语继续旧的条款对于不使用花哨的新功能,如POTS(技术型普通老式电话服务的)电话波德(普通旧文档中)的Perl。与.NET框架上的POJO相当的是Plain Old CLR Object(POCO)。[3]对于PHP,它是Plain Old PHP Object(POPO)。[4] [5]
POJO现象最有可能获得广泛接受,因为需要一个与复杂对象框架形成对比的通用且易于理解的术语
Action类实现Action接口
访问Action的不同方式
通过action标签的method属性访问
Action类中有四个不同的方法,当我们访问某个方法的时候执行某个action
在struts.xml中的使用action标签的method属性访问action
通过通配符的方式进行action的访问
动态访问
通过使用struts.xml的方法修改Struts配置开启动态方法访问
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
书写action标签
<action name="customer" class="test.demo3.CustomerAction"></action>
然后再JSP页面配置访问路径
<!--前面写上Actionname的名称中间写个!,后面是方法的名称 -->
<a href="${ pageContext.request.contextPath }/customer!find.action">查询客户</a>
<br />
<a href="${ pageContext.request.contextPath }/customer!update.action">修改客户</a>
<br />
<a href="${ pageContext.request.contextPath }/customer!delete.action">删除客户</a>
<br />
<a href="${ pageContext.request.contextPath }/customer!save.action">保存客户</a>
JSP页面书写方法:前面写上Actionname的名称中间写个!,后面是方法的名称