Struts基础开发.ppt

上传人:小飞机 文档编号:6521459 上传时间:2023-11-08 格式:PPT 页数:30 大小:505KB
返回 下载 相关 举报
Struts基础开发.ppt_第1页
第1页 / 共30页
Struts基础开发.ppt_第2页
第2页 / 共30页
Struts基础开发.ppt_第3页
第3页 / 共30页
Struts基础开发.ppt_第4页
第4页 / 共30页
Struts基础开发.ppt_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《Struts基础开发.ppt》由会员分享,可在线阅读,更多相关《Struts基础开发.ppt(30页珍藏版)》请在三一办公上搜索。

1、第12章,Struts2 基础开发,本课教学内容,Struts2简介Struts2的基本原理Struts2的基本使用方法其他问题,Struts2 简介,大多数框架的版本改进,一般是在原有的基础上增加功能或者进行优化,但是,Struts2和 Struts1 相比,不简单是这样,无论从流程还是结构上,都有很多革命性的改进,Struts2 简介,Struts2 并不是新发布的新框架,而是在另一个非常流行的框架:WebWork 基础上发展起来的。因此,可以说,Struts2 并没有继承 Struts1 的特点,反而和 WebWork 非常类似;换句话说,Struts2 是衍生自 WebWork,而不是

2、 Struts1。正是由于这个原因,Struts2 吸引了众多的 WebWork 开发人员来进行使用。并且由于 Struts2 是 WebWork 的升级,在各种 功能和性能方面都有很好的保证,吸收了 Struts1 和 WebWork 两者的优势,因此也是一个非常优秀的框架,Struts2 简介,Struts2 和 Struts1 具有一些不同点,主要集中在以下方面:Action 类的编写:在 Struts1 中,Action 类一般继承基类 org.apache.struts.action.Action。而在 Struts2 中,Action 类可以实现一个 Action 接口,也可实现其

3、他接口,也可以继承 ActionSupport 基类,甚至不需要实现任何接口,只编写 execute 函数即可,Struts2 简介,Action 的运行模式:Struts1 中,Action 是单态的,系统实例化一个对象来处理多个请求,为每个请求分配一 个线程,在该线程中运行 execute 函数。因此,在开发时需要特别小心,Action 资源必须是线程安全的或同步的。但是,Struts2 中,Action 为每一个请求产生一个实例,不会产生线程安全问题。但是,系统又能够及时回收垃圾资源,不会有废弃空间的问题,Struts2 简介,对 Web 容器的依赖:Struts1 中,Action 的

4、 execute 函数内,传入了 Servlet API:HttpServletRequest 和HttpServletResponse,使得测试必须依赖于 Web 容器。但是,在 Struts2 中,可以不传入 HttpServletRequest 和 HttpServletResponse,但是也可以访问它们,因此,Action 不依赖于容器,允许 Action 脱离容器单独被测试,Struts2 简介,对表单数据的封装:Struts1 中,使 用 ActionForm 来 封 装 表 单 数 据,所 有 的 ActionForm 必 须 继 承 org.apache.strtus.act

5、ion.ActionForm,有可能造成 ActionForm 类和 VO 类重复编码。但是,Struts2中,直接在 Action 中编写表单数据相对应的属性,可以不用编写 ActionForm,而这些属 性又可以通过 Web 页面上的标签访问,Struts2 的基本原理,环境配置 要编写基于Struts2 的应用,需要导入一些支持的包,也就是Struts2 开发包。这些开发包可以到网上去下载。下载地址为:,Struts2 的基本原理,在 Struts2 中,常用的的组件有:FilterDispatcher 过滤器、JSP、Action、JavaBean、配置文件等。对于一个动作,其执行步骤

6、为:用户输入,JSP 表单的请求被 FilterDispatcher 截获,Struts2 的基本原理,FilterDispatcher 将表单信息转交给 Action,并封装在 Action 内Action 来调用 JavaBean(DAO)Action 返回要跳转到的 JSP 页面逻辑名称给框架框架根据逻辑名称找到相应的网页地址,进行跳转,结果在 JSP 上显示,Struts2 的基本使用方法,导入 Struts2 将如下的几个包拷贝到项目中 WEB-INF 中的 lib 目录下:,编写 JSP,*具体代码示例详见课本,编写并配置 ActionForm,在 Struts1.x 中,必须要单

7、独建立一个 ActionForm 类,而在 Struts2 中 ActionForm和 Action 已经合二为一了。因此,只需要将和表单元素同名的属性编写到 Action 内。Action只是一个普通的类。在包 prj12 内新建一个类:LoginAction.java,编写并配置 ActionForm,LoginAction 没有继承任何类,它有属性 account 和 password,与login.jsp 中的表单元素 account 与 password 必须同名,编写并配置 Action,Struts2 中,既然 Action 和 ActionForm 合二为一,Action 是负

8、责业务逻辑的,所以必须 编写业务逻辑代码。下面来加强 Action 的功能。要能够处理业务逻辑,必须要满足一个规范,那就是:编写 execute 方法来处理业务逻辑。注意,不是重写,是编写。并且该方法不需要有任何的参数,编写并配置 Action,编写 execute 方法,是因为 Action 接收数据后,由框架自动调用它的 execute 方法,该方法的运行,在底层通过反射机制进行。execute 的格式为:public String execute()该函数返回一个字符串,表示的是目标页面的虚拟名称,编写并配置 Action,配置文件/loginSuccess.jsp/loginFail.

9、jsp,编写并配置 Action,从以上配置可以看出,在标签中可以有多个,名称任意,但不要重名;extends 属性表示继承一个默认的配置文件struts-default,一般都继承于它,可以不用修改。标签中的 name 属性表示 Action 被提交时的路径,class 指定动作类路径,测试,*具体代码测试效果图见课本,其他问题,程序运行流程 login.jsp 中 的 表 单 提 交 到 的 地 址 为/Prj12/login.action,被 org.apache.struts2.dispatcher.FilterDispatcher 截获,框架把提交的地址的项目名称和扩展名.actio

10、n去掉,变为/login,读取配置文件,其他问题,在配置文件中,根据/login,找到配置文件中的 action 对应的类,从而得到要提交到的类 LoginAction;在 LoginAction 中,实例化对象,将 account 和 password 封装进去,其他问题,框架调用 LoginAction 的 execute 方法,处理后返回一个字符串框架根据字符串内容,在配置文件中找到相应的页面,并跳转,其他问题,Action 生命周期框架先实例化 LoginAction 对象,然后调用 LoginAction 的 setAccount 函数,封装表单数据,然后调用 execute 函数,

11、进行处理在第二次提交时,LoginAction 会重新实例化,说明每一个 LoginAction 对象都服务一个请求,这和 Servlet 的原理是不一样的,其他问题,在 Action 中访问 Web 对象 获得 request 对象的方法是:import org.apache.struts2.ServletActionContext;public String execute()throws Exception HttpServletRequest request=ServletActionContext.getRequest();/使用 request,其他问题,在 Action 中访问

12、Web 对象 获得 response 对象的方法是:import org.apache.struts2.ServletActionContext;public String execute()throws Exception HttpServletResponse response=ServletActionContext.getResponse();/使用 response,其他问题,在 Action 中访问 Web 对象 获得 application 对象的方法是:import org.apache.struts2.ServletActionContext;public String ex

13、ecute()throws Exception ServletContext application=ServletActionContext.getServletContext();/使用 application,其他问题,在 Action 中访问 Web 对象 获得 session 对象的方法是:import com.opensymphony.xwork2.ActionContext;public String execute()throws Exception Map session=ActionContext.getContext().getSession();/使用 session,其他问题,可以发现这里的 session 是个 Map 对象。在 Struts2 中,底层的 session 被封装成了 Map类型,我们可以直接操作这个 map 进行对 session 的写入和读取操作,而不用去直接操作HttpSession 对象,本章结束,本章总结 Struts2 的基本思想 Struts2 的结构和基本使用 Struts2 下用例的开发方法上机习题,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号