Struts2:核心配置文件
package标签
- 1: 类似于代码包,区别不同的
action
,要配置action
,必须首先写package
标签,在package
里面才能配置action
。
- 2:
package
标签属性。
- (1)
name
属性:
name
属性值跟功能本身没有关系的,
- 在一个配置文件中可以写多个
package
标签,name
属性值不能相同的。
- (2)
extends
属性:
- 属性值是固定的
extends="struts-default"
。
- 写了这个属性,在
package
里面的类具有action
功能。
- (3)
namespace
属性:
namespace
属性值和action
标签里面的name
属性值构成访间路径。
action标签。
- 1:
action
标签配置action
访间路径
- 2:
action
标签属性
- (1)
name
属性:
namespace
属性值和action
标签里面的name
属性值构成访间路径。
- 在
package
标签里面写多个action
标签,但是action
的name
属性值不能相同的
- (2)
class
属性:
- (3)
method
属性:
- 比如在
action
里面默认执行的方法execute
方法,但是在action
里面写其他的方法。
- 让
action
里面多个方法执行,使用method
进行配置。
result标签。
- 1: 根据
action
的方法返回值,配置到不同的路径里面。
- 2:
result
标签属性。
- (1)
name
属性:
- (2) type属性:
- 配置如何到路径里(转发或者重定向)。
type
属性默认值做转发操作。
源码:
- src:
struts.xml
<package name="hellodemo" extends="struts-default" namespace="/">
<action name="hello" class="com.yap.action.HelloAction">
<result name="ok">/hello.jsp</result>
</action>
</package>
修改Struts2默认常量值
- 1: 常用方式
- 在
struts.xml
中进行配置。
<constant name="struts.i18n.encoding" value="UTF-8"/>
- 2: 还有两种方式(了解)。
- 在
src
下面创建struts.properties
进行修改
- 在
web.xml
进行配置。
介绍最常用常量
- struts.i18n.encoding = UTF-8
- 1: 表单提交数据到
action
里面,在action
可以获取表单提交数据,
- 2: 表单提交数据有中文,有乱码间题,解决:
- 3: 如果在
action
获取表单通过post
方式提交中文,中文乱码间题帮解决了,不需要自己处理问题。
分模块开发
- 1: 单独写配置文件,把配置文件引入到核心配置文件中
<include file="路径"/>
:引入xml路径。
Action的编写方式
- 1:
action
编写有三种方式
- 创建普通类,这个不继承任何类,不实现任何接口
- 创建类,实现接口
Action
- 创建类,继承类
ActionSupporte
访问action的方法(重点)
- 1: 有三种方式实现
- (1) 使用action标签的method属性,在这个属性里面写执行的action的方法。
- (2) 使用通配符方式实现。
- (3) 动态访间实现(不用)。
- 2: 演示错误
- (1) 如果action方法有返回值,但配置文件没配置会出现这种错误。
No result defined for action cn.itcast.action.HelloAction and result ok
- (2) 在action里面的方法有返回值,如果有返回值时候类型必须是String
- (3) action里面的方法可以没有返回值,没有返回值时候,在result标签不需要配置
- 把方法返回值写出void。
- 让返回值,返回NONE。
<!-- 使用action标签method属性 -->
<!-- 创建action,创建多个方法,缺陷是每个action方法都需要创建。 -->
public class BookAction extends ActionSupport {
public String add() {
System.out.println("add...........");
return NONE;
}
public String update() {
System.out.println("update.........");
return NONE;
}
}
<package name="methoddemo" extends="struts-default" namespace="/">
<action name="addAction" class="com.yap.method.BookAction" method="add"></action>
<action name="updateAction" class="com.yap.method.BookAction" method="update"></action>
</package>
- psm:
http://localhost/Struts2_demo/updateAction.action
- psm:
http://localhost/Struts2_demo/addAction.action
使用通配符实现
- 1: 在
action
标签里面name
属性,name
属性值里面写符号*
星号
- xml:
struts.xml
<package name="methoddemo" extends="struts-default" namespace="/">
<action name="book_*" class="com.yap.method.BookAction" method="{1}"></action>
</package>
- psm:
http://localhost/Struts2_demo/book_update.action
- psm:
http://localhost/Struts2_demo/book_add.action