一、结果页面配置
1.局部结果页面配置
<!-- 局部结果页面配置--> <package name = "demo" extends = "struts-default" namespace = "/"> <action name = "action1" class = "xxx.xxx.AAction"> <result name = "ok" >/hello.jsp</result> </action> <action name = "action2" class = "xxx.xxx.BAction"> <result name = "ok">/hello.jsp</result> </action> <package>
2.全局结果页面
当多个action中的方法返回值相同,并且所到的页面也是一样的,这个时候可以进行全局结果页面配置
<!--全局结果页面配置--> <package name = "demo2" extends = "struts-default" namespace = "/"> <global-results> <result name = "ok">/hello.jsp</result> </global-results> <action name = "action1" class= "xxx.xxx.AAction"></action> <action name = "action2" class = "xxx.xxx.BAction></action> </package>
3.当全局和局部都配置了时访问局部结果页面!
二、result标签中的type属性
该属性是用来配置到路径中的方式(转发or重定向)
1.dispatcher 默认值 转发
2.redirect 重定向(此时配置路径时跟转发一样 无需加上项目名)
3.chain:转发到action,但是一般不用,因为会有缓存问题
4.redirectAction 重定向到acion(路径直接配置action的访问名即可)
三、Action获取表单数据
Action中没有request不能直接使用request来获取表单数据,我们可以有三种方式来获取
1.使用ActionContext类
使用该类创建对象,然后通过一系列方法来进行操作如下图:
2.使用ServletActionContext类
该类都是静态方法 获取request对象后就可以获取表单数据了 具体操作和servelet中一样
3.通过特定接口访问
四、封装表单数据
1.原始方法封装:先获去request对象 然后逐个获取表单数据进行封装。
2.属性封装:在action成员变量为位置定义变量,变量名称要和表单输入项的name属性值相同然后生成他们的set方法后执行,这些属性就会被赋值,而后就可以封装了。
3.模型驱动封装:要求action类中创建实体类对象实现ModelDriven借口 和接口中的getModel方法返回创建的对象。
4.表达式封装:在在action中声明实体类然后生成set,get方法,然后在表单属项的name属性中写表达式
5.封装到集合中
1.封装到list集合中:在action中声明list集合,然后生成(get可以不用),set方法,最后再在表单输入项中写表达式。
2.封装到map集合:在action中声明map集合 并生成set,get方法,最后再在表单输入项中写表达式
注:模型驱动封装和表达式的封装主要在于模型驱动封装一次只能封装一种实体类对象而表达式封装可以封装多个。
当模型驱动封装和属性封装同时使用时,只执行模型驱动封装。