struts2笔记[初步修改版]

上传人:平*** 文档编号:12276300 上传时间:2017-10-17 格式:DOC 页数:58 大小:798.42KB
返回 下载 相关 举报
struts2笔记[初步修改版]_第1页
第1页 / 共58页
struts2笔记[初步修改版]_第2页
第2页 / 共58页
struts2笔记[初步修改版]_第3页
第3页 / 共58页
struts2笔记[初步修改版]_第4页
第4页 / 共58页
struts2笔记[初步修改版]_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《struts2笔记[初步修改版]》由会员分享,可在线阅读,更多相关《struts2笔记[初步修改版](58页珍藏版)》请在金锄头文库上搜索。

1、1一、准备工作及实例1.解压 struts-2.1.6-all.zipapps 目录:struts2 自带的例子程序docs 目录:官方文档。lib 目录:存放所有 jar 文件。Src 目录:源文件存放地2.六个基本包struts2-core-2.1.6.jar :开发的核心类库freemarker-2.3.13.jar :struts2 的 UI 标签的模板使用 freemarker 编写commons-logging-1.0.4.jar : 日志包ognl-2.6.11.jar :对象图导航语言,通过它来读写对象属性xwork-2.1.2.jar :xwork 类库,struts2 在其

2、上进行构建commons-fileupload-1.2.1.jar:文件上传组件,2.1.6 版本后必须加入此 jar 包特别需要说明的是目前 strust2 的最新版本是 struts-2.1.6,它作为 2.1X 的正式版。特别要注意导入 commons-fileupload-1.2.1.jar 包,在此 jar 包中包含了 RequestContext 类,如果不导入该 jar 包将会报异常。3.初识 struts2 配置文件(1) web.xml 文件 主要完成对 StrutsPrepareAndExecuteFilter 的配置(在以前的版本中是对 FilterDispatcher

3、配置,新版本同样支持用 FilterDispatcher 配置),它的实质是一个过滤器,它负责初始化整个 Struts 框架并且处理所有的请求。这个过滤器可以包括一些初始化参数,有的参数指定了要加载哪些额外的xml 配置文件,还有的会影响 struts 框架的行为。除了 StrutsPrepareAndExecuteFilter 外,Struts还提供了一个 ActionContexCleanUp 类,它的主要任务是当有其它一些过滤器要访问一个初始化好了的 struts 框架的时候,负责处理一些特殊的清除任务。(2) struts.xml 文件 框架的核心配置文件就是这个默认的 struts.

4、xml 文件,在这个默认的配置文件里面我们可以根据需要再包括其它一些配置文件。在通常的应用开发中,我们可能想为每个不同的模块单独配置一个struts.xml 文件,这样也利于管理和维护。这也是我们要配置的主要文件。(3) struts.properties(参 default.properties) 在 Struts 框架使用了很多属性,我们可以通过改变这些属性来满足我们的需求。要改变这些属性,只需在 struts.properties 文件中指定属性的 key 和 value 即可。属性文件可以放在任何一个包含在classpath 中的路径上,但是通常我们都把它放在/WEB-INF/clas

5、ses 目录下面。我们可以在 struts-default.properties 文件中找到一个属性的列表。(4)struts-default.xml 此文件是 struts2 框架默认加载的配置文件,它定义了 struts2 一些核心 bean 和拦截器,它会自动包含(included)到 struts.xml 文件中(实质是通过),并为我们提供了一些标准的配置。我们可以在 struts2-core.jar 中找到这个文件。(5)其它配置文件velocity.properties,struts-default.vm,struts-plugin.xml4.让 MyEclipse 提示 xml

6、信息当我们在编写 struts.xml 时,发现 eclipse 并不会给出帮助提示,那是因为 MyEclipse 默认并不支持struts2,所以我们需要手工导入 dtd 以支持提示。步骤:windowpreferencesMyEclipseFiles and EditorsXMLxml Catelog然后在右边点 add 添加:location 为 dtd 文件所在的位置(struts-2.0.dtd 文件 struts2-core-2.1.6.jar 中可以得到) ,KeyType 选择 URI,Key 为 struts-2.0.dtd 文件中文档声明的内容(http:/struts.a

7、pache.org/dtds/struts-2.0.dtd) ,在 struts.xml文件中也有此 key 值。5.如何使用 alt+/提示2在 MyEclipse6.5 中,默认的提示为 Ctrl+Space,而它会与我们的输入法切换冲突,使提示失效。找到key,先取消 Content Assist 命令的绑定,再用“alt+/”来绑定。6.实例步骤一,新建 myStruts2项目 ,并导入struts2的六个基本jar包。步骤二,建立LoginAction文件,主要代码如下:package com.asm;import com.opensymphony.xwork2.Action;pub

8、lic class LoginAction implements Action private String username;private String password;.省略get/set 方法public String execute() throws Exception if (username.equals(struts2) return loginSuccess; else return loginFailure;说明:实现了Action接口,主要是为了保证execute的正确定义,其实我们也可以不实现此接口,只要能保证execute方法书写的正确书写(方法名,返回值)。步骤三

9、,在struts.xml文件中注册LoginAction。此配置文件要放在src目录下,实质就是成为classpath环境变量下的文件。主要代码如下:/success.jsp/failure.jsp说明:package 后面会有详细说明。action 元素中的 name 属性值指定了此 action 所指定的请求路径为“login.action”。后面 login.jsp 中的属性值就会参照此 name 属性。步骤四、提供jsp页面login.jsp主要代码:/login.action method=get户名:密码:3failure.jsp主要代码登录失败,错误的用户名:/login.jsp

10、返回说明:使用了标签库,在struts2中使用标签库非常简单,只需要像上面那样导入标签库便可以使用所有的struts2的所有标签success.jsp 主要代码登录成功!步骤五、配置web.xml。完成核心监听器注册。内容如下:struts2org.apache.struts2.dispatcher.FilterDispatcherorg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterstruts2/*说明:注释掉的部分为以前2.1.4版本中用的核心filter类。StrutsPrepareAndExecute

11、Filter类的init方法将会读取类路径下默认的配置文件struts.xml,并以javabean形式存放在内存中,以后struts2对用户的每次请求将使用内存中数据,而不是重读struts.xml文件。步骤六、发布测试。简要分析执行流程:当输入./login.jsp 访问 jsp 页面填写完相关信息并提交给 login.action 时,它会首先被在web.xml 中配置的过滤器监听到,过滤器会去查找 strust.xml 文件,并结合 namespace 查找名为login 的 action,查找到此 action 便交给其处理,LoginAction 内部会执行 execute 方法,

12、并返回结果 result(result 也是参照的 struts.xml 中 action 下的 result 配置) 。 关于表单传参,主要是参照的 action 中的方法名,而非属性名。7.开启 struts2 自带的开发模式常量在以前的开发中,当修改一些配置时总是不能及时地更新到服务器,我们总会重新部署或重启来更新4改变的内容,在 struts2 中可以通过一个常量来达到此目的。即在 struts.xml 中的元素下增加如下内容: 这样配置后,当配置文件修改保存时就会及时更新到服务器中。其它一些常量:注意:在 struts2.1.6 版本中存在一个 bug:即配置了 struts.i18

13、n.encoding 常量也不能解决中文乱码问题,原因是此版本在获取请求参数后才调用了 setCharacterEncoding()方法进行编码设置。解决此 bug 的方法是配置一个 filter,并在 doFilter 方法中增加如下代码:request.setCharacterEncoding(“UTF-8”); 在以后的 2.1.8 版本中解决了此问题及 2.1.6 中存在的其它 bug,建议新项目使用 2.1.8 版本。8.vo 传参模式Copy 上面的 myStruts2 项目,改名为 myStruts2Vo 项目 。作如下修改:在 LoginAction 中有两个字段:userna

14、me,password。把此两个属性重构到 com.asm.vo.User 类中,然后在 LoginAction 中提供 User对象及相应的 get/set 方法。现在需要注意的是在 login.jsp 中会有如下的修改:户名:密码:关键就是改掉 name 属性值。其它基本无变动。 后话:假如此此 User 对象并不能和 Model 层的相应对象完全对应,我们还应借助此 User 对象在 Action 中构建出 Model 层的相应对象,这样,在 exectue方法中便能通过构建的 Model 对象作为参数与 Model 层交互。9.ModerDriven 传参模式Copy上面的myStru

15、ts2Vo项目,改名为 myStruts2Model项目 。重点是修改LoginAction,修改后的主要内容如下:package com.asm;import com.asm.vo.User;import com.opensymphony.xwork2.Action;import com.opensymphony.xwork2.ModelDriven;public class LoginAction implements Action, ModelDriven private User user = new User();public String execute() throws Exce

16、ption if (user.getUsername().equals(struts2) return loginSuccess; else return loginFailure;public User getModel() 5return user;说明:它实现了 ModelDriven 接口,并使用了泛性机制(必须) ,因此要求 jdk1.5 以上。现在需要注意的是在 login.jsp 中 name 属性值为 User 中两个字段,和第一个实例一样。说明:此方式一般不会使用,在此略作了解。10.为什么要使用 struts2 代替 struts1.x(1)struts2 的 execute 方法中的参数不会依赖于 servletAPI,实现了也 servlet 解耦,是一种无侵入式的设计。(2)struts2 提供了拦截器,利用拦截器可以进行 AOP 编程,实现权限拦截等功能。(3)struts2 提供了类型转换器,我们可以很

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号