1.1Struts2的Servlet的API的访问
在使用Struts2的框架的过程中,发现struts2和servlet的API是解耦的。在实际开发中,经常使用到Servlet的API,比如进行登陆。将用户信息保存大盘session中,有的时候需要向页面输出一些内容,用到response对象。涉及到servlet的API的访问。
1.1.1Struts2的Servlet的API的访问。
1.1.1.1完全解耦合的方式。
• 编写jsp
• 编写Action
注意:这种方式只能获得代表request,session,application的数据的Map集合,不能操作这些对象的本身的方法
1.1.1.2调用原生servlet的方式。
• 编写jsp
• 编写Action
注意:这种方式可以操作域对象的数据,同时也可以获得对象的方法
1.1.1.3接口注入的方式。
• 编写jsp
• 编写action
• 这里需要知道的是前面servlet是单列的,多个程序访问同一个servlet只会创建一个实例。Action是多列的,一次请求,创建一个Action实例(不会出现线程安全)
1.2Struts2的结果页面配置
1.1.1.1全局结果页面配置
• 全局结果页面:全局结果页面指的是,在包中配置一次,其他的在这个包中的所有action只返回了这个值,都可以跳转到这个界面。
• 针对这个包下的所有的action的配置都有效
1.1.1.2局部结果页面配置
• 局部结果页面:局部结果页面指的是,只能在当前的action中的配置有效。
• 针对当前的action有效
1.2.1.1result标签的配置
1.2.1.2result标签配置
• result标签用于配置页面的跳转。在result标签上有两个属性:
• name属性: 逻辑视图的名称。默认值:success
• type属性: 页面跳转的类型
• dispatcher: 默认值,请求转发。(Action转发JSP)
• redirect: 重定向。(Action重定向JSP)
• chain: 转发。(Action转发Action)
• redirectAction: 重定向(Action重定向Action)
• stream: Struts2中提供文件下载的功能。。
1.3Struts2的数据的封装
1.3.1Struts2的复杂类型的数据封装提供属性set方法的方式(不常用)
• 编写页面
• 提供测试类
• 编写Action
注意:这种方式一般不常用。
1.3.2属性驱动:在页面中提供表达式方式
• 编写jsp页面
• 编写Action页面
1.3.3模型驱动:采用模型驱动的方式
编写jsp页面
编写Action
模型方式的优缺点以及常用的方式:
缺点:只能同时向一个对象中封装数据。
使用第二种可以向多个对象中同时封装数据
开发中常用第三种也就是 模型驱动方式,但是特殊情况下比如会提交到多个表的情况会使用属性驱动。
1.3关于INPUT逻辑视图
Action接口提供了五个逻辑视图的名称:
SUCCESS
ERROR
LOGIN
INPUT :input在某些拦截器中会使用。
NONE
INPUT逻辑视图的配置:
这样就会回显某个字段的错误。
1.4Struts2的复杂类型的数据封装
在实际开发中,有可能遇到批量向数据库中插入记录,需要在页面中将数据封装到集合中。
1.4.1Struts2d的复杂类型的数据封装
1.4.1.1封装数据到List集合中
编写JSP
编写Action
1.4.1.2封装数据到Map集合中
编写jsp
编写Action